我已经设置了一个Kubenetes集群,以便从GitLab私有存储库的注册表中提取容器映像。
当我使用gitlab-ci.yml构建映像时,我可以使用它成功登录到注册表:
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY当部署到我的Kubernetes集群时,我生成一个秘密:
- kubectl create secret -n $KUBE_NAMESPACE docker-registry gitlab-registry \
--docker-server="$CI_REGISTRY" \
--docker-username="$CI_REGISTRY_USER" \
--docker-password="$CI_REGISTRY_PASSWORD" \
--docker-email="$GITLAB_USER_EMAIL" \
-o yaml --dry-run | kubectl replace -n $KUBE_NAMESPACE --force -f -然后,我使用imagePullSecrets在部署脚本中引用了这个秘密。当我的集群为v1.5时,这很好。但是,自从我升级到v1.6之后,我一直无法提取容器映像。
我在Kubernetes控制台中遇到的错误是:
Failed to pull image "registry.gitlab.com/user/repo:branch":
rpc error: code = 2 desc = unauthorized: HTTP Basic: Access denied
Error syncing pod, skipping: failed to "StartContainer" for "helm-chart" with
ErrImagePull: "rpc error: code = 2 desc = unauthorized: HTTP Basic: Access denied"为了进行测试,我尝试在自己的PC上运行以下命令:
docker login registry.gitlab.com当我输入我的GitLab用户名和密码时,一切都很好。然而,如果我尝试以下几点:
docker login \
-u "gitlab-ci-token" \
-p "the-auth-code-in-my-secret" \
registry.gitlab.com我得到以下错误:
Error response from daemon: Get https://registry.gitlab.com/v2/:
unauthorized: HTTP Basic: Access denied我不确定这是GitLab问题还是Kubernetes问题。我只是做错了什么吗?
发布于 2017-06-04 13:04:50
事实证明,这是一个时间问题。我的部署脚本是创建Kubernetes对象,并且无需等待就通过了。因为这在过去是可行的,所以我假设在部署脚本完成后,$CI_REGISTRY_PASSWORD仍然有效。
我认为这只是巧合(我的Kubernetes集群一定是在CI管道清理其资源之前提取了容器)。在“`gitlab ci.yml”中添加以下行后:
- kubectl rollout status -n "$KUBE_NAMESPACE" -w "deployment/name"我不再接收"HTTP :访问拒绝“消息
https://stackoverflow.com/questions/44331075
复制相似问题