在 GCP Cloud Run/Function 上使用固定公共 IP(列入白名单)

Dav*_*ins 6 google-app-engine google-cloud-platform google-cloud-functions google-cloud-run

我正在寻找将应用部署到 GCP 的最佳方法。该应用程序需要使用微服务(在Cloud Run或Cloud Function上运行)在远程数据库上执行SQL代码。

基本上,微服务接收一段 SQL 代码,并需要在远程数据库上执行它。出于安全原因,远程数据库必须将应用程序用于连接它的 IP 地址列入白名单。

在 GCP 上,拥有固定的公共 IP 地址(远程数据库可以将其列入白名单)的最佳方式是什么?考虑到我想使用Cloud Run或Cloud Function。

注意:我知道使用 GKE 的解决方案。或者在 AWS 上,使用 Lambda + NAT 实例。

谢谢 !

gui*_*ere 6

您有多种解决方案可以实现这一目标

  • 在 GKE 上使用 Cloud Run。在这种情况下,您的虚拟机位于 VPC 上,您知道它们的 IP。但是,您有多个公共 IP,并且如果虚拟机重新启动,IP 就会发生变化。好的模式是删除虚拟机的公共 IP,并部署Cloud Nat以将所有出口流量映射到单个外部(和公共)IP。
  • 使用云函数。在这种情况下,您必须添加一个附加组件:Serverless VPC Access。该组件允许路由源自无服务器组件的流量(全部或仅私有目标 IP)。因此,您的请求将通过此元素并进入您的 VPC。然后,像以前一样,配置 Cloud Nat 以将外部 IP 映射到静态公共 IP

无服务器 VPC 访问可与 AppEngine 和 Cloud Function 配合使用。Cloud Run 应该会在 2020 年兼容它。

最后一种选择:在这两种情况下,我们都使用 Cloud Nat 通过静态 IP 访问公共互联网。您可以想象在您的 VPC 和本地网络(托管您的数据库的位置)之间设置一个 VPN,这样您就无需将任何内容列入白名单,所有通信都在同一个虚拟专用网络内