我正在尝试将镜像从私有(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/