【问题标题】:Adding build tools to a Kaniko image for Gitlab-CI将构建工具添加到 Gitlab-CI 的 Kaniko 映像
【发布时间】:2022-11-13 16:55:32
【问题描述】:

使用带有 k8s runners 的 Gitlab-CI 给定一个包含约 35 个服务的单一存储库。 这些图像是使用 Kaniko 构建的,利用原型模板的 extends,生活很美好。

然而,最近,我们想在 consul 上保存一个密钥,并在成功构建后更改一个 gitlab-ci 环境变量——这需要 curl,最好是 jq

我一直在尝试创建以下图像作为图像构建工作的图像:

FROM gcr.io/kaniko-project/executor:debug

RUN mkdir -p /workspace \
  && wget -qO /workspace/curl https://github.com/moparisthebest/static-curl/releases/download/v7.86.0/curl-amd64 \
  && chmod +x /workspace/curl \
  && wget -qO /workspace/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 \
  && chmod +x /workspace/jq

ENV PATH "$PATH:/workspace"

其中的构建似乎成功了。

然而 - 事实上,当在构建中使用时,给出以下脚本:

.build-with-kaniko:
  script:
    - mkdir -p /kaniko/.docker;
      echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":..... > /kaniko/.docker/config.json
    - which jq || log no jq;
      which curl || log no curl;
    - >- 
      /kaniko/executor
      --context $PROJECT_PATH
      --dockerfile $DOCKERFILE
      --destination ${CI_REGISTRY}/${DOCKER_REPO}:${TAG}
    - which jq || log no jq;
      which curl || log no curl;

在运行 executor 之前 - 找到了 curljq

但是在运行executor 之后 - 他们走了!! <tam-tam-taaaaaaAAAMM!!!> :o

我尝试将它们放在几个不同的文件夹中:/busibox/kaniko/workspace 甚至是自定义目录/misc- 并且无法让它工作......

我想也许它将它们打包到目标图像中——但不,它们不在那里。

我还注意到在使用 --no-push 构建之后它们仍然存在 (但后来我没有在注册表中获取我的图像......)。

到底是怎么回事?是否有我应该指示保留这两个文件的推送后清理机制?

帮助? 我必须做些什么来帮助 kaniko 了解我需要这两个实用程序?

【问题讨论】:

    标签: docker gitlab-ci kaniko


    【解决方案1】:

    我的天啊。 :facepalm:

    我知道只有在我发布问题后才能找到答案......:耸耸肩:

    这是有效的:

    将其声明为新卷:

    FROM gcr.io/kaniko-project/executor:debug
    
    RUN mkdir -p /misc 
      && wget -qO /misc/curl https://github.com/moparisthebest/static-curl/releases/download/v7.86.0/curl-amd64 
      && chmod +x /misc/curl 
      && wget -qO /misc/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 
      && chmod +x /misc/jq
    
    VOLUME /misc
    
    ENV PATH "$PATH:/misc"
    

    我从 kaniko:debug image 本身的当前 Dockerfile 中得到了线索(在撰写本文时)。

    建议将该图像用作使用 kaniko 的 gitlab-ci 作业的基础图像 - 它包括busybox。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-05
      • 2017-08-13
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多