防火墙规则允许单独项目中的 GKE -> GCR 流量

Firewall rule to allow GKE -> GCR traffic in separate projects

我是 GCP 中的 运行 Kubernetes,我在不同的项目中有 GKE 集群和容器注册表。我将 GKE 服务帐户添加到我的 GCR 项目中,一切正常。

现在,我想在计算级别限制来自我的 GKE 项目的任何传出流量。我添加了一个出口防火墙规则来丢弃任何流出我的 VPC 网络的流量。因此,GKE 无法再从注册表中拉取镜像。我添加了另一个防火墙规则以允许 GKE 服务帐户的出口流量,但为了让它工作,我必须添加“0.0.0.0/0 所有端口”作为目标过滤器。有一个更好的方法吗? GCR 是否有 IP 地址范围/端口?

谢谢!

GCR 没有专用的 IP 地址范围。 我不知道有什么方法可以只限制 GCR 的流量。

对不起。

其实是有办法的。

创建 VPC 网络并启用 Private Google Access。正如您在文档中看到的那样:

Accessible Services

Google services that you can reach using Private Google access include:

Container registry services, a private Docker image repository on Google Cloud Platform

然后在防火墙中不允许任何连接,默认情况下会被阻止。有了这个,您将获得一个无法访问的 GKE 集群,但它将能够在 GCR 中拉取图像。

有点旧,但您可以使用 GKE 私有集群:https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters

我发现出于某种原因 gcr.io 解析为 aws fqdn,因此私有 google 访问无效。在我的例子中,集群是私有的,所以我必须添加一个 cloud nat 并允许 443 输出。创建防火墙规则后,我能够拉取。