本頁說明如何將容器映像檔部署到新的 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 的容器映像檔。Google 建議使用 Artifact Registry。 Docker Hub 映像檔最多會快取一小時。
如要使用其他公開或私人註冊資料庫 (例如 JFrog Artifactory、Nexus 或 GitHub Container Registry) 的容器映像檔,請設定 Artifact Registry 遠端存放區。
只有在部署熱門容器映像檔 (例如 Docker 官方映像檔或 Docker 贊助的 OSS 映像檔) 時,才應考慮使用 Docker Hub。 如要提高可用性,Google 建議使用 Artifact Registry 遠端存放區部署這些 Docker Hub 映像檔。
從 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
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如要部署工作站集區容器映像檔,請按照下列步驟操作:
請執行下列指令:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
更改下列內容:
- WORKER_POOL:要部署至的工作站集區名稱。如果工作站集區尚不存在,這項指令會在部署期間建立工作站集區。您可以完全省略這個參數,但這樣系統會提示您輸入 worker 集區名稱。工作人員集區名稱不得超過 49 個字元,且每個區域和專案都必須使用不重複的名稱,也不得與專案中的現有服務名稱相同。
- IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。請注意,如果您未提供--image標記,部署指令會嘗試從原始碼部署。
等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息,以及已部署工作站集區的修訂版本資訊。
如要部署到「不是」透過
run/regiongcloud屬性設定的位置,請使用以下指令:gcloud beta run worker-pools deploy WORKER_POOL --region REGION
- WORKER_POOL:工作站集區的名稱。
- REGION: Google Cloud 區域,例如
europe-west1。 - IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。 - 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:工作站集區的名稱。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
image = "IMAGE_URL"
}
}
}
更改下列內容:
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 '{"launchStage":"BETA",template: {containers: [{image: "IMAGE_URL"}]}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/workerPools?workerPoolId=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(印度孟買)europe-north1(芬蘭)二氧化碳排放量低
europe-north2(斯德哥爾摩)二氧化碳排放量低
europe-southwest1(馬德里)二氧化碳排放量低
europe-west1(比利時)二氧化碳排放量低
europe-west4(荷蘭)二氧化碳排放量低
europe-west8(米蘭)europe-west9(巴黎)二氧化碳排放量低
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」(部署工作站集區修訂版本) 表單。
如有需要,請指定要部署的新容器映像檔網址。
視需要設定容器。
視需要更新工作站集區的執行個體數量。
如有需要,請按一下「Container(s), Volumes, Networking, Security」,在適當的分頁標籤中設定其他選用設定:
更新工作站集區完畢後,請按一下「Deploy」。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如何部署容器映像檔:
執行下列指令:
gcloud beta run worker-pools deploy WORKER_POOL --image IMAGE_URL
更改下列內容:
- WORKER_POOL:要部署至的工作站集區名稱。如果工作站集區尚不存在,這項指令會在部署期間建立工作站集區。您可以完全省略這個參數,但這樣系統會提示您輸入 worker 集區名稱。工作人員集區名稱不得超過 49 個字元,且每個區域和專案都必須使用不重複的名稱,也不得與專案中的現有服務名稱相同。
- IMAGE_URL:包含工作站集區的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest。請注意,如果您未提供--image標記,部署指令會嘗試從原始碼部署。
系統會自動為新修訂版本指派修訂版本後置字元。如要提供自己的修訂版本尾碼,請使用 gcloud CLI 參數
--revision-suffix。等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息,以及已部署工作站集區的修訂版本資訊。
下載工作站集區 YAML 設定:
gcloud beta run worker-pools describe WORKER_POOL --format export > workerpool.yaml
變更設定檔。
使用下列指令更新工作站集區:
gcloud beta run worker-pools replace workerpool.yaml
變更設定檔。
套用 Terraform 設定:
terraform apply輸入
yes,確認要套用所述動作。- 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:您要部署至的工作站集區名稱。
YAML
Terraform
請確認您已按照「部署新的工作站集區」範例的說明設定 Terraform。
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 '{"launchStage":"BETA",template: {containers: [{image: "IMAGE_URL"}]}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/workerPools/WORKER_POOL>?forceNewRevision=true
更改下列內容:
從其他 Google Cloud 專案部署映像檔
如要從其他專案部署映像檔,您或管理員必須將必要的身分與存取權管理角色授予部署者帳戶和 Cloud Run 服務代理程式。 Google Cloud
如要瞭解部署者帳戶的必要角色,請參閱「必要角色」。
如要授予 Cloud Run 服務代理程式必要角色,請參閱下列操作說明:
在 Google Cloud 控制台中,開啟 Cloud Run 工作站集區的專案。
選取「包含 Google 提供的角色授予項目」。
複製 Cloud Run 服務代理程式的電子郵件地址。 後置字串為 @serverless-robot-prod.iam.gserviceaccount.com。
開啟擁有您要使用之 Container Registry 的專案。
按一下「新增」,新增主體。
在「新增主體」欄位中,貼上您先前複製的服務帳戶電子郵件地址。
在「Select a role」(請選擇角色) 下拉式選單中,如果您使用 Container Registry,請選取「Storage」(儲存空間) ->「Storage Object Viewer」(Storage 物件檢視者) 角色。如果您使用 Artifact Registry,請選取「Artifact Registry」->「Artifact Registry Reader」角色。
將容器映像檔部署到含有 Cloud Run worker 集區的專案。
部署其他登錄檔的映像檔
如要部署未儲存在 Artifact Registry 或 Docker Hub 的公開或私人容器映像檔,請設定 Artifact Registry 遠端存放區。
Artifact Registry 遠端存放區可讓您:
- 部署任何公開容器映像檔,例如 GitHub Container Registry (
ghcr.io)。 - 從需要驗證的私人存放區部署容器映像檔,例如 JFrog Artifactory 或 Nexus。
如果無法使用 Artifact Registry 遠端存放區,您可以先使用 docker push 將容器映像檔部署至 Cloud Run,暫時將映像檔提取並推送至 Artifact Registry。Cloud Run 會在部署期間匯入容器映像檔,之後您就可以從 Artifact Registry 刪除該映像檔。
將多個容器 (Sidecar) 部署至工作站集區
在含有 Sidecar 的 Cloud Run 部署作業中,有一個主要工作站集區容器,以及一或多個 Sidecar 容器。側車可以透過 localhost 連接埠,彼此通訊及與工作站集區容器通訊。本機主機通訊埠會因使用的容器而異。
每個執行個體最多可部署 10 個容器,包括工作站集區容器。執行個體中的所有容器共用相同的網路命名空間,也可以使用記憶體內共用磁碟區共用檔案。
您可以建立自訂機構政策,規定所有部署作業都必須使用特定 Sidecar。
部署含有 Sidecar 容器的服務
請按照下列操作說明,使用 Google Cloud CLI、YAML 或 Terraform,將多個容器部署至 Cloud Run worker 集區:
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如要將多個容器部署至工作站集區,請執行下列指令:
gcloud beta 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 beta 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 設定:
gcloud beta run worker-pools describe WORKER_POOL --format export > workerpool.yaml
以下範例包含 YAML 設定:
apiVersion: run.googleapis.com/v1 kind: WorkerPool metadata: name: WORKER_POOL annotations: run.googleapis.com/launch-stage: BETA 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 beta run worker-pools replace workerpool.yaml
- 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:補充容器映像檔的參照。
YAML
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
name = "CONTAINER_NAME"
image = "IMAGE_URL"
}
containers {
name = "SIDECAR_CONTAINER_NAME"
image = "SIDECAR_IMAGE_URL"
}
}
}
更改下列內容:
部署作業可用的重要 Sidecar 功能
如果部署作業有多個容器,且您有需要先啟動某些容器的依附元件,可以指定部署作業中的容器啟動順序。
如果容器依附於其他容器,您必須在部署作業中使用健康狀態檢查。使用健康狀態檢查時,Cloud Run 會按照容器啟動順序,先驗證每個容器的健康狀態,再啟動下一個容器。如果沒有健康狀態檢查,Cloud Run 會嘗試啟動所有容器,即使容器所依附的容器尚未執行或啟動失敗也一樣。
單一執行個體中的多個容器可以存取共用的記憶體內磁碟區,每個容器都能透過您建立的掛接點存取該磁碟區。
後續步驟
部署新的工作站集區後,您可以執行下列作業: