我已经使用公共GitHub repo作为构建上下文测试了Kaniko。我可以给予Kaniko我想要使用的git repo,以在Dockerfile构建文件中给出的基础镜像之上构建我的snapsoht Docker镜像。就像在这个“kaniko-restapi.yaml”中:
apiVersion: v1
kind: Pod
metadata:
name: kaniko
spec:
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:latest
args: [ "--context=git://github.com/gituserxyz/kaniko-test",
"--context-sub-path=kaniko-setup/restapi/docker/",
"--dockerfile=Dockerfile",
"--destination=dockeruserxyz/restapi-restassured:1" ]
volumeMounts:
- name: kaniko-secret
mountPath: "/kaniko/.docker"
restartPolicy: Never
volumes:
- name: kaniko-secret
secret:
secretName: dockercred
items:
- key: .dockerconfigjson
path: config.json
字符串
有了这个Kaniko Docker镜像(pod)定义,我的Dockerfile可以和Kaniko一起使用,就像我可以和Docker或docker-compose一起使用一样。
位于我的maven项目中的Dockerfile,在这个阶段被推送到git repo可能看起来像这样:
FROM openjdk:11
COPY ./config/my-config.properies /my-config.properties
COPY ./config/my-config-2.properies /my-config-2.properties
RUN curl -o restassured.451.jar https://mvnrepository.com/artifact/io.rest-assured/rest-assured/4.5.1
ENTRYPOINT ["java","-jar","/app.jar"]
型
(Just为了说明……)
这些属性(配置)文件是Kaniko从我的项目的git repo中获取的。
- 问题 *:我可以在Kubernetes上使用Kaniko的私有git存储库吗?应该如何定义凭证和/或访问令牌,并通过私有存储库给出。
我试图找到一个Kaniko使用场景的例子,到目前为止,在我看来,使用Kaniko和私有git repo作为构建上下文,这种使用Kaniko的方式可能根本不可能。对我来说,这似乎是非常基本的需求和用例。
- 编辑:*
x1c 0d1x的数据
好的。我知道Kaniko最初是Google的一个项目。但我也知道Kaniko目前是一个开源项目??
2条答案
按热度按时间nhaq1z211#
它更像是基本的git用法:git://email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)/user/repo/etc/repo. git
这里也提到了:https://github.com/GoogleContainerTools/kaniko/blob/main/README.md#using-private-git-repository
并不是每个git repo都能用。现在我只是把所有的东西打包在一个tarball里,然后附加到pv里。
exdqitrt2#
在某些情况下,传递git://email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)/user/repo/etc/repo. git可能不起作用。另一种方法是创建一个K8S pod,其中包含Kaniko容器和一个initContainer,后者将代码拉入两个容器共享的文件夹中(想想“emptyDir:{}”)。然后,用于该容器的启动脚本可以使用任何工具来提取代码(git,wget,curl,scp,ftp,nfs等)到共享文件夹(例如,“/workspace”)。只要拉取的代码中有Dockerfile,您只需将上下文设置为“dir:/workspace”并将目的地设置为发送图像的位置。当然,没有完美的解决方案。一旦Kaniko完成任务,就由您来删除pod(我正在添加此功能)。