从私有GKE群集访问非gcr公共容器注册表

时间:2019-08-26 20:38:38

标签: docker google-cloud-platform google-kubernetes-engine

我想在我的私有GKE集群中部署nginx-ingress-controller映像(https://github.com/kubernetes/ingress-nginx),但是由于该映像位于quay.io的注册表中,因此我无法提取该映像。如何提取不在GCR或GCR Dockerhub镜像上的公共映像?

我曾考虑过将其提取并上传到我自己的GCR注册表中,但随后我必须保持对其进行更新。有没有办法仅保留该图像的私有镜像?

2 个答案:

答案 0 :(得分:0)

私有GKE群集中的节点默认没有外部IP,因此无法出口到Internet,这就是群集无法从非GCR注册中心提取图像的原因。

要允许互联网出口,您需要在与GKE群集相同的项目中启用Cloud NAT

gcloud compute routers create nat-router \
    --network custom-network1 \
    --region us-central1

gcloud compute routers nats create nat-config \
    --router-region us-central1 \
    --router nat-router \
    --nat-all-subnet-ip-ranges \
    --auto-allocate-nat-external-ips

有关更多详细信息,请参见https://cloud.google.com/nat/docs/gke-example#step_6_create_a_nat_configuration_using

答案 1 :(得分:0)

Andrew Ridout提供的答案似乎是最合适的答案。另一种可行的方法是创建一个private local registry和一些自动化脚本,以使quay.io中的图像保持最新。

另请参阅this,以将GKE群集配置为使用私有本地注册表。