目前,我正在开发部署到google云平台GKE集群的nodejs应用。此应用程序将需要调用只能通过VPN访问的第三方API,以便我必须建立到第三方API提供商网络的站点到站点VPN。
我知道站点到站点VPN可以使用GCP Cloud VPN实现,并且我以前有使用GCP Cloud VPN的经验。但对我来说,问题是这个第三方API只允许我的VPC中的一个IP地址访问他们的网络,这是一个问题,因为GKE集群中的所有pods都有自己的临时IP。
问题是,如何从GKE群集向第三方API发出传出API调用仅来自单个IP地址,以便第三方提供商管理员可以将此单个IP地址列入白名单以访问其API?
我正在考虑使用一台Linux虚拟机作为nat路由器,这样对第三方API的API调用将首先通过此nat路由器,然后从nat路由器到达云VPN网关。但是当我查看VPC路由表时,我就是看不出这种方法是如何实现的,因为在VPC路由表中我不能指定某个特定的网段作为源。我只能设置目标和下一跳,会影响私有网络内的所有实例。
下面是我的私有网络的当前拓扑,以供参考:

这是可以在GCP中完成的事情吗?或者也许我看待问题的方式是错误的?
谢谢
发布于 2020-09-20 21:29:08
问题是,我如何才能从GKE集群向第三方API发出仅来自单个IP地址的传出API调用
看起来Cloud NAT可以在这里解决你的问题。
如果您在创建/配置云NAT时,同一地域内有内网GKE集群和云NAT,则可以仅允许来自该地域的流量通过该云NAT。
这样,您的整个GKE集群中只有一个主叫方IP,第三方API不会对此进行抱怨。
第三方应用编程接口将仅允许来自我的VPC的单个IP地址
为此,您可以保留一个外部IP地址,并将其分配给您的云NAT实例。事实上,这可以在创建云NAT实例的过程中动态完成。
有关如何创建和使用云NAT的更多详细信息,请参阅文档。使用云NAT可以避免将您的外部IP展示给外部互联网,这有很多好处。
以下是一些链接:
https://stackoverflow.com/questions/63977485
复制相似问题