此页面介绍了仅在内部 IP 地址上公开 App Engine 柔性环境服务所需的配置。
默认情况下,柔性环境服务在首次部署时会同时收到一个内部 IP 地址和一个临时外部 IP 地址。如果使用该临时外部 IP 地址,您的服务将可以向包含自定义网域的 App Engine 服务以及向互联网上的资源发送请求。使用临时外部 IP 地址会产生费用。
如果您的服务不需要使用外部 IP 地址,那么您可以将服务限制为仅使用其内部 IP 地址,从而阻止服务向互联网上的资源发送请求以节省费用。这不会阻止您的服务从互联网或从包含自定义网域的 App Engine 服务接收请求,因为服务的完全限定域名仍对外部可见。
限制
停用临时外部 IP 地址时,请考虑以下限制:
- 包含自定义网域的服务:如需向包含自定义网域的 App Engine 服务发送请求,您必须配置 Cloud NAT。
- 外部资源:如需向外部资源发送请求,您必须配置 Cloud NAT。
- 专用 Google 访问通道依赖项:将 IP 模式设置为 internal的实例需要在目标子网上具有专用 Google 访问通道。
- 旧版网络:旧版网络无法使用专用 Google 访问通道,因此无法停用临时外部 IP 地址。
准备工作
如需部署不使用外部 IP 地址的柔性环境应用,您必须在目标子网上启用专用 Google 访问通道。
- 如需了解专用 Google 访问通道,请参阅概览。
- 如需查看分步配置说明,请参阅启用专用 Google 访问通道。
准备共享 VPC 网络
如果您使用共享 VPC,请按照以下步骤准备共享 VPC 网络以进行进一步配置。
- 验证您是否拥有与专用 Google 访问通道兼容的路由。通常,网络的默认路由与专用 Google 访问通道兼容。对于其他路由,请确保按如下方式配置路由。 - Network: SHARED_VPC_NETWORK_NAME Destination IP address range: 0.0.0.0/0 Instance tags: INSTANCE_TAGS Next hop: DEFAULT_INTERNET_GATEWAY - 替换以下内容: - SHARED_VPC_NETWORK_NAME:您的共享 VPC 网络的名称。
- INSTANCE_TAGS:如果您不使用任何实例标记,请勿在此字段中指定任何内容。如果您确实要使用实例标记,请在实例标记列表中添加- aef-instances。
- DEFAULT_INTERNET_GATEWAY:默认互联网网关。
 - 如需详细了解与专用 Google 访问通道兼容的路由,请参阅专用 Google 访问通道文档中的路由选项部分。 
- 验证您是否拥有与专用 Google 访问通道兼容的防火墙规则。防火墙规则必须按如下方式配置。 - Network: SHARED_VPC_NETWORK_NAME Destination IP address range: 0.0.0.0/0 Destination filter: IP ranges Direction of traffic: Egress Attach on match: Allow Instance tags: INSTANCE_TAGS - 替换以下内容: - SHARED_VPC_NETWORK_NAME:您的共享 VPC 网络的名称。
- INSTANCE_TAGS:如果您不使用任何实例标记,请勿在此字段中指定任何内容。如果您确实要使用实例标记,请在实例标记列表中添加- aef-instances。
 - 如需详细了解与专用 Google 访问通道兼容的防火墙规则,请参阅专用 Google 访问通道文档中的防火墙配置部分。 
将服务配置为仅使用其内部 IP 地址
- 更新 Google Cloud CLI。这可确保您使用的 gcloud CLI 版本支持在柔性环境应用中使用专用 IP 地址。 - gcloud components update 
- 在 - app.yaml文件中,将- instance_ip_mode字段添加到- network部分并将其设置为- internal。- 如果您的 - app.yaml文件已包含- network部分,请在- network部分内添加以下行:- instance_ip_mode: internal
- 如果您的 - app.yaml文件没有包含- network部分,请创建该部分并通过添加以下行指定实例 IP 模式:- network: instance_ip_mode: internal 
 - 保存这些更改。 
- 部署该服务。 - gcloud beta app deploy 
- 通过检查 Google Cloud 控制台的“实例”页面验证配置。 - 向下滚动到实例表(摘要图表下方)。在外部 IP 列中,确认该列是否未列出任何 IP 地址。如果该列中没有任何 IP 地址,则表示您的实例没有外部 IP 地址。即使此字段为空,您的实例仍拥有内部 IP 地址。 
在没有外部 IP 地址的情况下发送外部请求
如果您的服务需要向互联网发送请求,但您希望限制该服务仅使用其内部 IP 地址,那么您可以使用 Cloud NAT 创建一个网关。您的服务可以通过该 Cloud NAT 网关发送外部请求,而无需使用默认的临时外部 IP 地址。
- 按照将服务配置为仅使用其内部 IP 地址部分中的步骤操作。 
- 按照相应的步骤配置 Cloud NAT。 
如需详细了解此方法,请参阅有关部署 Cloud NAT 以进行提取的云架构中心文档。