本頁面說明如何將容器映像檔部署到新的 Cloud Run 服務,或現有 Cloud Run 服務的新修訂版本。
部署時,Cloud Run 會匯入容器映像檔。只要容器映像檔用於提供服務的修訂版本,Cloud Run 就會保留該副本。啟動新的 Cloud Run 執行個體時,系統不會從容器存放區提取容器映像檔。
如需部署新服務的逐步說明範例,請參閱部署範例容器快速入門導覽課程。
事前準備
如果您受到網域限制組織政策限制,專案無法進行未經驗證的呼叫,則必須按照「測試私人服務」一節的說明存取已部署的服務。
必要的角色
如要取得部署 Cloud Run 服務所需的權限,請要求管理員授予下列 IAM 角色:
-
Cloud Run 開發人員 (
roles/run.developer
) 在 Cloud Run 服務上 -
服務帳戶使用者 (
roles/iam.serviceAccountUser
) 服務身分 -
Artifact Registry 讀取者 (
roles/artifactregistry.reader
) 部署的容器映像檔的 Artifact Registry 存放區 -
如果您使用跨專案服務帳戶部署服務:
服務身分識別的服務帳戶憑證建立者 (
roles/iam.serviceAccountTokenCreator
)
如需與 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 控制台的 Cloud Run 頁面:
從選單中選取「服務」,然後按一下「部署容器」,顯示「建立服務」表單。
在表單中選取部署選項:
如要手動部署容器,請選取「透過現有的容器映像檔部署單一修訂版本」,並指定容器映像檔。
如要自動執行持續部署作業,請選取「Continuously deploy new revisions from a source repository」(持續透過原始碼存放區部署新的修訂版本),然後按照持續部署作業的說明操作。
輸入所需服務名稱。服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。服務名稱一經設定即無法變更,而且會公開顯示。
視需要設定帳單。
在「服務調度」下方,如果您使用預設的 Cloud Run 自動調度,可以選擇指定最少執行個體。如果您使用手動調整資源配置,請指定服務的執行個體數量。
視需要在表單中設定 Ingress 設定。
在「驗證」下方,設定下列項目:
- 如要建立公用 API 或網站,請選取「允許未經驗證的叫用」。如果選取這個選項,系統會將「IAM 叫用者」角色指派給特殊 ID
allUser
。您可以在建立服務之後使用 IAM 編輯這項設定。 - 如要透過驗證保護服務安全,請選取「需要驗證」。
- 如要建立公用 API 或網站,請選取「允許未經驗證的叫用」。如果選取這個選項,系統會將「IAM 叫用者」角色指派給特殊 ID
按一下「容器、磁碟區、網路與安全性」,在適當的分頁中設定其他選用設定:
設定完服務後,按一下「Create」(建立),將映像檔部署到 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 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
指令時系統會提示您進行確認。等待部署作業完成。成功完成時,畫面會顯示成功訊息,還有已部署服務的網址。
請注意,如要部署到「不是」透過
run/region
gcloud
屬性設定的位置,請使用以下指令:gcloud run deploy SERVICE --region REGION
YAML
您可以將服務規格儲存在 YAML
檔案中,然後使用 gcloud CLI 部署。
建立新的
service.yaml
檔案,並加入以下內容:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE
取代
- SERVICE 改為您的 Cloud Run 服務名稱。 服務名稱不得超過 49 個字元,且每個區域和專案的名稱不得重複。
- IMAGE 改為容器映像檔的網址。
您也可以指定更多設定,例如環境變數或記憶體限制。
使用下列指令部署新服務:
gcloud run services replace service.yaml
如要允許未經驗證的存取服務,可以公開服務。
Cloud Code
如要使用 Cloud Code 部署,請參閱 IntelliJ 和 Visual 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 定價
asia-east1
(臺灣)asia-northeast1
(東京)asia-northeast2
(大阪)asia-south1
(印度孟買)europe-north1
(芬蘭)二氧化碳排放量低
europe-north2
(斯德哥爾摩)二氧化碳排放量低2
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 資訊主頁中查看地區。
部署現有服務的新版本
您可以使用 Google Cloud 主控台、gcloud
指令列或 YAML 設定檔部署新修訂版本。
請注意,即使容器映像檔並無更動,變更任何設定也會導致建立新的修訂版本。每個建立的修訂版本都不可變更。
部署時,Cloud Run 會匯入容器映像檔。只要容器映像檔用於提供服務的修訂版本,Cloud Run 就會保留該副本。
按一下分頁標籤,瞭解如何使用自選工具。
主控台
如何部署現有服務的新修訂版本:
前往 Google Cloud 控制台的 Cloud Run 頁面:
在服務清單中找出要更新的服務,然後按一下開啟該服務的詳細資料。
按一下「Edit and deploy new 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 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。
等待部署作業完成。成功完成時,畫面會顯示成功訊息,還有已部署服務的網址。
YAML
如要下載或查看現有服務的設定,請使用下列指令將結果儲存至 YAML 檔案:
gcloud run services describe SERVICE --format export > service.yaml
在服務設定 YAML 檔案中,視需要修改任何 spec.template
子項屬性,更新修訂版本設定,然後部署新修訂版本:
gcloud run services replace service.yaml
Cloud Code
如要使用 Cloud Code 部署現有服務的新修訂版本,請參閱 IntelliJ 和 Visual Studio Code 指南。
Terraform
請確認您已按照「部署新服務」範例中的說明設定 Terraform。
變更設定檔。
套用 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 定價
asia-east1
(臺灣)asia-northeast1
(東京)asia-northeast2
(大阪)asia-south1
(印度孟買)europe-north1
(芬蘭)二氧化碳排放量低
europe-north2
(斯德哥爾摩)二氧化碳排放量低2
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 資訊主頁中查看地區。
部署其他 Google Cloud 專案的映像檔
如要從其他專案部署映像檔,您或管理員必須將必要的 IAM 角色授予部署者帳戶和 Cloud Run 服務代理程式。 Google Cloud
如要瞭解部署者帳戶的必要角色,請參閱必要角色。
如要授予 Cloud Run 服務代理程式必要角色,請參閱下列操作說明:
在 Google Cloud 控制台中,開啟 Cloud Run 服務的專案。
選取「包含 Google 提供的角色授權」。
複製 Cloud Run 服務代理程式的電子郵件地址。 後置字串為 @serverless-robot-prod.iam.gserviceaccount.com。
開啟擁有您要使用之 Container Registry 的專案。
按一下「新增」即可新增主體。
在「新增主體」欄位中,貼上您先前複製的服務帳戶電子郵件地址。
在「Select a role」(選擇角色) 下拉式選單中,依序點選「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
將容器映像檔提取及推送至 Artifact Registry,以便將其部署至 Cloud Run。部署時,Cloud Run 會匯入容器映像檔,因此部署完成後,您可以從 Artifact Registry 刪除映像檔。
將多個容器部署至服務 (輔助容器)
在有 Sidecar 的 Cloud Run 部署作業中,有一個 Ingress 容器會處理您指定容器通訊埠的所有傳入 HTTPS 要求,以及一或多個 Sidecar 容器。側車無法在 Ingress 容器埠監聽傳入的 HTTP 要求,但可以使用 localhost 埠彼此通訊,以及與 Ingress 容器通訊。使用的本機主機通訊埠會因容器而異。
在下圖中,傳入容器使用 localhost:5000
與 Sidecar 通訊。
每個執行個體最多可部署 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 服務。
按一下分頁標籤,瞭解如何使用自選工具。
控制台
前往 Google Cloud 控制台的 Cloud Run 頁面:
- 如要部署至現有服務,請在服務清單中找出該服務,然後按一下開啟,再點選「編輯並部署新修訂版本」,顯示修訂版本部署表單。
- 從選單中選取「服務」,然後按一下「部署容器」,顯示「建立服務」表單。
如果是新服務,
- 提供服務名稱,以及要部署的 Ingress 容器映像檔網址。
- 按一下「容器、磁碟區、網路與安全性」
在「Edit container」資訊卡中,視需要設定 Ingress 容器。
按一下「新增容器」,然後設定要與 Ingress 容器一起新增的 Sidecar 容器。如果補充資訊容器依附於服務中的另一個容器,請在「容器啟動順序」下拉式選單中指出這點。針對您部署的每個 Sidecar 容器重複執行這個步驟。
如要將所有流量導向新修訂版本,請選取「立即提供這個修訂版本」。如要逐步推出,請取消勾選該核取方塊。這樣一來,系統就不會將任何流量傳送至新修訂版本。部署後,請按照逐步推出的說明操作。
按一下新服務的「建立」或現有服務的「部署」,然後等待部署完成。
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 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
等待部署作業完成。成功完成時,畫面會顯示成功訊息,還有已部署服務的網址。
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 Run OpenTelemetry Sidecar 範例
- 使用二進位授權僅部署受信任的映像檔 (預覽版)
您可以使用 Cloud Build Triggers 來自動執行 Cloud Run 服務的建構和部署作業:
您也可以使用 Cloud Deploy 設定持續推送軟體更新管道,將 Cloud Run 服務部署至多個環境: