使用 GCP Cloud *** 在站点到站点 *** 用例中将 GKE 集群 pod IP 地址隐藏在单个 IP 地址后面
Posted
技术标签:
【中文标题】使用 GCP Cloud *** 在站点到站点 *** 用例中将 GKE 集群 pod IP 地址隐藏在单个 IP 地址后面【英文标题】:Hide GKE cluster pods IP address behind single IP address in site to site *** use case using GCP Cloud *** 【发布时间】:2021-01-06 16:13:01 【问题描述】:目前,我正在开发部署到谷歌云平台 GKE 集群的 nodejs 应用程序。此应用程序需要调用只能通过 *** 访问的第 3 方 API,因此我必须建立到第 3 方 API 提供商网络的站点到站点 ***。
我知道站点到站点 *** 可以使用 GCP Cloud *** 来实施,并且我之前有使用 GCP Cloud *** 的经验。但对我来说问题是这个第 3 方 API 将只允许来自我的 VPC 的一个 IP 地址访问他们的网络,这是一个问题,因为 GKE 集群中的所有 pod 都有自己的临时 IP。
问题是我如何才能从 GKE 集群向 3rd 方 API 发出传出 API 调用仅来自一个 IP 地址,以便第 3 方提供商管理员可以将这个 IP 地址列入白名单以访问他们的 API?
我正在考虑使用一个 Linux 虚拟机作为 nat 路由器,以便对第 3 方 API 的 API 调用将首先通过此 nat 路由器,然后从 nat 路由器到 Cloud *** 网关。但是当我查看 VPC 路由表时,我就是看不到这种方法是如何实现的,因为在 VPC 路由表中我无法指定特定网段作为源。我只能设置目的地和下一跳,这将影响 VPC 中的所有实例。
这是我的 VPC 的当前拓扑供参考:
这是可以在 GCP 中完成的事情,还是我以错误的方式看待问题?
谢谢
【问题讨论】:
【参考方案1】:问题是我如何才能从 GKE 集群向第 3 方 API 发出传出 API 调用仅来自一个 IP 地址
看来Cloud NAT 可以在这里解决您的问题。
如果您在创建/配置 Cloud NAT 时在同一区域中拥有私有 GKE 集群和 Cloud NAT,则可以只允许来自该区域的流量通过该 Cloud NAT。
这样,整个 GKE 集群中只有一个调用方 IP,第三方 API 不会抱怨。
第 3 方 API 仅允许来自我的 VPC 的一个 IP 地址
为此,您可以保留一个外部 IP 地址并将其分配给您的 Cloud NAT 实例。事实上,这可以在创建 Cloud NAT 实例时即时完成。
有关如何创建和使用 Cloud NAT 的更多详细信息,您可以查看文档。使用 Cloud NAT 避免向外部互联网显示您的外部 IP 有很多好处。
以下是一些链接:
-
Using Cloud NAT
Example GKE setup
【讨论】:
以上是关于使用 GCP Cloud *** 在站点到站点 *** 用例中将 GKE 集群 pod IP 地址隐藏在单个 IP 地址后面的主要内容,如果未能解决你的问题,请参考以下文章
如何为 React Native 应用程序生成 reCAPTCHA 站点密钥
从 Cloud Function 发布到 GCP PubSub 的正确方法是啥?