DO Kubernetes 集群 + GCP 容器注册中心

DO Kubernetes Cluster + GCP Container Registry

我在 Digital Ocean 中有一个 Kubernetes 集群,我想从 GCP 中的私有存储库中拉取图像。

我试图创建一个秘密,使我能够提取本文后的图像 https://blog.container-solutions.com/using-google-container-registry-with-kubernetes

基本上,这些是步骤

  1. 在 GCP 帐户中,使用 JSON 凭证创建服务帐户密钥
  2. 执行
    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
    
  3. 在部署 yaml 中引用秘密
    imagePullSecrets:
      - name: gcr-json-key
    

我不明白为什么我得到 403。如果在 google 云之外使用注册表有一些限制,或者如果我错过了一些配置。

Failed to pull image "gcr.io/myapp/backendnodeapi:latest": rpc error: code = Unknown desc = failed to pull and unpack image "gcr.io/myapp/backendnodeapi:latest": failed to resolve reference "gcr.io/myapp/backendnodeapi:latest": unexpected status code [manifests latest]: 403 Forbidden

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 似乎需要 service-account token secret

这需要注释 kubernetes.io/service-account.name

另见 Configure Service Accounts for Pods

确认您已启用 Container Registry API,已安装的 Cloud SDK 和您用于身份验证的服务帐户可以 permissions 访问 Container Registry。

Docker 需要特权访问才能与注册表交互。在 Linux 或 Windows 上,将您用于 运行 Docker 命令的用户添加到 Docker 安全组。 documentation 详细介绍了容器注册表的先决条件。

注意: 确保 kubectl 的版本是 latest version.

我尝试按照您提供的文档进行复制,并且在我这边成功了,因此请确保满足所有先决条件。