google-cloud-platform - 使用 GCP Cloud VPN 在站点到站点 VPN 用例中将 GKE 集群 pod IP 地址隐藏在单个 IP 地址后面

标签 google-cloud-platform vpn nat google-cloud-vpn

目前,我正在开发部署到谷歌云平台中的 GKE 集群的 nodejs 应用程序。此应用程序需要调用只能通过 VPN 访问的第 3 方 API,因此我必须建立到第 3 方 API 提供商网络的站点到站点 VPN。

我知道站点到站点 VPN 可以使用 GCP Cloud VPN 实现,并且我之前有使用 GCP Cloud VPN 的经验。但对我来说,问题是这个第 3 方 API 将只允许来 self 的 VPC 的一个 IP 地址访问他们的网络,这是一个问题,因为 GKE 集群中的所有 pod 都有自己的临时 IP。

问题是,我如何才能使从 GKE 集群到第 3 方 API 的传出 API 调用仅来自一个 IP 地址,以便第 3 方提供商管理员可以将这个 IP 地址列入白名单以访问他们的 API?

我正在考虑使用一个 Linux VM 作为 nat 路由器,这样对第 3 方 API 的 API 调用将首先通过这个 nat 路由器,然后从 nat 路由器到 Cloud VPN 网关。但是当我查看 VPC 路由表时,我无法理解这种方法是如何实现的,因为在 VPC 路由表中我无法指定一个特定的网段作为源。我只能设置目的地和下一跳,这将影响 VPC 中的所有实例。

这是我的 VPC 的当前拓扑以供引用:

Current topology

这是否可以在 GCP 中完成,或者我是否以错误的方式看待问题?

谢谢

最佳答案

The question is that how I can make the outgoing API call from the GKE cluster to the 3rd party API comes only from one single IP address

看起来像Cloud NAT可以在这里解决您的问题。

如果您在创建/配置 Cloud NAT 时在同一区域有私有(private) GKE 集群和 Cloud NAT,您可以允许来自该区域的流量仅通过该 Cloud NAT。

这样一来,您的整个 GKE 集群中只有一个调用者 IP,第三方 API 将不会提示这一点。

3rd Party API will only allow one single IP address from my VPC

为此,您可以保留一个外部 IP 地址并将其分配给您的 Cloud NAT 实例。事实上,这可以在创建 Cloud NAT 实例时即时完成。

有关如何创建和使用 Cloud NAT 的更多详细信息,您可以阅读文档。使用 Cloud NAT 避免向外部互联网显示您的外部 IP 有很多好处。

下面是一些链接:

  1. Using Cloud NAT
  2. Example GKE setup

关于google-cloud-platform - 使用 GCP Cloud VPN 在站点到站点 VPN 用例中将 GKE 集群 pod IP 地址隐藏在单个 IP 地址后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63977485/

相关文章:

android - 来自谷歌云存储的视频流

安卓连接VPN

amazon-web-services - 尽管按照规则配置了 NAT、Internet 网关,AWS VPC 仍无法访问 Internet

nat - SERVER REFLEXIVE 和 PEER REFLEXIVE 地址/候选人在什么情况下彼此不同?

webrtc - FreeSWITCH:无法从企业防火墙后面的浏览器(WebRTC)进行连接

javascript - 如何使用更新对象更新节点而不用 Google Cloud Function 覆盖所有子节点?

python - 在谷歌云功能中使用 PubSub

windows-8.1 - Windows 8.1 在连接 VPN 时出现错误 720

ios - 不使用 Safari 的 mobileconfig 安装

scikit-learn - 在 Google Cloud Platform 中管理 scikit-learn 模型