將工作站集區部署至 Cloud Run

本頁說明如何將容器映像檔部署到新的 Cloud Run 工作站集區,或現有 Cloud Run 工作站集區的新修訂版本。

工作站集區是專為非要求工作負載設計的 Cloud Run 資源。與 Cloud Run 服務不同,工作站集區具備下列功能:

  • 公開端點/網址
  • 公開輸入連接埠的規定
  • 以要求為準的自動調度資源

如需部署新工作站集區的逐步操作範例,請參閱部署範例工作站集區快速入門導覽課程

必要的角色

如要取得部署 Cloud Run 工作人員集區所需的權限,請要求管理員授予下列 IAM 角色:

如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱 Cloud Run IAM 角色Cloud Run IAM 權限。如果 Cloud Run 工作站集區與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。如要進一步瞭解如何授予角色,請參閱部署權限管理存取權

支援的容器登錄和映像檔

您可以直接使用儲存在 Artifact RegistryDocker 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 CLI。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 如要部署工作站集區容器映像檔,請按照下列步驟操作:

    1. 請執行下列指令:

      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 標記,部署指令會嘗試從原始碼部署
    2. 等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息,以及已部署工作站集區的修訂版本資訊。

      如要部署到「不是」透過 run/region gcloud 屬性設定的位置,請使用以下指令:

      gcloud beta run worker-pools deploy WORKER_POOL --region REGION

部署現有工作站集區的新修訂版本

請注意,即使容器映像檔並無更動,變更工作站集區的設定也會導致建立新的修訂版本。每一個建立的修訂版本都不可變更。

部署時,Cloud Run 會匯入容器映像檔。只要修訂版本使用容器映像檔,Cloud Run 就會保留該副本。

請按照下列指示使用 Google Cloud CLI:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 如何部署容器映像檔:

    1. 執行下列指令:

      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

    2. 等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息,以及已部署工作站集區的修訂版本資訊。

從其他 Google Cloud 專案部署映像檔

如要從其他專案部署映像檔,您或管理員必須將必要的身分與存取權管理角色授予部署者帳戶和 Cloud Run 服務代理程式。 Google Cloud

如要瞭解部署者帳戶的必要角色,請參閱必要角色

如要授予 Cloud Run 服務代理程式必要角色,請參閱下列操作說明:

  1. 在 Google Cloud 控制台中,開啟 Cloud Run 工作站集區的專案。

    前往「IAM」頁面

  2. 選取「包含 Google 提供的角色授權」

  3. 複製 Cloud Run 服務代理程式的電子郵件地址。 後置字串為 @serverless-robot-prod.iam.gserviceaccount.com

  4. 開啟擁有您要使用之 Container Registry 的專案。

    前往「IAM」頁面

  5. 按一下「新增」即可新增主體。

  6. 在「新增主體」欄位中,貼上您先前複製的服務帳戶電子郵件地址。

  7. 在「Select a role」(請選擇角色) 下拉式選單中,如果您使用 Container Registry,請選取「Storage」(儲存空間) ->「Storage Object Viewer」(Storage 物件檢視者) 角色。如果您使用 Artifact Registry,請選取「Artifact Registry」->「Artifact Registry Reader」角色。

  8. 將容器映像檔部署到含有 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 將多個容器部署至 Cloud Run 工作站集區:

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 如要將多個容器部署至工作站集區,請執行下列指令:

    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,並參照 Sidecar 容器映像檔。

    如要在部署指令中設定每個容器,請在 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
  3. 等待部署作業完成。成功完成後,Cloud Run 會顯示成功訊息。

部署作業可用的重要 Sidecar 功能

如果部署作業有多個容器,且您有需要先啟動某些容器的依附元件,則可以指定部署作業中的容器啟動順序

如果您的容器依附於其他容器,則必須在部署作業中使用 healthchecks。使用健康狀態檢查時,Cloud Run 會按照容器啟動順序,先驗證每個容器的健康狀態,再啟動下一個容器。如果沒有健康狀態檢查,Cloud Run 會嘗試啟動所有容器,即使容器所依附的容器尚未執行或啟動失敗也一樣。

單一執行個體中的多個容器可以存取共用的記憶體內磁碟區,每個容器都能透過您建立的掛接點存取該磁碟區。

後續步驟

部署新的工作站集區後,您可以執行下列作業: