將原始碼部署至 Cloud Run 時,該原始碼會儲存在 Cloud Storage 值區中。接著,Cloud Build 會自動將您的程式碼建構為容器映像檔,並將該映像檔推送至映像檔登錄。每個建構作業都會在專屬的工作站上執行。Cloud Run 會在部署時匯入已建構的映像檔。
如果您想自訂 Cloud Build 用於 VPC Service Controls 安全建構內容的建構工作站集區,請自訂工作站集區。本頁面適用於使用 Google Cloud CLI 從來源部署 Cloud Run 服務或函式,以及設定 Cloud Build 使用的私人集區的平台開發人員。建構 worker pool 的 gcloud CLI 標記支援來源部署 (--source
),但不支援容器映像檔部署 (--image
)。
事前準備
啟用 Cloud Run Admin API 和 Cloud Build API:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
啟用 Cloud Run Admin API 後,系統會自動建立 Compute Engine 預設服務帳戶。
必要的角色
您或管理員必須將下列 IAM 角色授予部署者帳戶和 Cloud Build 服務帳戶。
按一下即可查看部署者帳戶的必要角色
如要取得從原始碼建構及部署所需的權限,請管理員授予您下列 IAM 角色:
- 在專案中使用 Cloud Run 原始碼開發人員 (
roles/run.sourceDeveloper
) - 專案中的服務使用情形消費者 (
roles/serviceusage.serviceUsageConsumer
) - Cloud Run 服務身分中的服務帳戶使用者 (
roles/iam.serviceAccountUser
)
按一下即可查看 Cloud Build 服務帳戶的必要角色
除非您覆寫這項行為,否則 Cloud Build 會自動使用 Compute Engine 預設服務帳戶做為預設 Cloud Build 服務帳戶,以便建構您的原始碼和 Cloud Run 資源。如要讓 Cloud Build 建構來源,請要求管理員將 Cloud Run 建構工具 (roles/run.builder
) 授予專案的 Compute Engine 預設服務帳戶:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
請將 PROJECT_NUMBER
替換為您的 Google Cloud專案編號,並將 PROJECT_ID
替換為您的 Google Cloud專案 ID。如需查看如何找出專案 ID 和專案編號的詳細操作說明,請參閱「建立及管理專案」。
將 Cloud Run 建構工具角色授予 Compute Engine 預設服務帳戶後,需要幾分鐘的時間才能套用。
如需與 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 私人 worker 集區功能。
一般來說,請按照下列步驟設定私人集區:
- 建立私人工作站集區。請參閱建立及管理私人集區。
設定 VPC Service Controls 範圍。請參閱「使用 VPC Service Controls」。
如果私人工作站集區位於與 Cloud Run 服務不同的專案中,您必須將 Cloud Build WorkerPool User (
cloudbuild.workerPoolUser
) 角色授予 Cloud Run Service Agent (service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com
),讓 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
如要在從原始碼部署時指定要建構的私人集區,請使用
--build-worker-pool
標記:gcloud run deploy SERVICE \ --source . \ --build-worker-pool WORKER_POOL
取代:
- SERVICE 改為您的服務名稱。
- 將 WORKER_POOL 替換為私人集區的名稱。
如果您要部署函式,請在原始碼中加入
--function
標記,並附上函式進入點。
刪除建構 worker 集區
您可以刪除現有服務的建構工作站集區。
gcloud
如要清除來源部署作業的 Cloud Build 工作站集區,請使用 --clear-build-worker-pool
標記:
gcloud run deploy SERVICE \ --source . \ --clear-build-worker-pool WORKER_POOL
取代:
- SERVICE 改為您的服務名稱。
- WORKER_POOL 與您要刪除的私人集區名稱。
如果您要部署函式,請在原始碼中加入 --function
標記,並附上函式進入點。