從原始碼部署工作站集區

本頁說明如何使用單一 gcloud CLI 指令,直接從原始碼將新的工作站集區或工作站集區修訂版本部署到 Cloud Run,gcloud beta run worker-pools deploy並搭配 --source 旗標。

在幕後,這項指令會使用 Google Cloud 的 Buildpacks 和 Cloud Build,從您的原始碼自動建構容器映像檔,而不必在機器上安裝 Docker,或設定 Buildpacks 或 Cloud Build。也就是說,上述單一指令會執行原本需要 gcloud builds submitgcloud beta run worker-pools deploy 指令才能完成的作業。

請注意,來源部署會使用 Artifact Registry 儲存建構的容器。如果專案在您要部署的區域中,還沒有名為 cloud-run-source-deploy 的 Artifact Registry 存放區,這項功能會自動建立名為 cloud-run-source-deploy 的 Artifact Registry 存放區。

如果來源碼目錄中存在 Dockerfile,系統會使用該 Dockerfile 建構上傳的來源碼。如果原始碼目錄中沒有 Dockerfile,Google Cloud 的 Buildpacks 會自動偵測您使用的語言,並擷取程式碼的依附元件,使用 Google 管理的安全基礎映像檔,製作可用於正式環境的容器映像檔。

支援的語言

除了含有 Dockerfile 的來源,從來源部署也支援下列語言:

  • Go
  • Node.js
  • Python
  • Java
  • Kotlin
  • Groovy
  • Scala
  • .NET
  • Ruby
  • PHP
進一步瞭解支援的語言版本

這項功能的限制

  • 從來源部署功能會使用 Artifact Registry 和 Cloud Build,因此這項功能僅適用於 Artifact Registry 支援的區域Cloud Build
  • 從來源部署是便利功能,無法完全自訂建構作業。如要進一步控管,請使用 Cloud Build 建構容器映像檔 (例如使用 gcloud builds submit),然後使用 gcloud beta run workerpools deploy --image 等工具部署容器映像檔
  • 使用 Google Cloud 的建構包從來源部署時,來源檔案的上次修改日期會設為 1980 年 1 月 1 日。這是建構套件的預設行為,旨在支援可重現的建構作業。視您的語言架構而定,這可能會影響瀏覽器端靜態檔案的快取。如果您的應用程式受到影響,Google 建議在應用程式中停用 etagLast-Modified HTTP 標頭。
  • 使用 Google Cloud 的建構套件從來源部署時,一律會使用 gcr.io/buildpacks/builder:latest。 如果 latest 未提供您偏好的語言或 OS 設定,請使用特定建構工具,透過偏好的建構工具建立應用程式映像檔。
  • 您可以使用 Kotlin 和其他 JVM 語言 (例如 Java) 從來源部署工作站集區。使用的語言必須符合下列規則:

    • 您可以使用 Maven 或 Gradle 建構應用程式。
    • 建構檔案包含產品類別所需的所有外掛程式。

事前準備

  • 請確認您已按照設定頁面所述,為 Cloud Run 設定新專案。
  • 啟用 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 Builder (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 用戶端程式庫) 介接,請參閱服務身分設定指南。如要進一步瞭解如何授予角色,請參閱部署權限管理存取權

從來源部署

如要透過原始碼部署:

  1. 變更為來源目錄。請注意,來源目錄不需要 Dockerfile,但如果存在 Dockerfile,系統就會使用。

  2. 建構及部署工作站集區:

    gcloud beta run workerpools deploy WORKERPOOL --source .
    WORKERPOOL 替換為您要為工作站集區指定的名稱。
  3. 系統會提示您安裝必要 API,請在收到提示時輸入 y。這項操作只需要為專案執行一次。如果尚未如設定頁面所述,為平台和區域設定預設值,請提供這些資訊,回應其他提示。

  4. 等待建構及部署作業完成。完成後,Cloud Run 會顯示成功訊息。

自動從來源建構

為避免本機來源中出現未納入版本的變更,Google 建議您在變更推送至 Git 存放區時,自動部署這些變更。為簡化這項作業,您可以將持續部署功能連結至 Cloud Run 工作站集區並進行設定。將 GitHub 存放區連結至 Cloud Run 後,您就能設定建構作業並部署存放區,不必編寫 Dockerfile 或建構檔案。

後續步驟

部署 Cloud Run 工作站集區後,您可以執行下列操作: