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