kubernetes Kaniko与私有git仓库上下文

avkwfej4  于 9个月前  发布在  Kubernetes
关注(0)|答案(2)|浏览(163)

我已经使用公共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目前是一个开源项目??

nhaq1z21

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里。

exdqitrt

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(我正在添加此功能)。

相关问题