在GitLab Kubernetes Runner中编译Docker容器镜像
最为安全、稳妥的方案。
GitLab CI/CD 编译镜像是很常见的操作。不过,如果你使用GitLab Kubernetes Runner的话,问题变得略微复杂。
目前看来,最为稳妥的方案是使用 kaniko 这个方案。这样仅更改 CI/CD 配置文件即可,不需要对集群做危险的改造操作。
以下是一份我验证过的示例文件。这份文件同时支持镜像仓库采用了私有签名的https协议。
stages:
- package
img:
stage: package
image:
name: yinguobing/kaniko-project-executor:v1.9.2-debug
entrypoint: [""]
tags:
- default
before_script:
- 'echo "Hello, $CI_REGISTRY_USER"'
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
- cat 你的证书.crt >> /kaniko/ssl/certs/ca-certificates.crt
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/Dockerfile"
--destination "${CI_REGISTRY_IMAGE}":"${CI_COMMIT_SHORT_SHA}"
after_script:
- echo "$CI_REGISTRY_IMAGE":"$CI_COMMIT_SHORT_SHA"
Comments ()