在 App Engine 柔性环境中,您可以指定一个网络,以便在其中部署服务的实例。本页面介绍了如何将项目配置为在共享 VPC 网络中使用 App Engine 柔性环境。
要详细了解如何设置共享 VPC 网络,请参阅预配共享 VPC。
使用共享 VPC 设置 App Engine 柔性环境
在共享 VPC 网络中部署 App Engine 柔性环境实例需要以下三个步骤:
如果使用 Google Cloud CLI,请在按照本指南操作之前通过运行以下命令更新到最新版本:
gcloud components update
允许向共享 VPC 网络传输流量
Shared VPC Admin 需要在共享 VPC 宿主项目中创建防火墙规则,以允许在共享 VPC 网络中传输 App Engine 柔性环境流量。该防火墙规则允许向柔性环境实例传送流量,并对流量进行健康检查。
该防火墙规则必须具有以下属性:
- 网络:共享 VPC 网络的名称
- 流量方向:入站
- 匹配时执行的操作:允许
- 目标:指定的目标标记
- 目标标记:
aef-instance
- 来源过滤条件:IP 地址范围
- 来源 IP 地址范围:
35.191.0.0/16
、130.211.0.0/22
- 协议和端口:指定的协议和端口
- tcp:8443、10402
Shared VPC Admin 可以使用 Google Cloud 控制台或 Google Cloud CLI 创建防火墙规则:
控制台
如需使用 Google Cloud 控制台创建防火墙规则,请执行以下操作:
转到“创建防火墙规则”页面。
在名称和说明字段中,提供防火墙规则的名称和说明。
填写上文所述的必要属性。
点击创建。
gcloud
如需使用 Google Cloud CLI 创建防火墙规则,请运行以下命令:
gcloud compute firewall-rules create NETWORK_NAME-flex-firewall \ --project HOST_PROJECT_ID \ --network NETWORK_NAME \ --allow tcp:10402,tcp:8443 \ --target-tags aef-instance \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --description 'Allows traffic to App Engine flexible environment'
其中:
NETWORK_NAME
是共享 VPC 网络的名称。HOST_PROJECT_ID
是共享 VPC 宿主项目的 Google Cloud 项目 ID。
设置权限
Shared VPC Admin 必须向以下两个服务账号授予 Compute Network User 角色,才能允许服务项目将 App Engine 柔性环境中的实例部署到网络:
- Google API 服务代理 (
PROJECT_NUM@cloudservices.gserviceaccount.com
) - App Engine 柔性环境服务代理 (
service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com
)
控制台
如需使用 Google Cloud 控制台设置权限,请执行以下操作:
转到服务项目的“IAM 设置”页面,并记下项目编号。
转到宿主项目的 IAM 页面。
点击添加。
在新成员字段中,输入以下电子邮件地址,用英文逗号分隔。将
PROJECT_NUM
替换为第 1 步中获得的项目编号。PROJECT_NUM@cloudservices.gserviceaccount.com
service-PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com
在选择角色下拉列表中,选择 Compute Engine > Compute Network User。
点击保存。
gcloud
获取要部署 App Engine 应用的服务项目的项目编号。运行以下命令,将
SERVICE_PROJECT_ID
替换为服务项目的 ID:export SERVICE_PROJECT_NUM=$(gcloud projects describe SERVICE_PROJECT_ID --format="value(projectNumber)")
向服务项目的 Google API 服务代理授予宿主项目中的
compute.networkUser
角色:gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:$SERVICE_PROJECT_NUM@cloudservices.gserviceaccount.com \ --role=roles/compute.networkUser
其中
HOST_PROJECT_ID
是共享 VPC 宿主项目的 Google Cloud 项目 ID。向服务项目的 App Engine 柔性环境服务代理授予宿主项目的
compute.networkUser
角色:gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-$SERVICE_PROJECT_NUM@gae-api-prod.google.com.iam.gserviceaccount.com \ --role=roles/compute.networkUser
配置和部署您的服务
设置防火墙规则和相应权限后,您可以将新服务或现有 App Engine 柔性环境服务部署到共享 VPC 网络。
在
app.yaml
文件中,使用网络设置name
字段指定共享 VPC 网络的完全限定名称:network: name: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME
其中
HOST_PROJECT_ID
是共享 VPC 宿主项目的 Google Cloud 项目 ID。NETWORK_NAME
是共享 VPC 网络的名称。
如需将服务配置为名为
SUBNETWORK_NAME
的子网的一部分,您还需要设置subnetwork_name
字段:network: name: projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME subnetwork_name: SUBNETWORK_NAME
部署该服务:
gcloud app deploy
验证您的配置
如需验证您的 App Engine 柔性环境服务是否正在共享 VPC 网络中运行,请在 Google Cloud 控制台中的“App Engine 版本”页面上查看版本配置:
转到“App Engine 版本”页面。
在右侧的配置列中,点击所需版本对应的查看选项。
验证配置中的网络名称是否是共享 VPC 网络的名称。