我正在尝试确定在 GCP 中为出站流量分配单个外部 IP 地址的最佳方式。我的用例:我需要向第三方提供静态 IP,以便他们可以将其列入白名单,这样我的实例就可以访问他们的 API。因为我将来可能会添加或减少 GCE 实例,所以我不想给他们多个可能会改变的静态 IP。
我发现了类似的问题这里但不确定它是否能解决我的用例。
我设置了一个标准的 GCP 网络;没有 VPN,所有虚拟机都有唯一的外部 IP。我实际上喜欢这种方式,因为我需要能够通过 SSH 连接到虚拟机。但是从我的虚拟机到互联网,我希望流量看起来都来自一个 IP。我立即想到的并且文档暗示的是创建一个 NAT 实例,然后通过该实例路由出站流量。这种方法有几个问题:
- 我必须设置并维护一个专门用于 NAT 的盒子
- 它不具备高可用性;如果该实例或可用区域崩溃,我的其他实例将无法向外部路由流量
- 如果将来我必须重新创建配置,这似乎不太可重复
具体来说,我在这个项目中使用 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