將容器映像檔部署至 Cloud Run

本頁面說明如何將容器映像檔部署到新的 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...) 指定容器映像檔。

首次部署服務時會建立服務的第一個修訂版本。請注意修訂版本無法變更。如果您透過容器映像檔標記進行部署,這會變成摘要,而修訂版本一律會提供這個特別的摘要。

按一下分頁標籤,瞭解如何使用自選工具。

主控台

如何部署容器映像檔:

  1. 前往 Google Cloud 控制台的 Cloud Run 頁面:

    前往 Cloud Run

  2. 從選單中選取「服務」,然後按一下「部署容器」,顯示「建立服務」表單。

    1. 在表單中選取部署選項:

      1. 如要手動部署容器,請選取「透過現有的容器映像檔部署單一修訂版本」,並指定容器映像檔。

      2. 如要自動執行持續部署作業,請選取「Continuously deploy new revisions from a source repository」(持續透過原始碼存放區部署新的修訂版本),然後按照持續部署作業的說明操作。

    2. 輸入所需服務名稱。服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。服務名稱一經設定即無法變更,而且會公開顯示。

    3. 選取您要使用服務的地區。區域選取器會顯示價格層級網域對應的可用性,並醒目顯示碳影響最低的區域。

    4. 視需要設定帳單

    5. 在「服務調度」下方,如果您使用預設的 Cloud Run 自動調度,可以選擇指定最少執行個體。如果您使用手動調整資源配置,請指定服務的執行個體數量。

    6. 視需要在表單中設定 Ingress 設定。

    7. 在「驗證」下方,設定下列項目:

      • 如要建立公用 API 或網站,請選取「允許未經驗證的叫用」。如果選取這個選項,系統會將「IAM 叫用者」角色指派給特殊 ID allUser。您可以在建立服務之後使用 IAM 編輯這項設定
      • 如要透過驗證保護服務安全,請選取「需要驗證」
  3. 按一下「容器、磁碟區、網路與安全性」,在適當的分頁中設定其他選用設定:

  4. 設定完服務後,按一下「Create」(建立),將映像檔部署到 Cloud Run,然後等待部署作業完成。

  5. 按一下畫面顯示的網址連結,開啟您所部署服務的穩定專屬端點。

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 run deploy SERVICE --image IMAGE_URL

      • SERVICE 替換為要部署的服務名稱。服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。如果服務尚未存在,這個指令會在部署期間建立服務。您可以完全省略這個參數,這樣系統會提示您輸入服務名稱。
      • IMAGE_URL 替換為容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的形狀為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG 。請注意,如果未提供 --image 標記,部署指令會嘗試從原始碼部署

      如果您要建立公開 API 或網站,請使用 --allow-unauthenticated 標記,允許在未經驗證的情況下叫用服務。這會將 Cloud Run 叫用者 IAM 角色指派給 allUsers。您也可以指定 --no-allow-unauthenticated,禁止未經驗證的叫用。如果省略任一標記,在執行 deploy 指令時系統會提示您進行確認。

    2. 等待部署作業完成。成功完成時,畫面會顯示成功訊息,還有已部署服務的網址。

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

    gcloud run deploy SERVICE --region REGION

YAML

您可以將服務規格儲存在 YAML 檔案中,然後使用 gcloud CLI 部署。

  1. 建立新的 service.yaml 檔案,並加入以下內容:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    取代

    • SERVICE 改為您的 Cloud Run 服務名稱。 服務名稱不得超過 49 個字元,且每個區域和專案的名稱不得重複。
    • IMAGE 改為容器映像檔的網址。

    您也可以指定更多設定,例如環境變數或記憶體限制。

  2. 使用下列指令部署新服務:

    gcloud run services replace service.yaml
  3. 如要允許未經驗證的存取服務,可以公開服務

Cloud Code

如要使用 Cloud Code 部署,請參閱 IntelliJVisual Studio Code 指南。

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定中,將下列內容新增至 google_cloud_run_v2_service 資源:
  provider "google" {
    project = "PROJECT-ID"
  }

  resource "google_cloud_run_v2_service" "default" {
    name     = "SERVICE"
    location = "REGION"
    client   = "terraform"

    template {
      containers {
        image = "IMAGE"
      }
    }
  }

  resource "google_cloud_run_v2_service_iam_member" "noauth" {
    location = google_cloud_run_v2_service.default.location
    name     = google_cloud_run_v2_service.default.name
    role     = "roles/run.invoker"
    member   = "allUsers"
  }

取代:

  • PROJECT-ID 替換為 Google Cloud 專案 ID
  • REGION 替換為 Google Cloud 區域
  • SERVICE 改為您的 Cloud Run 服務名稱。 服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。
  • IMAGE_URL,並參照容器映像檔,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

這項設定允許公開存取 (相當於 --allow-unauthenticated)。如要將服務設為私有,請移除 google_cloud_run_v2_service_iam_member 節。

用戶端程式庫

如要從程式碼部署新服務,請按照下列步驟操作:

REST API

如要部署新服務,請將 POST HTTP 要求傳送至 Cloud Run Admin API service 端點

例如使用 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/services?serviceId=SERVICE

取代:

  • ACCESS_TOKEN,並提供帳戶的有效存取權權杖,該帳戶必須具有部署服務的 IAM 權限。舉例來說,如果您已登入 gcloud,可以使用 gcloud auth print-access-token 擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。
  • IMAGE_URL,並參照容器映像檔,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • SERVICE 替換成您要部署的服務名稱。服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。
  • REGION 替換為服務的 Google Cloud 區域。
  • PROJECT-ID 改成 Google Cloud 專案 ID。

Cloud Run 位置

Cloud Run 具有「地區性」,這表示執行 Cloud Run 服務的基礎架構位於特定地區,並由 Google 代管,可為該地區內所有區域提供備援功能。

選擇 Cloud Run 服務的執行地區時,請將延遲時間、可用性或耐用性需求做為主要考量。一般而言,您可以選擇最靠近使用者的地區,但您應考量 Cloud Run 服務所使用的其他 Google Cloud 產品位置。使用分散在不同位置的 Google Cloud 產品,可能會影響服務的延遲時間和費用。

Cloud Run 可在下列地區使用:

採用級別 1 定價

採用級別 2 定價

如果您已建立 Cloud Run 服務,即可在 Google Cloud 控制台的 Cloud Run 資訊主頁中查看地區。

部署現有服務的新版本

您可以使用 Google Cloud 主控台、gcloud 指令列或 YAML 設定檔部署新修訂版本。

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

部署時,Cloud Run 會匯入容器映像檔。只要容器映像檔用於提供服務的修訂版本,Cloud Run 就會保留該副本。

按一下分頁標籤,瞭解如何使用自選工具。

主控台

如何部署現有服務的新修訂版本:

  1. 前往 Google Cloud 控制台的 Cloud Run 頁面:

    前往 Cloud Run

  2. 在服務清單中找出要更新的服務,然後按一下開啟該服務的詳細資料。

  3. 按一下「Edit and deploy new revision」(編輯及部署新的修訂版本),隨即會顯示修訂版本部署表單。

    1. 如有需要,可提供您要部署新容器映像檔的網址。

    2. 視需要設定容器

    3. 視需要設定帳單

    4. 在「容量」下方,指定記憶體限制CPU 限制

    5. 視需要指定要求逾時並行

    6. 視需要指定執行環境

    7. 在「自動調度資源」下方,指定執行個體數量下限和上限。

    8. 視需要使用其他分頁,選擇性設定以下項目:

  4. 如要將所有流量導向新修訂版本,請選取「立即提供這個修訂版本」。如要逐步推出新修訂版本,請取消勾選該核取方塊。這樣一來,系統就不會將任何流量傳送至新修訂版本。部署後,請按照逐步推出的指示操作。

  5. 按一下「Deploy」(部署),然後等待部署完成。

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 run deploy SERVICE --image IMAGE_URL

      • SERVICE 替換成您要部署的服務名稱。您可以將這個參數完全省略,這樣系統會提示您輸入服務名稱。
      • IMAGE_URL 替換為容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

      系統會自動為新修訂版本指派修訂版本後置字元。如要提供自己的修訂版本尾碼,請使用 gcloud CLI 參數 --revision-suffix

    2. 等待部署作業完成。成功完成時,畫面會顯示成功訊息,還有已部署服務的網址。

YAML

如要下載或查看現有服務的設定,請使用下列指令將結果儲存至 YAML 檔案:

gcloud run services describe SERVICE --format export > service.yaml

在服務設定 YAML 檔案中,視需要修改任何 spec.template 子項屬性,更新修訂版本設定,然後部署新修訂版本:

gcloud run services replace service.yaml

Cloud Code

如要使用 Cloud Code 部署現有服務的新修訂版本,請參閱 IntelliJVisual Studio Code 指南。

Terraform

請確認您已按照「部署新服務」範例中的說明設定 Terraform。

  1. 變更設定檔。

  2. 套用 Terraform 設定:

    terraform apply

    輸入 yes,確認要套用所述動作。

用戶端程式庫

如要從程式碼部署新的修訂版本,請按照下列步驟操作:

REST API

如要部署新修訂版本,請將 PATCH HTTP 要求傳送至 Cloud Run Admin API service 端點

例如使用 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/services/SERVICE

取代:

  • ACCESS_TOKEN,並使用具備部署修訂版本 IAM 權限的帳戶,取得有效的存取權杖。 舉例來說,如果您已登入 gcloud,可以使用 gcloud auth print-access-token 擷取存取權杖。在 Cloud Run 容器執行個體中,您可以使用容器執行個體中繼資料伺服器擷取存取權杖。
  • IMAGE_URL,並參照容器映像檔,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • SERVICE 替換成您要部署的服務名稱。
  • REGION 替換為服務的 Google Cloud 區域。
  • PROJECT-ID 改成 Google Cloud 專案 ID。

Cloud Run 位置

Cloud Run 具有「地區性」,這表示執行 Cloud Run 服務的基礎架構位於特定地區,並由 Google 代管,可為該地區內所有區域提供備援功能。

選擇 Cloud Run 服務的執行地區時,請將延遲時間、可用性或耐用性需求做為主要考量。一般而言,您可以選擇最靠近使用者的地區,但您應考量 Cloud Run 服務所使用的其他 Google Cloud 產品位置。使用分散在不同位置的 Google Cloud 產品,可能會影響服務的延遲時間和費用。

Cloud Run 可在下列地區使用:

採用級別 1 定價

採用級別 2 定價

如果您已建立 Cloud Run 服務,即可在 Google Cloud 控制台的 Cloud Run 資訊主頁中查看地區。

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

如要從其他專案部署映像檔,您或管理員必須將必要的 IAM 角色授予部署者帳戶和 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」(選擇角色) 下拉式選單中,依序點選「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 將容器映像檔提取及推送至 Artifact Registry,以便將其部署至 Cloud Run。部署時,Cloud Run 會匯入容器映像檔,因此部署完成後,您可以從 Artifact Registry 刪除映像檔

將多個容器部署至服務 (輔助容器)

在有 Sidecar 的 Cloud Run 部署作業中,有一個 Ingress 容器會處理您指定容器通訊埠的所有傳入 HTTPS 要求,以及一或多個 Sidecar 容器。側車無法在 Ingress 容器埠監聽傳入的 HTTP 要求,但可以使用 localhost 埠彼此通訊,以及與 Ingress 容器通訊。使用的本機主機通訊埠會因容器而異。

在下圖中,傳入容器使用 localhost:5000 與 Sidecar 通訊。

Cloud Run 多重容器

每個執行個體最多可部署 10 個容器,包括 Ingress 容器。執行個體中的所有容器共用相同的網路命名空間,也可以使用記憶體內共用磁碟區共用檔案,如圖所示。

您可以在第一代或第二代執行環境中部署多個容器。

如果您使用以要求為準的計費方式 (Cloud Run 預設),只有在下列情況下,才會為 Sidecar 分配 CPU:

  • 執行個體正在處理至少一項要求。
  • 輸入容器正在啟動。

如果 Sidecar 必須在要求處理程序以外使用 CPU (例如收集指標),請將服務的帳單設定設為以執行個體為準的帳單。詳情請參閱「帳單設定 (服務)」。

如果使用以要求為準的計費方式,請設定啟動探測,確保 Sidecar 在啟動時不會受到 CPU 節流。

您可以建立自訂機構政策,規定所有部署作業都必須使用特定 Sidecar。

用途

在 Cloud Run 服務中使用 Sidecar 的用途包括:

  • 應用程式監控、記錄和追蹤
  • 在應用程式容器前使用 Nginx、Envoy 或 Apache2 做為 Proxy
  • 新增驗證和授權篩選器 (例如 Open Policy Agent)
  • 執行 AlloyDB 驗證 Proxy 等輸出連線 Proxy

部署含有 Sidecar 容器的服務

您可以使用Google Cloud 控制台、Google Cloud CLI、YAML 或 Terraform,將多個 Sidecar 部署至 Cloud Run 服務。

按一下分頁標籤,瞭解如何使用自選工具。

控制台

  1. 前往 Google Cloud 控制台的 Cloud Run 頁面:

    前往 Cloud Run

    • 如要部署至現有服務,請在服務清單中找出該服務,然後按一下開啟,再點選「編輯並部署新修訂版本」,顯示修訂版本部署表單。
    • 從選單中選取「服務」,然後按一下「部署容器」,顯示「建立服務」表單。
  2. 如果是新服務,

    1. 提供服務名稱,以及要部署的 Ingress 容器映像檔網址。
    2. 按一下「容器、磁碟區、網路與安全性」
  3. 在「Edit container」資訊卡中,視需要設定 Ingress 容器。

  4. 按一下「新增容器」,然後設定要與 Ingress 容器一起新增的 Sidecar 容器。如果補充資訊容器依附於服務中的另一個容器,請在「容器啟動順序」下拉式選單中指出這點。針對您部署的每個 Sidecar 容器重複執行這個步驟。

  5. 如要將所有流量導向新修訂版本,請選取「立即提供這個修訂版本」。如要逐步推出,請取消勾選該核取方塊。這樣一來,系統就不會將任何流量傳送至新修訂版本。部署後,請按照逐步推出的說明操作。

  6. 按一下新服務的「建立」或現有服務的「部署」,然後等待部署完成。

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 run deploy SERVICE \
     --container INGRESS_CONTAINER_NAME \
     --image='INGRESS_IMAGE' \
     --port='CONTAINER_PORT' \
     --container SIDECAR_CONTAINER_NAME \
     --image='SIDECAR_IMAGE'

    取代:

    • SERVICE 替換成您要部署的服務名稱。您可以將這個參數完全省略,這樣系統會提示您輸入服務名稱。
    • INGRESS_CONTAINER_NAME,並為接收要求的容器命名,例如 app
    • INGRESS_IMAGE,並參照應接收要求的容器映像檔,例如 us-docker.pkg.dev/cloudrun/container/hello:latest
    • CONTAINER_PORT,並指定 Ingress 容器接聽連入要求的通訊埠。與單一容器服務不同,如果服務包含 Sidecar,則沒有預設的 Ingress 容器通訊埠。您必須明確設定 Ingress 容器的容器通訊埠,且只有一個容器可以公開通訊埠。
    • SIDECAR_CONTAINER_NAME 替換為 Sidecar 容器的名稱,例如 sidecar
    • SIDECAR_IMAGE,並參照 Sidecar 容器映像檔

    如要在部署指令中設定每個容器,請在 container 參數後提供每個容器的設定,例如:

    gcloud run deploy SERVICE \
      --container CONTAINER_1_NAME \
      --image='INGRESS_IMAGE' \
      --set-env-vars=KEY=VALUE \
      --port='CONTAINER_PORT' \
      --container SIDECAR_CONTAINER_NAME \
      --image='SIDECAR_IMAGE' \
      --set-env-vars=KEY_N=VALUE_N
  3. 等待部署作業完成。成功完成時,畫面會顯示成功訊息,還有已部署服務的網址。

YAML

這些操作說明會顯示 Cloud Run 服務的基本 YAML 檔案,其中包含 Sidecar。建立名為 service.yaml 的檔案,並在其中加入下列內容:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  annotations:
  name: SERVICE
spec:
  template:
    spec:
      containers:
      - image: INGRESS_IMAGE
        ports:
          - containerPort: CONTAINER_PORT
      - image: SIDECAR_IMAGE
      

取代

  • SERVICE 改為您的 Cloud Run 服務名稱。 服務名稱不得超過 49 個字元。
  • CONTAINER_PORT,並指定 Ingress 容器接聽連入要求的通訊埠。與單一容器服務不同,如果服務包含 Sidecar,則沒有預設的 Ingress 容器通訊埠。您必須明確設定 Ingress 容器的容器通訊埠,且只有一個容器可以公開通訊埠。
  • INGRESS_IMAGE,並參照應接收要求的容器映像檔,例如 us-docker.pkg.dev/cloudrun/container/hello:latest
  • SIDECAR_IMAGE,並參照 Sidecar 容器映像檔。如要指定多個 Sidecar,請在 YAML 的 containers 陣列中新增更多元素。

更新 YAML 以納入 Ingress 和 Sidecar 容器後,請使用下列指令部署至 Cloud Run:

gcloud run services replace service.yaml

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定中,將下列內容新增至 google_cloud_run_v2_service 資源:
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"
  ingress = "INGRESS_TRAFFIC_ALL"
  template {
    containers {
      name = "INGRESS_CONTAINER_NAME"
      ports {
        container_port = CONTAINER_PORT
      }
      image = "INGRESS_IMAGE"
      depends_on = ["SIDECAR_CONTAINER_NAME"]
    }
    containers {
      name = "SIDECAR_CONTAINER_NAME"
      image = "SIDECAR_IMAGE"
      }
    }
  }

CONTAINER_PORT 代表 Ingress 容器監聽傳入要求的通訊埠。與單一容器服務不同,如果服務含有 Sidecar,則沒有預設的 Ingress 容器通訊埠。您必須明確設定 Ingress 容器的容器通訊埠,且只有一個容器可以公開通訊埠。

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

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

如果您的容器依附於其他容器,則必須在部署作業中使用 healthchecks。如果您使用健康狀態檢查,Cloud Run 會按照容器啟動順序檢查每個容器的健康狀態,確保每個容器都順利通過檢查,才會啟動下一個容器。如果您未使用健康狀態檢查,即使容器所依附的容器未執行,健康狀態良好的容器也會啟動。

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

後續步驟

您在部署新服務後,可以進行下列作業:

您可以使用 Cloud Build Triggers 來自動執行 Cloud Run 服務的建構和部署作業:

您也可以使用 Cloud Deploy 設定持續推送軟體更新管道,將 Cloud Run 服務部署至多個環境: