gpt4 book ai didi

azure - 如何在Gitlab CI CD中使用Kaniko?

转载 作者:行者123 更新时间:2023-12-02 23:00:44 26 4
gpt4 key购买 nike

我正在尝试将 Kaniko 与 Gitlab 结合使用,以摆脱 DinD 流程。

所以,我的 .gitlab-ci.yaml 中有这个

kaniko:
stage: tagging

variables:
CI_REGISTRY: ${AZURE_REGISTRY_USERNAME_DEV}.azurecr.io
CI_REGISTRY_USER: ${AZURE_REGISTRY_USERNAME_DEV}
CI_REGISTRY_PASSWORD: ${AZURE_REGISTRY_PASS_DEV}

image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]

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
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/devops/Dockerfile"
--destination "${CI_REGISTRY}/kanikotest:bla"
--verbosity debug

tags: # select gitlab-runner based on this tag(s)
- docker
only:
refs:
- /^feat.*$/

但我不断在日志中收到此错误

error checking push permissions -- make sure you entered the correct tag name, and that you are authenticated correctly, and try again: checking push permission for "mysuperregistry.azurecr.io/kanikotest:bla": creating push check transport for mysuperregistry.azurecr.io failed: GET https://mysuperregistry.azurecr.io/oauth2/token?scope=repository%3Akanikotest%3Apush%2Cpull&service=mysuperregistry.azurecr.io: UNAUTHORIZED: authentication required, visit https://aka.ms/acr/authorization for more information.

我正在关注this guide .

有趣的事实...我已经通过使用相同的信用创建一个 secret ,成功地将 Kaniko 部署在 Minikube 内,并且我成功地推送到了相同的注册表。

最佳答案

身份验证文件的语法似乎不错(我假设信用是正确的),因此如果您只需按如下方式设置 DOCKER_CONFIG 环境变量,您的代码应该可以工作:

kaniko:
stage: tagging

variables:
CI_REGISTRY: ${AZURE_REGISTRY_USERNAME_DEV}.azurecr.io
CI_REGISTRY_USER: ${AZURE_REGISTRY_USERNAME_DEV}
CI_REGISTRY_PASSWORD: ${AZURE_REGISTRY_PASS_DEV}
DOCKER_CONFIG: "$CI_PROJECT_DIR/kanikotest/.docker"

image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]

script:
- mkdir -p $DOCKER_CONFIG
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > $DOCKER_CONFIG/config.json
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${CI_PROJECT_DIR}/devops/Dockerfile"
--destination "${CI_REGISTRY}/kanikotest:bla"
--digest-file "$CI_PROJECT_DIR/docker-content-digest-kanikotest"
--verbosity info

artifacts:
paths:
- docker-content-digest-kanikotest

DOCKER_CONFIG 路径中添加额外的目录 (kanikotest) 将避免并发构建覆盖相同的身份验证文件(在您的案例示例中不需要,但在一般)。

--digest-file 选项还允许为后续 CI 作业保存图像 SHA。

关于azure - 如何在Gitlab CI CD中使用Kaniko?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70775611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com