設定建構工作站集區 (來源部署)

將原始碼部署至 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 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 集區功能。

一般來說,請按照下列步驟設定私人集區:

  1. 建立私人工作站集區。請參閱建立及管理私人集區
  2. 設定 VPC Service Controls 範圍。請參閱「使用 VPC Service Controls」。

  3. 如果私人工作站集區位於與 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

    取代:

  4. 使用私人集區,從來源部署至建構服務:

    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 標記,並附上函式進入點。