停用临时外部 IP 地址

此页面介绍了仅在内部 IP 地址上公开 App Engine 柔性环境服务所需的配置。

默认情况下,柔性环境服务在首次部署时会同时收到一个内部 IP 地址和一个临时外部 IP 地址。如果使用该临时外部 IP 地址,您的服务将可以向包含自定义网域的 App Engine 服务以及向互联网上的资源发送请求。使用临时外部 IP 地址会产生费用

如果您的服务不需要使用外部 IP 地址,那么您可以将服务限制为仅使用其内部 IP 地址,从而阻止服务向互联网上的资源发送请求以节省费用。这不会阻止您的服务从互联网或从包含自定义网域的 App Engine 服务接收请求,因为服务的完全限定域名仍对外部可见。

限制

停用临时外部 IP 地址时,请考虑以下限制:

  • SSH:命令 gcloud app instances ssh 不支持将 IP 模式设置为 internal 的实例。
  • 包含自定义网域的服务:如需向包含自定义网域的 App Engine 服务发送请求,您必须配置 Cloud NAT
  • 外部资源:如需向外部资源发送请求,您必须配置 Cloud NAT
  • 专用 Google 访问通道依赖项:将 IP 模式设置为 internal 的实例需要在目标子网上具有专用 Google 访问通道
  • 旧版网络旧版网络无法使用专用 Google 访问通道,因此无法停用临时外部 IP 地址。

准备工作

如需部署不使用外部 IP 地址的柔性环境应用,您必须在目标子网上启用专用 Google 访问通道。

准备共享 VPC 网络

如果您使用共享 VPC,请按照以下步骤准备共享 VPC 网络以进行进一步配置。

  1. 验证您是否拥有与专用 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 访问通道文档中的路由选项部分。

  2. 验证您是否拥有与专用 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 地址

  1. 更新 Google Cloud CLI。这可确保您使用的 gcloud CLI 版本支持在柔性环境应用中使用专用 IP 地址。

    gcloud components update
    
  2. app.yaml 文件中,将 instance_ip_mode 字段添加到 network 部分并将其设置为 internal

    • 如果您的 app.yaml 文件已包含 network 部分,请在 network 部分内添加以下行:

      instance_ip_mode: internal
      

    • 如果您的 app.yaml 文件没有包含 network 部分,请创建该部分并通过添加以下行指定实例 IP 模式:

      network:
       instance_ip_mode: internal
      

    保存这些更改。

  3. 部署该服务。

    gcloud beta app deploy
    
  4. 通过检查 Google Cloud 控制台的“实例”页面验证配置。

    转到实例

    向下滚动到实例表(摘要图表下方)。在虚拟机 IP 列中,确认该列是否未列出任何 IP 地址。如果该列中没有任何 IP 地址,则表示您的实例没有外部 IP 地址。即使此字段为空,您的实例仍拥有内部 IP 地址。

在没有外部 IP 地址的情况下发送外部请求

如果您的服务需要向互联网发送请求,但您希望限制该服务仅使用其内部 IP 地址,那么您可以使用 Cloud NAT 创建一个网关。您的服务可以通过该 Cloud NAT 网关发送外部请求,而无需使用默认的临时外部 IP 地址。

  1. 按照将服务配置为仅使用其内部 IP 地址部分中的步骤操作。

  2. 按照相应的步骤配置 Cloud NAT

如需详细了解此方法,请参阅有关部署 Cloud NAT 以进行提取的云架构中心文档。