首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Gitlab CICD内部使用Kaniko?

如何在Gitlab CICD内部使用Kaniko?
EN

Stack Overflow用户
提问于 2022-01-19 18:02:55
回答 1查看 641关注 0票数 3

我试图使用Kaniko与Gitlab,以摆脱DinD流。

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

代码语言:javascript
复制
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.*$/

但是我一直在日志中发现这个错误

代码语言:javascript
复制
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.

我在跟踪本指南

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

EN

回答 1

Stack Overflow用户

发布于 2022-09-13 08:51:43

auth文件的语法似乎很好(我假设creds是正确的),所以如果您将DOCKER_CONFIG环境变量设置为:

代码语言:javascript
复制
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

kanikotest路径中添加一个额外的目录( DOCKER_CONFIG )将避免并发构建来覆盖相同的auth文件(在您的示例中不是必需的,但通常是一个良好的实践)。

--digest-file选项还将允许保存用于后续CI作业的映像SHA。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70775611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档