docker - 在 gitlab ci 作业中使用 kubectl 创建 ImagePullSecret 时出现奇怪的错误
问题描述
我正在尝试将私有 gitlab 注册表中的映像部署到由 gitlab 连接和管理的自托管 kubernets 集群。据我了解,我需要在我的 Deployment-Config 中创建并引用一个 ImagePullSecret 才能使其工作。Gitlab 正在为每个项目创建一个命名空间,所以我试图在我的 CI-Job 开始时创建一个秘密。奇怪的是,尽管存在所有必需的参数,但我总是得到错误,即缺少参数。我究竟做错了什么?
这是我的 gitlab-ci.yml 中的 CI-Job
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/
推荐阅读
- c# - 如何查看存储在 Couchbase lite 中的数据文档?
- siddhi - 无法在 Siddhi 中使用“正则表达式”http.status.code 处理响应
- wix - windows-installer 检查是否需要修复
- postgresql - 如何在 PostgreSql 函数的返回表中设置标识列?
- ruby-on-rails - Ruby lib console.so 加载错误和未定义符号
- python - 在函数中使用遗传算法(局部) - 最小化函数
- objective-c - 在Objective-C中使用精确的int字典值过滤字典的NSMutableArray
- c# - 如何在代码中设置 xaml DesignInstance 属性
- wordpress - 注意:未定义的属性:stdClass::$file_id Woocommerce
- api - 使用 Symfony 在 API 功能测试中创建模拟