本頁說明如何使用單一 gcloud CLI 指令,直接從原始碼將新的工作站集區或工作站集區修訂版本部署到 Cloud Run,方法是使用 gcloud beta run worker-pools deploy 搭配 --source 旗標。
gcloud beta run worker-pools deploy 後,就不必再執行 gcloud builds submit 指令。
請注意,來源部署作業會使用 Artifact Registry 儲存建構的容器。如果專案在您要部署的區域中,還沒有名為 cloud-run-source-deploy 的 Artifact Registry 存放區,這項功能會自動建立名為 cloud-run-source-deploy 的 Artifact Registry 存放區。
如果原始碼目錄中含有 Dockerfile,系統會使用該 Dockerfile 建構上傳的原始碼。如果原始碼目錄中沒有 Dockerfile,Google Cloud 的 Buildpacks 會自動偵測您使用的語言,並擷取程式碼的依附元件,使用 Google 管理的安全基礎映像檔,建立可部署於正式環境的容器映像檔。
事前準備
- 請確認您已按照設定頁面所述,為 Cloud Run 設定新專案。
-
啟用 Cloud Run Admin API。
啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。啟用 Cloud Run Admin API 後,系統會自動建立 Compute Engine 預設服務帳戶。
必要的角色
如要從來源部署,您或管理員必須授予部署者帳戶下列 IAM 角色。
按一下即可查看部署者帳戶的必要角色
如要取得從來源建構及部署所需的權限,請要求管理員授予您下列 IAM 角色:
- 專案的 Cloud Run 原始碼開發者 (
roles/run.sourceDeveloper) - 專案的服務使用情形消費者 (
roles/serviceusage.serviceUsageConsumer) - Cloud Run 服務身分上的服務帳戶使用者 (
roles/iam.serviceAccountUser)
如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 工作人員集區與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。
支援的語言
除了使用 Dockerfile 的來源,從來源部署也支援下列語言,並使用 Google Cloud 的 Buildpacks:
- Go
- Node.js
- Python
- Java
- Kotlin
- Groovy
- Scala
- .NET
- Ruby
- PHP
進一步瞭解支援的語言版本。
從來源部署並建構
本節說明如何使用 Google Cloud 的 Buildpacks 和 Cloud Build,從原始碼自動建構容器映像檔,而不必在機器上安裝 Docker,或設定 Buildpacks 或 Cloud Build。
限制
- 從來源部署會使用 Artifact Registry 和 Cloud Build,因此這項功能僅適用於 Artifact Registry 支援的區域和 Cloud Build。
- 從來源部署是便利的功能,但無法完全自訂建構作業。如要進一步控管,請使用 Cloud Build 建構容器映像檔 (例如使用
gcloud builds submit),然後使用gcloud beta run worker-pools deploy --image等工具部署容器映像檔。 - 使用 Google Cloud 的建構套件從來源部署時,來源檔案的上次修改日期會設為 1980 年 1 月 1 日。這是 buildpack 的預設行為,旨在支援可重現的建構作業。視您的語言架構而定,這可能會影響瀏覽器端靜態檔案的快取。如果您的應用程式受到影響,Google 建議在應用程式中停用
etag和Last-ModifiedHTTP 標頭。 - 使用 Google Cloud 的建構套件從來源部署時,一律會使用
gcr.io/buildpacks/builder:latest。如果latest未提供偏好的語言或 OS 設定,請使用特定建構工具,透過偏好的建構工具建立應用程式映像檔。 您可以使用 Kotlin 和其他 JVM 語言 (例如 Java),從來源部署工作站集區。使用的語言必須符合下列規則:
- 您可以使用 Maven 或 Gradle 建構應用程式。
- 建構檔案包含產生類別所需的所有外掛程式。
使用建構作業部署前
從來源部署並建構之前,請先完成下列事項:
請按照「事前準備」中的步驟操作。
-
啟用 Cloud Build API。
啟用 API 時所需的角色
如要啟用 API,您需要服務使用情形管理員 IAM 角色 (
roles/serviceusage.serviceUsageAdmin),其中包含serviceusage.services.enable權限。瞭解如何授予角色。
必要的角色
如要透過建構程序從來源部署,您或系統管理員必須將下列 IAM 角色授予 Cloud Build 服務帳戶。
按一下即可查看 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 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。
使用建構作業部署
如要透過原始碼部署:
-
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 主控台底部會開啟一個 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。
變更為來源目錄。來源目錄會使用 Dockerfile (如有),但這並非必要。
建立及部署工作站集區:
將gcloud beta run worker-pools deploy WORKERPOOL --source .
WORKERPOOL替換為工作站集區的名稱。系統提示安裝必要 API 時,請輸入
y。這項操作只需要為專案執行一次。如果尚未如設定頁面所述,為平台和區域設定預設值,請提供這些資訊,回應其他提示。等待建構及部署作業完成。完成後,Cloud Run 會顯示成功訊息。
自動從來源建構
為避免本機來源中出現未納入版本的變更,Google 建議您在變更推送至 Git 存放區時,自動進行部署。為簡化這項作業,您可以將持續部署功能連結並設定至 Cloud Run 工作人員集區。將 GitHub 存放區連結至 Cloud Run 後,您就能設定建構作業並部署存放區,不必編寫 Dockerfile 或建構檔案。
後續步驟
部署 Cloud Run worker 集區後,您可以執行下列作業: