本頁說明如何將容器映像檔部署到新的 Cloud Run 工作站集區,或現有 Cloud Run 工作站集區的新修訂版本。
工作站集區是專為執行持續性背景工作而設計的 Cloud Run 資源。與 Cloud Run 服務不同,工作站集區沒有負載平衡端點/網址,也不支援自動調度資源。
如需部署新工作站集區的逐步操作範例,請參閱部署範例工作站集區快速入門導覽課程。
必要的角色
如要取得部署 Cloud Run 工作人員集區所需的權限,請要求管理員授予下列 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 建立。
控制台
前往 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:要部署至的工作站集區名稱。如果工作站集區尚不存在,這項指令會在部署期間建立工作站集區。您可以完全省略這個參數,但這樣系統會提示您輸入工作站集區名稱。工作人員集區名稱不得超過 49 個字元,且每個區域和專案都必須使用不重複的名稱,也不得與專案中的現有服務名稱相同。
- IMAGE_URL:參照包含工作站集區的容器映像檔,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
。請注意,如果未提供--image
標記,部署指令會嘗試從原始碼部署。
等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息,以及已部署工作站集區的修訂版本資訊。
如要部署到「不是」透過
run/region
gcloud
屬性設定的位置,請使用以下指令: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
。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
resource "google_cloud_run_v2_worker_pool" "default" {
name = "WORKER_POOL"
location = "REGION"
launch_stage = "BETA"
template {
containers {
image = "IMAGE_URL"
}
}
}
更改下列內容:
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 執行操作:
控制台
前往 Google Cloud 控制台的 Cloud Run:
從選單中選取「Worker pools」(工作站集區),選取要更新的工作站集區,然後按一下「Edit and deploy new revision」(編輯並部署新的修訂版本),顯示「Deploy worker pool revision」(部署工作站集區修訂版本)表單。
如有需要,請指定要部署的新容器映像檔網址。
視需要設定容器。
視需要更新工作站集區的執行個體數量。
如有需要,請按一下「容器、磁碟區、網路與安全性」,在適當的分頁中設定其他選用設定:
更新工作站集區完畢後,請按一下「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:要部署至的工作站集區名稱。如果工作站集區尚不存在,這項指令會在部署期間建立工作站集區。您可以完全省略這個參數,但這樣系統會提示您輸入工作站集區名稱。工作人員集區名稱不得超過 49 個字元,且每個區域和專案都必須使用不重複的名稱,也不得與專案中的現有服務名稱相同。
- IMAGE_URL:參照包含工作站集區的容器映像檔,例如
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
。請注意,如果未提供--image
標記,部署指令會嘗試從原始碼部署。
系統會自動為新修訂版本指派修訂版本後置字元。如要提供自己的修訂版本尾碼,請使用 gcloud CLI 參數
--revision-suffix
。等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息,以及已部署工作站集區的修訂版本資訊。
變更設定檔。
套用 Terraform 設定:
terraform apply
輸入
yes
,確認要套用所述動作。
Terraform
請確認您已按照「部署新的工作站集區」範例的說明設定 Terraform。
從其他 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 工作站集區的專案。
部署其他登錄檔的映像檔
如要部署未儲存在 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 或 Terraform 將多個容器部署至 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 \ --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_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 會顯示成功訊息。
- 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:補充容器映像檔的參照。
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 功能
如果部署作業有多個容器,且您有需要先啟動某些容器的依附元件,可以指定部署作業中的容器啟動順序。
如果您的容器依附於其他容器,則必須在部署作業中使用 healthchecks。使用健康狀態檢查時,Cloud Run 會按照容器啟動順序,先驗證每個容器的健康狀態,再啟動下一個容器。如果沒有健康狀態檢查,Cloud Run 會嘗試啟動所有容器,即使容器所依附的容器尚未執行或啟動失敗也一樣。
單一執行個體中的多個容器可以存取共用的記憶體內磁碟區,每個容器都能透過您建立的掛接點存取該磁碟區。
後續步驟
部署新的工作站集區後,您可以執行下列作業: