在共享 VPC 宿主项目中配置连接器
如果您的组织使用共享 VPC,则您可以在服务项目或宿主项目中设置无服务器 VPC 访问通道连接器。本指南介绍了如何在宿主项目中设置连接器。
如果您需要在服务项目中设置连接器,请参阅在服务项目中配置连接器。如需了解每种方法的优点,请参阅连接到共享 VPC 网络。
准备工作
检查您使用的账号的 Identity and Access Management (IAM) 角色。活跃账号必须在宿主项目上具有以下角色:
选择您的首选环境中的宿主项目。
通过在终端中运行以下命令,将 gcloud CLI 中的默认项目设置为宿主项目:
gcloud config set project HOST_PROJECT_ID
替换以下内容:
HOST_PROJECT_ID
:共享 VPC 宿主项目的 ID
创建 Serverless VPC Access 连接器
如需向您的 VPC 网络发送请求并接收相应的响应,您必须创建无服务器 VPC 访问通道连接器。您可以使用 Google Cloud CLI 或 Terraform 创建连接器:
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 网络和子网,然后创建连接器。
为服务项目启用 Cloud Run functions
为服务项目启用 Cloud Run functions API。这是在后续步骤中添加 IAM 角色以及在服务项目中使用 Cloud Run functions 所必需满足的前提条件。
在终端中运行以下命令:
gcloud services enable cloudfunctions.googleapis.com --project=SERVICE_PROJECT_ID
替换以下内容:
SERVICE_PROJECT_ID
:服务项目的 ID
提供对连接器的访问权限
通过在宿主项目上向服务项目授予 Cloud Run functions Service Agent Serverless VPC Access User IAM 角色来提供对连接器的访问权限。您还必须向 Cloud Run Service Agent 授予相同的角色。
在终端中运行以下命令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role=roles/vpcaccess.user
请替换以下内容:
HOST_PROJECT_ID
:共享 VPC 宿主项目的 IDSERVICE_PROJECT_NUMBER
:与服务项目关联的项目编号。该编号与项目 ID 不同。您可以通过运行以下命令找到项目编号:gcloud projects describe SERVICE_PROJECT_ID
您还可以通过运行以下命令向 Cloud Run Service Agent 授予角色:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \ --role=roles/vpcaccess.user
将连接器设置为可被发现
在宿主项目的 IAM 政策中,您必须向部署 Cloud Run 服务的主账号授予以下两个预定义角色:
- Serverless VPC Access Viewer (
vpcaccess.viewer
):必需。 - Compute Network Viewer (
compute.networkViewer
):可选,但建议授予。允许 IAM 主账号枚举共享 VPC 网络中的子网。
或者,您也可以使用提供 Serverless VPC Access Viewer (vpcaccess.viewer
) 角色的所有权限的自定义角色或其他预定义角色。
在终端中运行以下命令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/vpcaccess.viewer gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/compute.networkViewer
替换以下内容:
HOST_PROJECT_ID
:共享 VPC 宿主项目的 IDPRINCIPAL
:部署 Cloud Run 服务的主账号。详细了解--member
标志。
将函数配置为使用连接器
对于需要访问共享 VPC 的每个函数,您必须为函数指定连接器。以下步骤显示了如何配置您的函数以使用连接器。
设置 gcloud CLI 以使用包含该函数的项目:
替换以下内容:gcloud config set project PROJECT_ID
PROJECT_ID
:包含需要访问共享 VPC 的函数的项目 ID。如果该函数位于宿主项目中,则这是宿主项目 ID。如果该函数位于服务项目中,则这是服务项目 ID。
使用
--vpc-connector
标志并部署函数:gcloud functions deploy FUNCTION_NAME --vpc-connector=CONNECTOR_NAME
替换以下内容:
FUNCTION_NAME
:函数的名称CONNECTOR_NAME
:连接器的名称。从共享 VPC 服务项目(而不是宿主项目)进行部署时,请使用完全限定名称,例如: 其中projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
HOST_PROJECT_ID
是宿主项目的 ID,CONNECTOR_REGION
是连接器的区域,CONNECTOR_NAME
是您为连接器指定的名称。
如需更好地控制通过连接器路由哪些请求,请参阅出站流量设置。
后续步骤
- 从 Cloud Run functions 连接到 Memorystore。
- 为 Cloud Run functions 配置网络设置。
- 使用无服务器 VPC 访问通道审核日志记录监控管理员活动。
- 使用 VPC Service Controls 创建服务边界来保护资源和数据。
- 了解与无服务器 VPC 访问通道关联的 Identity and Access Management (IAM) 角色。如需获取与每个角色关联的权限列表,请参阅 IAM 文档中的无服务器 VPC 访问通道角色。