docker - 在 gitlab ci 作业中使用 kubectl 创建 ImagePullSecret 时出现奇怪错误

标签 docker gitlab gitlab-ci kubectl docker-registry

我正在尝试将镜像从私有(private) gitlab 注册表部署到由 gitlab 连接和管理的自托管 kubernets 集群。据我了解,我需要在部署配置中创建并引用 ImagePullSecret 才能正常工作。 Gitlab 正在为每个项目创建一个命名空间,因此我尝试在 CI 作业开始时创建一个 secret 。奇怪的是,尽管所有必需的参数都存在,但我总是收到错误,即缺少参数。我做错了什么?

这是我的 gitlab-ci.yml 中的 CI 作业

deploy-app:
  stage: deploy
  image:
    name: bitnami/kubectl:latest
    entrypoint: [""]
  script:
    - kubectl create secret docker-registry gitlab-registry --docker-username=$CI_DEPLOY_USER --docker-password=$CI_DEPLOY_PASSWORD --docker-server=$CI_REGISTRY --dry-run=client -o yaml | kubectl apply -f -
    - kubectl apply -f k8s/configmap.yaml
    - kubectl apply -f k8s/deployment.yaml
    - kubectl apply -f k8s/service.yaml
    - kubectl apply -f k8s/ingress.yaml
  environment:
    name: production
    url: <my-url>
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

CI-Job 总是遇到以下错误:

error: either --from-file or the combination of --docker-username, --docker-password and --docker-server is required

我尝试直接在服务器上运行该命令没有报错,所以这与这个特定的环境有关。有人有另一种方法的想法吗?我现在有点迷失。

最佳答案

有同样的问题。通过使用正确的 CI 变量名称修复: $CI_REGISTRY_USER$CI_REGISTRY_PASSWORD

看起来 GitLab 文档中的 $CI_DEPLOY_USER$CI_DEPLOY_PASSWORD 变量只是一个示例,实际上并未定义。

在此处检查实际变量名称:https://docs.gitlab.com/ee/ci/variables/

关于docker - 在 gitlab ci 作业中使用 kubectl 创建 ImagePullSecret 时出现奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69790883/

相关文章:

javac : File Not Found Error in Dockerfile

git - 无法将代码推送到项目 - 错误 403

git - 使用 Jenkins Git Publisher 推送标签 - 多个 Git 存储库(fork)

ruby - 给定标签时 gitlab-ci runner 的注册失败

macos - 如何卸载 docker-compose?

java - 带有 jib 的 JRE 版本 (Docker)

php - symfony/thanks 包含一个被你的 allow-plugins 配置阻止的 Composer 插件

azure - 如何将 Azure AKS Kubernetes 集群自签名 CA 添加到 GitLab CI/CD Kubernetes 集成?

git - 如何将符号链接(symbolic link)文件添加到 gitlab 仓库

node.js - Dockerized NodeJS在npm运行时选择脚本