将源代码部署到 Cloud Run 时,该源代码会存储在 Cloud Storage 存储桶中。Cloud Build 随后会自动将您的代码构建到容器映像中,并将该映像推送到映像注册表。每个构建都在其自己的工作器上运行。Cloud Run 会在部署时导入构建的映像。
如果要自定义 Cloud Build 用于 VPC Service Controls 保护的构建上下文的构建工作器池,您可以自定义工作器池。本页面适用于从源代码部署到 Cloud Run 的平台开发者,包括在部署函数以及配置 Cloud Build 所使用的专用池时。
准备工作
启用 Cloud Build API
gcloud services enable cloudbuild.googleapis.com
所需的角色
如需获得从源代码部署所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
Cloud Run Source Developer (
roles/run.sourceDeveloper
) -
Service Account User (
roles/iam.serviceAccountUser
)
如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色和 Cloud Run IAM 权限。如果您的 Cloud Run 服务与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限和管理访问权限。
使用专用池保护构建
默认情况下,Cloud Build 在构建过程中具有不受限制的互联网访问权限。如果您已设置 VPC Service Controls (VPC SC) 边界,并且希望限制构建仅可访问存储在边界内的依赖项(例如 npm 软件包),则可以使用 Cloud Build 专用工作器池功能。
一般来说,请按照以下步骤设置您的专用池:
- 创建专用工作器池。 请参阅创建和管理专用池。
配置 VPC Service Controls 边界。 请参阅使用 VPC Service Controls。
如果专用工作器池与 Cloud Run 服务位于不同的项目中,则需要为 Cloud Run Service Agent (
service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
) 授予 Cloud Build WorkerPool User (cloudbuild.workerPoolUser
) 角色,以便 Cloud Build 服务可以访问工作器池。gcloud projects add-iam-policy-binding PRIVATE_POOL_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \ --role roles/cloudbuild.workerPoolUser
您需要进行如下替换:
- 将 PROJECT_NUMBER 替换为在其中运行服务的项目的编号。
- 将 PRIVATE_POOL_PROJECT_ID 替换为工作器池所在项目的 ID。如需了解详情,请参阅在专用池中运行构建。
从源代码部署服务以使用专用池进行构建:
gcloud
如需在从源代码部署时指定要构建的专用池,请运行以下命令:
gcloud beta run deploy SERVICE \ --source . \ --build-worker-pool WORKER_POOL
您需要进行如下替换:
- 将 SERVICE 替换为您的服务名称。
- 将 WORKER_POOL 替换为专用池的名称。
如果您要部署函数,请从源代码将 --function
标志与入口点一起添加到函数。
删除构建工作器池
您可以删除现有服务的构建工作器池。
gcloud
如需清除源代码部署的 Cloud Build 工作器池,请运行以下命令:
gcloud beta run deploy SERVICE \ --source . \ --clear-build-worker-pool WORKER_POOL
您需要进行如下替换:
- 将 SERVICE 替换为您的服务名称。
- 将 WORKER_POOL 替换为您要删除的专用池的名称。