为给定网络创建单个出站 IP

rob*_*cng 15 google-cloud-platform

我正在尝试确定 GCP 中为 OUTBOUND 流量分配单个外部 IP 地址的最佳方式。我的用例:我需要向第 3 方提供静态 IP,以便他们可以将其列入白名单,以便我的实例能够访问他们的 API。因为我将来可能会添加或删除 GCE 实例,所以我不想给它们提供多个可能更改的静态 IP。

我在这里发现了一个类似的问题但不确定它是否解决了我的用例。

我设置了一个标准的 GCP 网络;没有 VPN,所有 VM 都有唯一的外部 IP。我实际上喜欢这种方式,因为我需要能够通过 SSH 连接到 VM。但是从我的虚拟机到互联网,我希望流量看起来都来自单个 IP。我想到的直接想法是创建一个 NAT 实例,然后通过它路由出站流量。这种方法的一些问题:

  1. 我必须专门为 NAT 设置和维护一个盒子
  2. 这不是 HA;如果该实例或可用区死亡,我的其他实例将无法从外部路由流量
  3. 如果我将来必须重新创建配置,这似乎不是很可重复

具体来说,我在这个项目中使用 GKE/Kubernetes。是否有实现此用例的最佳实践,即 HA、低维护和可重复?

Par*_*rag 5

Google Cloud 现在提供托管 NAT 网关服务 - Cloud NAT

该网关可以与 GKE 集群一起使用,该集群为其中的所有 pod 提供稳定的公共出口 IP,从而使它们能够被第三方服务提供商列入白名单。

此处提供了将 Cloud NAT 与 GKE 结合使用的示例实现 - https://cloud.google.com/nat/docs/gke-example

此外,由于这是基于 NAT 的托管软件,因此不会影响带宽和可用性。

不过,这仍然需要一个堡垒主机才能通过 ssh 进入您的实例。


Dav*_*vid 4

您可以通过为其他实例执行 NAT 的单个实例路由所有流量来实现此目的。Google 在https://cloud.google.com/compute/docs/networking#natgateway提供了执行此操作的指南