【发布时间】: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 之前 - 找到了 curl 和 jq。
但是在运行executor 之后 - 他们走了!! <tam-tam-taaaaaaAAAMM!!!> :o
我尝试将它们放在几个不同的文件夹中:/busibox、/kaniko、/workspace 甚至是自定义目录/misc- 并且无法让它工作......
我想也许它将它们打包到目标图像中——但不,它们不在那里。
我还注意到在使用 --no-push 构建之后它们仍然存在
(但后来我没有在注册表中获取我的图像......)。
到底是怎么回事?是否有我应该指示保留这两个文件的推送后清理机制?
帮助? 我必须做些什么来帮助 kaniko 了解我需要这两个实用程序?
【问题讨论】: