我想在我的私有GKE集群中部署nginx-ingress-controller映像(https://github.com/kubernetes/ingress-nginx),但是由于该映像位于quay.io的注册表中,因此我无法提取该映像。如何提取不在GCR或GCR Dockerhub镜像上的公共映像?
我曾考虑过将其提取并上传到我自己的GCR注册表中,但随后我必须保持对其进行更新。有没有办法仅保留该图像的私有镜像?
答案 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群集配置为使用私有本地注册表。