如果您的组织使用共享 VPC,则您可以在服务项目或宿主项目中设置无服务器 VPC 访问通道连接器。本指南介绍了如何在宿主项目中设置连接器。
如果您需要在服务项目中设置连接器,请参阅在服务项目中配置连接器。如需了解每种方法的优点,请参阅连接到共享 VPC 网络。
准备工作
检查您当前使用的账号的 Identity and Access Management (IAM) 角色。活跃账号必须在宿主项目上具有以下角色:
选择您的首选环境中的宿主项目。
控制台
转到 Google Cloud 控制台信息中心。
在信息中心顶部的菜单栏中,点击项目下拉菜单,然后选择宿主项目。
gcloud
通过在终端中运行以下命令,将 gcloud CLI 中的默认项目设置为宿主项目:
gcloud config set project HOST_PROJECT_ID
替换以下内容:
HOST_PROJECT_ID
:共享 VPC 宿主项目的 ID
创建 Serverless VPC Access 连接器
如需向您的 VPC 网络发送请求并接收相应的响应,您必须创建无服务器 VPC 访问通道连接器。您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 创建连接器:
控制台
为您的项目启用 Serverless VPC Access API。
打开无服务器 VPC 访问通道概览页面。
点击创建连接器。
在名称字段中,为连接器输入名称。该名称必须遵循 Compute Engine 命名惯例,并且少于 21 个字符。连字符 (
-
) 计为两个字符。在区域字段中,选择连接器的区域。此区域必须与您的无服务器服务的区域相匹配。
如果您的服务位于
us-central
或europe-west
区域,请使用us-central1
或europe-west1
。在网络字段中,选择要将连接器连接到的 VPC 网络。
点击子网下拉菜单:
选择未使用的
/28
子网。- 子网必须专供连接器使用。其他资源(例如虚拟机、Private Service Connect 或负载均衡器)不能使用这些子网。
- 如需确认您的子网未用于 Private Service Connect 或 Cloud Load Balancing,请通过在 gcloud CLI 中运行以下命令来检查子网
purpose
是否为PRIVATE
: 将gcloud compute networks subnets describe SUBNET_NAME
SUBNET_NAME
替换为您的子网名称。
(可选)如需设置扩缩选项以更好地控制连接器,请点击显示扩缩设置以显示扩缩表单。
- 设置连接器的实例数下限和上限,或使用默认值 2(下限)和 10(上限)。连接器会随着流量的增加而扩容到指定的最大值,但在流量减少时连接器不会缩容。必须使用介于
2
到10
之间的值,并且MIN
值必须小于MAX
值。 - 在“实例类型”下拉菜单中,选择要用于连接器的机器类型,或者使用默认的
e2-micro
。当您选择实例类型时,请注意右侧的费用边栏,其中显示带宽和费用估算值:
- 设置连接器的实例数下限和上限,或使用默认值 2(下限)和 10(上限)。连接器会随着流量的增加而扩容到指定的最大值,但在流量减少时连接器不会缩容。必须使用介于
点击创建。
准备就绪后,连接器名称旁边会出现绿色的对勾标记。
gcloud
将
gcloud
组件更新到最新版本:gcloud components update
为您的项目启用 Serverless VPC Access API:
gcloud services enable vpcaccess.googleapis.com
创建无服务器 VPC 访问通道连接器:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region=REGION \ --subnet=SUBNET \ --subnet-project=HOST_PROJECT_ID \ # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max. --min-instances=MIN \ --max-instances=MAX \ # Optional: specify machine type, default is e2-micro --machine-type=MACHINE_TYPE
替换以下内容:
CONNECTOR_NAME
:连接器的名称。该名称必须遵循 Compute Engine 命名惯例,并且少于 21 个字符。连字符 (-
) 计为两个字符。REGION
:连接器的区域;此区域必须与无服务器服务的区域相匹配。如果您的服务位于us-central
或europe-west
区域,请使用us-central1
或europe-west1
。SUBNET
:未使用的/28
子网的名称。- 子网必须专供连接器使用。其他资源(例如虚拟机、Private Service Connect 或负载均衡器)不能使用这些子网。
- 如需确认您的子网未用于 Private Service Connect 或 Cloud Load Balancing,请通过在 gcloud CLI 中运行以下命令来检查子网
purpose
是否为PRIVATE
: 替换以下内容:gcloud compute networks subnets describe SUBNET_NAME
SUBNET_NAME
:您的子网的名称
HOST_PROJECT_ID
:宿主项目的 IDMIN
:用于连接器的实例数下限。请使用介于2
到9
之间的整数。默认值为2
。 如需了解连接器扩缩,请参阅吞吐量和扩缩。MAX
:用于连接器的实例数上限。请使用介于3
到10
之间的整数。默认值为10
。 如果流量需要,连接器会扩容到[MAX]
实例,但不会缩减。 如需了解连接器扩缩,请参阅吞吐量和扩缩。MACHINE_TYPE
:f1-micro
、e2-micro
或e2-standard-4
。如需了解连接器吞吐量,包括机器类型和扩缩,请参阅吞吐量和扩缩。
如需了解详情和可选的参数,请参阅
gcloud
参考文档。在使用之前,验证连接器处于
READY
状态:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region=REGION
替换以下内容:
CONNECTOR_NAME
:连接器的名称;这是您在上一步中指定的名称REGION
:您的连接器的区域;这是您在上一步中指定的区域
输出应包含
state: READY
行。
Terraform
您可以使用 Terraform 资源启用 vpcaccess.googleapis.com
API。
您可以使用 Terraform 模块创建 VPC 网络和子网,然后创建连接器。
提供对连接器的访问权限
通过将宿主项目上的 Serverless VPC Access User IAM 角色授予部署 App Engine 服务的主账号,提供对连接器的访问权限。
控制台
打开 IAM 页面。
点击项目下拉菜单,然后选择宿主项目。
点击添加。
在新的主账号字段中,添加用于部署 App Engine 服务的主账号。
在角色字段中,选择 。
点击保存。
gcloud
在终端中运行以下命令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/vpcaccess.user
替换以下内容:
HOST_PROJECT_ID
:共享 VPC 宿主项目的 IDPRINCIPAL
:用于部署您的 App Engine 服务的主账号详细了解--member
标志。
将连接器设置为可被发现
如需查看连接器,主账号需要同时具有宿主项目和服务项目的特定查看角色。当主账号在 Google Cloud 控制台或其终端中查看可用连接器时,如需显示您的连接器,请为部署 App Engine 服务的主账号添加 IAM 角色。
在宿主项目上授予 IAM 角色
在宿主项目上,向部署 App Engine 服务的主账号授予 Serverless VPC Access Viewer (vpcaccess.viewer
) 角色。
控制台
打开 IAM 页面。
点击项目下拉菜单,然后选择宿主项目。
点击添加。
在新的主账号字段中,输入应该能够从服务项目中查看连接器的主账号的电子邮件地址。您可以在此字段中输入多个电子邮件地址。
在角色字段中,选择 Serverless VPC Access Viewer。
点击保存。
gcloud
在终端中运行以下命令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/vpcaccess.viewer
替换以下内容:
HOST_PROJECT_ID
:共享 VPC 宿主项目的 IDPRINCIPAL
:部署 App Engine 服务的主账号。详细了解--member
标志。
在服务项目上授予 IAM 角色
在服务项目上,向部署 App Engine 服务的主账号授予 Compute Network Viewer (compute.networkViewer
) 角色。
控制台
打开 IAM 页面。
点击项目下拉菜单,然后选择服务项目。
点击添加。
在新的主账号字段中,输入应该能够从服务项目中查看连接器的主账号的电子邮件地址。您可以在此字段中输入多个电子邮件地址。
在角色字段中,选择 Compute Network Viewer。
点击保存。
gcloud
在终端中运行以下命令:
gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/compute.networkViewer
替换以下内容:
SERVICE_PROJECT_ID
:服务项目的 IDPRINCIPAL
:部署 App Engine 服务的主账号。详细了解--member
标志。
配置服务以使用连接器
对于需要访问共享 VPC 的每个 App Engine 服务,您必须为该服务指定连接器。以下步骤显示了如何配置您的服务以使用连接器。
通过使用套接字来停用 URL Fetch 默认值,并停止明确使用任何
urlfetch
软件包。无服务器 VPC 访问通道与 URL Fetch 服务不兼容。将
vpc_access_connector
元素添加到服务的app.yaml
文件中:vpc_access_connector: name: projects/HOST_PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
替换以下内容:
HOST_PROJECT_ID
:共享 VPC 宿主项目的 IDREGION
:连接器的区域CONNECTOR_NAME
:连接器的名称
部署该服务:
gcloud app deploy
部署后,您的服务能够向共享 VPC 网络发送请求并接收相应的响应。
后续步骤
- 使用无服务器 VPC 访问通道审核日志记录监控管理员活动。
- 使用 VPC Service Controls 创建服务边界来保护资源和数据。
- 了解与无服务器 VPC 访问通道关联的 Identity and Access Management (IAM) 角色。如需获取与每个角色关联的权限列表,请参阅 IAM 文档中的无服务器 VPC 访问通道角色。
- 了解如何从 App Engine 标准环境连接到 Memorystore。