构建CI / CD管道可以使用具有一定项目结构的多个GitLab存储库。为此,将构建具有Python代码的Docker容器,然后将其安全地推送到Google Cloud的Container Registry。
runners.image
中的values.yaml
)是自定义映像,因为这有助于自动容器化提供的存储库。 值得一提的原因是,这是与相同专用存储库中的映像应推送到的位置。 如何将图像推送到容器注册表而无需将服务帐户密钥添加到Docker图像(否则,请说服我这不是一个坏习惯) ?
services:
- docker:19.03.1-dind
stages:
- build
build:
stage: build
script:
- docker build -t ${CONTAINER_REGISTRY}/pyton-container-test:latest .
# This line is where I'd need to use `docker login`, I guess.
- docker push ${CONTAINER_REGISTRY}/python-container-test:latest
值得一提的是,GitLab Runner设置了以下环境变量:
runners:
env:
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://localhost:2375
DOCKER_TLS_CERTDIR: ""
CONTAINER_REGISTRY: eu.gcr.io/<project_id>
我认为我应该能够将Kubernetes集群中的秘密安装到GitLab Runner构建吊舱中,但是我似乎找不到解决方法。然后,我应该能够将以下行添加到.gitlab-ci.yml
中:
cat mounted_secret.json | docker login -u _json_key --password-stdin https://eu.gcr.io
设置config.toml
以使用secret volume应该可以。但是,对于Helm图表,这似乎还不可能。
答案 0 :(得分:1)
GitLab提供的default Helm chart是不可能的。但是,自定义它们时有解决方法。
在templates/configmap.yaml
中,可以编辑entrypoint
。最后,跑步者如下启动:
# Start the runner
exec /entrypoint run --user=gitlab-runner \
--working-directory=/home/gitlab-runner
要执行此操作,将根据提供的config.toml
(带有正确的Runner令牌)生成一个values.yaml
。这意味着在此步骤之前,我们可以根据需要编辑config.toml
。就我而言,我只是添加了:
echo " [[runners.kubernetes.volumes.secret]]" >> ${CONFIG_FILE}
echo " name = \"{{ .Values.secretName }}\"" >> ${CONFIG_FILE}
echo " mount_path = \"/keys\"" >> ${CONFIG_FILE}
echo " read_only = true" >> ${CONFIG_FILE}
${CONFIG_FILE}
是/home/gitlab-runner/.gitlab-runner/config.toml
的地方。
最后,您可以使用以下方法部署GitLab Runner:
$ helm install project_name -f values.yaml <path to chart>