防火墙规则允许单独项目中的 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 输出。创建防火墙规则后,我能够拉取。
我是 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 输出。创建防火墙规则后,我能够拉取。