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

將原始碼部署至 Cloud Run 時,該原始碼會儲存在 Cloud Storage bucket 中。Cloud Build 接著會自動將程式碼建構為容器映像檔,並將該映像檔推送至映像檔登錄檔。每個建構作業都會在專屬工作站上執行。部署時,Cloud Run 會匯入建構的映像檔。

如要自訂 Cloud Build 用於 VPC Service Controls 安全建構環境的建構工作站集區,請自訂工作站集區。如果您是平台開發人員,並使用 Google Cloud CLI 從來源部署 Cloud Run 服務函式,以及設定 Cloud Build 使用的私人集區,本頁面內容就適合您。gcloud CLI 標記的建構工作站集區支援來源部署作業 (--source),但不支援容器映像檔部署作業 (--image)。

事前準備

  • Enable the Cloud Run Admin API and Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

    啟用 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 替換為專案編號,並將 PROJECT_ID 替換為專案 ID。 Google CloudGoogle Cloud如需如何找出專案 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 私人工作站集區功能。

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

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

  3. 如果私人工作站集區與 Cloud Run 服務位於不同專案,您需要授予 Cloud Run 服務代理人 (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。詳情請參閱「在私人集區中執行建構作業」。
  4. 使用私人集區,將服務從來源部署至建構作業:

    gcloud

    如要指定從原始碼部署時要建構的私人集區,請使用 --build-worker-pool 標記:

    gcloud run deploy SERVICE \
        --source . \
        --build-worker-pool WORKER_POOL

    取代:

    • SERVICE 改為您的服務名稱。
    • WORKER_POOL 替換為私人集區的名稱。

    如要部署函式,請加入 --function 標記,並提供原始碼中的函式進入點。

刪除建構工作站集區

您可以刪除現有服務的建構工作站集區。

gcloud

如要清除來源部署作業的 Cloud Build 工作站集區,請使用 --clear-build-worker-pool 標記:

gcloud run deploy SERVICE \
    --source . \
    --clear-build-worker-pool WORKER_POOL

取代:

  • SERVICE 改為您的服務名稱。
  • WORKER_POOL,其中 WORKER_POOL 是要刪除的私人集區名稱。

如要部署函式,請加入 --function 標記,並提供原始碼中的函式進入點。