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

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

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

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

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

  1. 我必须设置并维护一个专门用于 NAT 的盒子
  2. 它不具备高可用性;如果该实例或可用区域崩溃,我的其他实例将无法向外部路由流量
  3. 如果将来我必须重新创建配置,这似乎不太可重复

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

答案1

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

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

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

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

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

答案2

您可以通过一个实例路由所有流量,该实例为其他实例执行 NAT,从而实现这一点。Google 有一个指南,可帮助您完成此操作:https://cloud.google.com/compute/docs/networking#natgateway

相关内容