我在Digital Ocean中有一个Kubernetes集群,我想从GCP的私有存储库中提取图像。
我尝试创建一个秘密,使我能够提取本文后面的图像https://blog.container-solutions.com/using-google-container-registry-with-kubernetes
基本上,这些是步骤
- 在GCP帐户中,使用JSON凭据创建一个服务帐户密钥
- 执行
kubectl create secret docker-registry gcr-json-key --docker-server=gcr.io --docker-username=_json_key --docker-password="$(cat ~/json-key-file.json)" --docker-email=any@valid.email
- 在部署文件中引用secret
imagePullSecrets: - name: gcr-json-key
我不明白为什么我得了403分。如果在谷歌云之外使用注册表有一些限制,或者如果我错过了一些配置。
提取图像失败"gcr.io/myapp/backendnodeapi:latest": rpc error: code = Unknown desc = pull and unpack image "gcr.io/myapp/backendnodeapi:latest": Failed to resolve reference "gcr.io/myapp/backendnodeapi:latest": unexpected status code [manifest latest]: 403 Forbidden
验证您已启用容器注册表API,用于身份验证的已安装云SDK和服务帐户是否具有访问容器注册表的权限。
Docker需要特权访问才能与注册表交互。在Linux或Windows操作系统下,将运行Docker命令的用户加入Docker安全组。本文档详细介绍了容器注册的先决条件。
注意:请确保kubectl的版本是最新版本。
我试着按照您提供的文档进行复制,在我这边它工作了,所以请确保满足所有先决条件。
该JSON字符串不是密码。
文档建议激活服务帐户:
gcloud auth activate-service-account [USERNAME]@[PROJECT-ID].iam.gserviceaccount.com --key-file=~/service-account.json
或者将配置添加到$HOME/.docker/config.json
然后运行docker-credential-gcr configure-docker
。
Kubernetes似乎需要一个服务帐户令牌秘密
,这需要注释kubernetes.io/service-account.name
。
请参见配置pod服务帐户。