GKE 从 GCP 内的私有存储库中拉取图像

GKE pulling images from a private repository inside GCP

我已经设置了一个私有容器注册表,它已成功与 bitbucket 集成。但是,我无法从我的 GKE 集群中提取图像。

我创建了一个角色为“Project Viewer”的服务帐户,并为此帐户创建了一个 json 密钥。然后我在 cluster/namespace 运行

中创建了秘密
kubectl create secret docker-registry gcr-json-key \
 --docker-server=gcr.io \
 --docker-username=_json_key \
 --docker-password="$(cat ~/code/bitbucket/miappsrl/miappnodeapi/secrets/registry/miapp-staging-e94050365be1.json)" \
 --docker-email=agusmiappgcp@gmail.com

并且在我添加的部署文件中

...
      imagePullSecrets:
    - name: gcr-json-key
...

但是当我应用部署时,我得到

 ImagePullBackOff

当我做 kubectl describe pod <pod_name> 我看到

Failed to pull image "gcr.io/miapp-staging/miappnodeapi": rpc error: code = Unknown desc = Error response from daemon: Get https://gcr.io/v2/: dial tcp: lookup gcr.io on 169.254.169.254:53: no such host

我不知道我错过了什么,我知道它可以解析集群内的 dns,但不确定我应该添加什么

如果 GKE 集群设置为私有,您需要设置 DNS 以访问容器注册表,来自 documentation:

To support GKE private clusters that use Container Registry or Artifact Registry inside a service perimeter, you first need to configure your DNS server so requests to registry addresses resolve to restricted.googleapis.com, the restricted VIP. You can do so using Cloud DNS private DNS zones.

验证您是否将集群设置为私有集群。