本頁說明如何將容器映像檔部署到新的 Cloud Run 工作站集區,或現有 Cloud Run 工作站集區的新修訂版本。
工作站集區是專為執行持續性背景工作而設計的 Cloud Run 資源。與 Cloud Run 服務不同,工作站集區沒有負載平衡端點/網址,也不支援自動調度資源。
如需部署新工作站集區的逐步操作範例,請參閱部署範例工作站集區快速入門導覽課程。
必要的角色
如要取得部署 Cloud Run worker 集區所需的權限,請要求管理員授予您下列 IAM 角色:
- Cloud Run 開發人員 (
roles/run.developer) 在 Cloud Run worker 集區上 - 服務帳戶使用者 (
roles/iam.serviceAccountUser) ,即工作站集區用來與其他 Google Cloud 服務互動的身分 - Artifact Registry 讀取者 (
roles/artifactregistry.reader) 部署容器映像檔的 Artifact Registry 存放區
如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 工作人員集區與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。
支援的容器登錄和映像檔
您可以直接使用儲存在 Artifact Registry 的容器映像檔,或是來自 Docker Hub 或 GitHub Container Registry 的公開映像檔。Google 建議使用 Artifact Registry。 GitHub Container Registry 和 Docker Hub 映像檔的公開映像檔最多會快取一小時。
如要使用其他公開或私人註冊資料庫 (例如 JFrog Artifactory 或 Nexus) 的容器映像檔,或是 GitHub Container Registry 的私人映像檔,請設定 Artifact Registry 遠端存放區。
只有在部署熱門容器映像檔 (例如 Docker 官方映像檔或 Docker 贊助的 OSS 映像檔) 時,才應考慮使用 Docker Hub。如要提高可用性,Google 建議使用 Artifact Registry 遠端存放區部署這些 Docker Hub 或 GitHub Container Registry 映像檔。
從 Docker Hub 或 Artifact Registry 遠端存放區 (使用外部登錄檔) 部署時,Cloud Run 不支援大於 9.9 GB 的容器映像檔層。
部署工作站集區
您可以透過下列方式部署工作站集區:
部署新的工作站集區
您可以使用標記 (例如 us-docker.pkg.dev/my-project/container/my-image:latest) 或完全相符的摘要 (例如 us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...) 指定容器映像檔。
首次部署工作站集區時,會建立第一個修訂版本。請注意修訂版本無法變更。如果您透過容器映像檔標記進行部署,這會變成摘要,而修訂版本一律會提供這個特別的摘要。
請按照指示使用 Google Cloud 控制台、Google Cloud CLI、Terraform 或 REST API:
控制台
前往 Google Cloud 控制台的 Cloud Run:
從選單中選取「工作站集區」,然後按一下「部署容器」,顯示「建立工作站集區」表單。
按一下「容器、網路、安全性」,在適當的分頁中設定其他選用設定:
設定完工作站集區後,請按一下「建立」,將映像檔部署到 Cloud Run,然後等待部署作業完成。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。 Google Cloud Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。
如要部署工作站集區容器映像檔,請按照下列步驟操作:
請執行下列指令:
gcloud run worker-pools deploy WORKER_POOL --image IMAGE_URL
更改下列內容:
- WORKER_POOL:要部署至的工作站集區名稱。如果工作站集區尚不存在,這項指令會在部署期間建立工作站集區。您可以完全省略這個參數,但這樣系統會提示您輸入工作站集區名稱。工作者集區名稱不得超過 49 個字元,且每個區域和專案都必須使用不重複的名稱,也不得與專案中的現有服務名稱相同。
- IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。請注意,如果未提供--image標記,部署指令會嘗試從原始碼部署。
等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息,以及已部署工作站集區的修訂版本資訊。
如要部署到「不是」透過
run/regiongcloud屬性設定的位置,請使用以下指令:gcloud run worker-pools deploy WORKER_POOL --region REGION
YAML
您可以將工作站集區規格儲存在 YAML 檔案中,並使用 gcloud CLI 部署。
建立新的
worker-pool.yaml檔案,並加入以下內容:apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL spec: template: spec: containers: - image: IMAGE
更改下列內容:
- WORKER_POOL:Cloud Run worker 集區的名稱。
- IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。
您也可以指定更多設定,例如環境變數或記憶體限制。
使用下列指令部署新的工作站集區:
gcloud run worker-pools replace worker-pool.yaml如果存在
worker-pool.yaml檔案,gcloud run worker-pools replace指令預設會使用該檔案。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
}
}
}
更改下列內容:
- WORKER_POOL:工作站集區的名稱。
- REGION: Google Cloud 區域,例如
europe-west1。 - IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。
REST API
如要部署新的 worker 集區,請將 POST HTTP 要求傳送至 Cloud Run Admin API worker 集區 create 端點。
例如使用 curl:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST \ -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/workerPools?workerPoolId=WORKER_POOL
更改下列內容:
- ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶須具備部署服務的 IAM 權限。舉例來說,如果您已登入 gcloud,可以使用
gcloud auth print-access-token擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。 - IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。 - REGION: Google Cloud 區域,例如
europe-west1。 - PROJECT_ID:專案 ID。 Google Cloud
- WORKER_POOL:工作站集區的名稱。
Cloud Run 位置
Cloud Run 具有「地區性」,這表示執行 Cloud Run 服務的基礎架構位於特定地區,並由 Google 代管,可為該地區內所有區域提供備援功能。
選擇 Cloud Run 服務的執行地區時,請將延遲時間、可用性或耐用性需求做為主要考量。一般而言,您可以選擇最靠近使用者的區域,但您應考量 Cloud Run 服務所使用的其他 Google Cloud產品位置。使用分散在不同位置的 Google Cloud 產品,可能會影響服務的延遲時間和費用。
Cloud Run 可在下列地區使用:
採用級別 1 定價
asia-east1(臺灣)asia-northeast1(東京)asia-northeast2(大阪)asia-south1(印度孟買)asia-southeast3(曼谷)europe-north1(芬蘭)低二氧化碳排放2
europe-north2(斯德哥爾摩)二氧化碳排放量低
europe-southwest1(馬德里)二氧化碳排放量低
europe-west1(比利時)二氧化碳排放量低
europe-west4(荷蘭)二氧化碳排放量低
europe-west8(米蘭)europe-west9(巴黎)低二氧化碳排放2
me-west1(特拉維夫)northamerica-south1(墨西哥)us-central1(愛荷華州)二氧化碳排放量低
us-east1(南卡羅來納州)us-east4(北維吉尼亞州)us-east5(哥倫布)us-south1(達拉斯)二氧化碳排放量低
us-west1(奧勒岡州)二氧化碳排放量低
採用級別 2 定價
africa-south1(約翰尼斯堡)asia-east2(香港)asia-northeast3(韓國首爾)asia-southeast1(新加坡)asia-southeast2(雅加達)asia-south2(印度德里)australia-southeast1(雪梨)australia-southeast2(墨爾本)europe-central2(波蘭華沙)europe-west10(柏林)europe-west12(杜林)europe-west2(英國倫敦)二氧化碳排放量低
europe-west3(德國法蘭克福)europe-west6(瑞士蘇黎世)二氧化碳排放量低
me-central1(杜哈)me-central2(達曼)northamerica-northeast1(蒙特婁)二氧化碳排放量低
northamerica-northeast2(多倫多)二氧化碳排放量低
southamerica-east1(巴西聖保羅)二氧化碳排放量低
southamerica-west1(智利聖地牙哥)二氧化碳排放量低
us-west2(洛杉磯)us-west3(鹽湖城)us-west4(拉斯維加斯)
如果您已建立 Cloud Run 服務,即可在 Google Cloud 控制台的 Cloud Run 資訊主頁中查看區域。
部署現有工作站集區的新修訂版本
請注意,即使容器映像檔並無更動,變更工作站集區的設定也會導致建立新的修訂版本。每一個建立的修訂版本都不可變更。
部署時,Cloud Run 會匯入容器映像檔。 只要修訂版本使用容器映像檔,Cloud Run 就會保留該副本。
請按照下列操作說明,使用 Google Cloud 控制台、Google Cloud CLI、Terraform 或 REST API 執行操作:
控制台
前往 Google Cloud 控制台的 Cloud Run:
從選單中選取「Worker pools」(工作站集區),選取要更新的工作站集區,然後按一下「Edit and deploy new revision」(編輯並部署新的修訂版本),顯示「Deploy worker pool revision」(部署工作站集區修訂版本)表單。
如有需要,請指定要部署的新容器映像檔網址。
視需要設定容器。
如有需要,請更新工作站集區的執行個體數量。
如有需要,請按一下「Containers, Networking, Security」(容器、網路、安全性),在適當的分頁標籤中設定其他選用設定:
更新工作站集區後,請按一下「部署」。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。 Google Cloud Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。
如何部署容器映像檔:
執行下列指令:
gcloud run worker-pools deploy WORKER_POOL --image IMAGE_URL
更改下列內容:
- WORKER_POOL:要部署至的工作站集區名稱。如果工作站集區尚不存在,這項指令會在部署期間建立工作站集區。您可以完全省略這個參數,但這樣系統會提示您輸入工作站集區名稱。工作者集區名稱不得超過 49 個字元,且每個區域和專案都必須使用不重複的名稱,也不得與專案中的現有服務名稱相同。
- IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。請注意,如果未提供--image標記,部署指令會嘗試從原始碼部署。
系統會自動為新修訂版本指派修訂版本後置字元。如要提供自己的修訂版本尾碼,請使用 gcloud CLI 參數
--revision-suffix。等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息,以及已部署工作站集區的修訂版本資訊。
YAML
下載工作站集區 YAML 設定:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
變更設定檔。
使用下列指令更新工作站集區:
gcloud run worker-pools replace worker-pool.yaml
如果存在
worker-pool.yaml檔案,gcloud run worker-pools replace指令預設會使用該檔案。
Terraform
請確認您已按照「部署新的工作站集區」範例設定 Terraform。
變更設定檔。
套用 Terraform 設定:
terraform apply輸入
yes,確認要套用所述動作。
REST API
如要部署新的 worker 集區,請將 PATCH HTTP 要求傳送至 Cloud Run Admin API worker 集區端點。
如要從範本建立新的修訂版本,即使系統未偵測到先前部署的修訂版本有任何變更,請將查詢參數 forceNewRevision 設為 true。
例如使用 curl:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X PATCH \ -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/workerPools/WORKER_POOL>?forceNewRevision=true
更改下列內容:
- ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶須具備部署服務的 IAM 權限。舉例來說,如果您已登入 gcloud,可以使用
gcloud auth print-access-token擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。 - IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。 - REGION: Google Cloud 區域,例如
europe-west1。 - PROJECT_ID: Google Cloud 專案 ID。
- WORKER_POOL:要部署的工作站集區名稱。
使用模擬測試驗證設定
您可以使用 --dry-run 旗標驗證工作站集區設定,不必部署或保留變更。
指定 --dry-run 旗標時,指令會執行下列動作:
- 驗證設定。
- 如果您要從來源部署,可略過建構程序。
- 列印驗證成功訊息。
如要驗證工作站集區的部署作業,請按照下列步驟操作:
gcloud beta run worker-pools deploy WORKER_POOL \ --image IMAGE_URL \ --dry-run
更改下列內容:
- WORKER_POOL:要部署的工作站集區名稱。
- IMAGE_URL:容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
從其他 Google Cloud 專案部署映像檔
如要從其他專案部署映像檔,您或管理員必須將必要的身分與存取權管理角色授予部署者帳戶和 Cloud Run 服務代理程式。 Google Cloud
如要瞭解部署者帳戶的必要角色,請參閱「必要角色」。
如要授予 Cloud Run 服務代理程式必要角色,請參閱下列操作說明:
在 Google Cloud 控制台中,開啟 Cloud Run 工作站集區的專案。
選取「包含 Google 提供的角色授權」。
複製 Cloud Run 服務代理程式的電子郵件地址。 後置字串為 @serverless-robot-prod.iam.gserviceaccount.com。
開啟擁有您要使用之 Container Registry 的專案。
按一下「新增」即可新增主體。
在「新增主體」欄位,貼上先前複製的服務帳戶電子郵件。
在「請選擇角色」下拉式選單中,如果您使用 Container Registry,請選取「Storage」->「Storage Object Viewer」角色。如果您使用 Artifact Registry,請選取「Artifact Registry」->「Artifact Registry Reader」角色。
將容器映像檔部署到含有 Cloud Run 工作站集區的專案。
部署其他登錄檔的映像檔
如要部署未儲存在 Artifact Registry 或 Docker Hub 中的公開/私人容器映像檔,或 GitHub Container Registry 中的非公開映像檔,請設定 Artifact Registry 遠端存放區。
Artifact Registry 遠端存放區可讓您:
- 部署任何公開容器映像檔。
- 從需要驗證的私人存放區部署容器映像檔,例如 JFrog Artifactory 或 Nexus。
如果無法使用 Artifact Registry 遠端存放區,您可以先使用 docker push 將容器映像檔部署至 Cloud Run,暫時將映像檔提取並推送至 Artifact Registry。Cloud Run 會在部署期間匯入容器映像檔,之後您就可以從 Artifact Registry 刪除該映像檔。
將多個容器 (Sidecar) 部署至工作站集區
在有 Sidecar 的 Cloud Run 部署作業中,有一個主要工作站集區容器,以及一或多個 Sidecar 容器。側車可以透過 localhost 連接埠,彼此通訊及與工作站集區容器通訊。本機主機通訊埠會因使用的容器而異。
每個執行個體最多可部署 10 個容器,包括工作站集區容器。執行個體中的所有容器共用相同的網路命名空間,也可以使用記憶體內共用磁碟區共用檔案。
您可以建立自訂機構政策,規定所有部署作業都必須使用特定 Sidecar。
部署含有 Sidecar 容器的 worker 集區
請按照下列操作說明,使用 Google Cloud CLI、YAML 或 Terraform,將多個容器部署至 Cloud Run worker 集區:
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。 Google Cloud Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。
如要將多個容器部署至工作站集區,請執行下列指令:
gcloud run worker-pools deploy WORKER_POOL \ --container WORKER_POOL_CONTAINER_NAME \ --image='WORKER_POOL_IMAGE' \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE'
更改下列內容:
- WORKER_POOL:要部署至的工作站集區名稱。如果省略這個參數,系統會提示您輸入工作站集區名稱。
- WORKER_POOL_CONTAINER_NAME:工作站集區容器的名稱。
- IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。 - SIDECAR_CONTAINER_NAME:Sidecar 容器的名稱,例如
sidecar。 - SIDECAR_IMAGE:邊車容器映像檔的參照。
如要在部署指令中設定每個容器,請在
container參數後提供每個容器的設定,例如:gcloud run worker-pools deploy WORKER_POOL \ --container CONTAINER_1_NAME \ --image='WORKER_POOL_IMAGE' \ --set-env-vars=KEY=VALUE \ --container SIDECAR_CONTAINER_NAME \ --image='SIDECAR_IMAGE' \ --set-env-vars=KEY_N=VALUE_N
等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息。
YAML
如要建立新的工作站集區,請略過這個步驟。 如要更新現有工作站集區,請下載 YAML 設定:
gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
以下範例包含 YAML 設定:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL spec: template: spec: containers: - name: CONTAINER_NAME image: IMAGE_URL containers: - name: SIDECAR_CONTAINER_NAME image: SIDECAR_IMAGE_URL
更改下列內容:
- WORKER_POOL:Cloud Run worker 集區的名稱。
- CONTAINER_NAME:工作站集區容器的名稱。
- IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest - SIDECAR_CONTAINER_NAME:邊車容器的名稱,例如
sidecar。 - SIDECAR_CONTAINER_IMAGE:邊車容器映像檔的參照。
使用下列指令建立或更新工作站集區:
gcloud run worker-pools replace worker-pool.yaml
如果存在
worker-pool.yaml檔案,gcloud run worker-pools replace指令預設會使用該檔案。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
template {
containers {
name = "CONTAINER_NAME"
image = "IMAGE_URL"
}
containers {
name = "SIDECAR_CONTAINER_NAME"
image = "SIDECAR_IMAGE_URL"
}
}
}
更改下列內容:
- WORKER_POOL:工作站集區的名稱。
- REGION: Google Cloud 區域,例如
europe-west1。 - CONTAINER_NAME:容器名稱。
- IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。 - SIDECAR_CONTAINER_NAME:邊車容器的名稱。
- SIDECAR_IMAGE_URL:邊車容器映像檔的參照。
部署作業可用的重要 Sidecar 功能
如果部署作業有多個容器,且您有需要先啟動某些容器的依附元件,可以指定部署作業中的容器啟動順序。
如果容器依附於其他容器,您必須在部署作業中使用健康狀態檢查。使用健康狀態檢查時,Cloud Run 會按照容器啟動順序,先驗證每個容器的健康狀態,再啟動下一個容器。如果沒有健康檢查,Cloud Run 會嘗試啟動所有容器,即使容器所依附的容器尚未執行或啟動失敗也一樣。
單一執行個體中的多個容器可以存取共用的記憶體內磁碟區,每個容器都能透過您建立的掛接點存取該磁碟區。
後續步驟
部署新的工作站集區後,您可以執行下列作業: