是否可以为 App Engine Flex 分配静态外部 IP?

Kri*_*alo 6 google-app-engine google-cloud-platform

Google 有为App Engine Standard 设置外部 IP的文档。但是,我需要为 App Engine Flex 设置外部 IP。

我已按照教程操作,成功创建了一个带有连接到外部静态 IP 的 Cloud Router 和 Cloud NAT 的子网。我通过在其中创建虚拟机实例来测试该设置是否有效,并发现所有出口流量确实源自保留的外部静态 IP。

但是,当我将 App Engine Flex 应用程序部署到该子网时,其请求不会通过保留的静态 IP 进行路由,而是似乎使用 Google 提供的共享 IP 地址池。一切正常,没有部署错误,只是未使用保留的外部IP。该应用程序在 app.yaml 中分配给子网:

network:
  name: default
  subnetwork_name: app-engine-subnet
Run Code Online (Sandbox Code Playgroud)

有关让此 Flex 实例通过保留的外部 IP 路由其出口流量的任何提示吗?我知道可以使用虚拟机实例作为代理来完成此操作,但我更喜欢使用 Cloud NAT。

小智 5

对于 2023 年遇到这种情况的人来说,有一种方法可以通过 Cloud NAT 使用静态 IP。在 OP 的情况下(子网、云路由、云 NAT 和保留的外部 IP),该instance_ip_mode设置将作为其值添加到network:块中internal,如下所示:

network:
  name: default
  subnetwork_name: app-engine-subnet
  instance_ip_mode: internal
Run Code Online (Sandbox Code Playgroud)

( https://cloud.google.com/appengine/docs/flexible/reference/app-yaml?tab=node.js#network_settings )

另请注意,必须在子网上启用“私有 Google 访问”,尽管从技术上讲这不是必需的,因为配置了 Cloud NAT,但如果禁用它,App Engine 将不会部署。

该服务的出口流量现在将使用保留的静态 IP 通过 Cloud NAT 路由。


小智 4

根据Google Cloud NAT 文档,Cloud NAT 不能与具有外部 IP 地址的虚拟机一起使用。App Engine Flex 不支持仅具有内部 IP 的虚拟机(Google App Engine 文档),因此 NAT 将不起作用。