本指南說明 Cloud Run 如何處理部署作業,並分為三個部分:
- 部署類型:您提供給 Cloud Run 的內容,例如原始碼或容器映像檔。
- Cloud Run 資源:部署作業在 Cloud Run 中執行的內容 (服務、工作、工作站集區或執行個體)。
- 部署方法:如何執行部署作業,例如使用 Google Cloud 控制台、gcloud CLI、YAML 或 Terraform。
部署類型
Cloud Run 提供多種部署選項。部署完成後,所有部署作業、執行作業或建立作業都會在 Cloud Run 全代管的高擴充性基礎架構上,以沙箱容器執行個體的形式執行。下表列出各資源類型支援的部署選項:
| 部署作業方式 | 服務 | 工作 | worker 集區 | 執行個體 |
|---|---|---|---|---|
| 部署容器映像檔 | 支援 | 支援 | 支援 | 支援 |
| 從原始碼部署 | 支援 | 支援 | 支援 | — |
| 部署函式1 | 支援 | — | — | — |
| 從 Git 持續部署 | 支援 | — | — | — |
1 函式是原始碼部署的特殊版本,適用於單一用途的事件導向程式碼。
部署容器映像檔
您可以將符合 Cloud Run 容器執行階段合約的任何容器映像檔,部署至 Cloud Run服務、作業、工作者集區或執行個體。
從原始碼部署
為方便起見,Cloud Run 可讓您透過單一指令建構及部署原始碼。詳情請參閱「透過原始碼部署服務」、「透過原始碼執行工作」和「透過原始碼部署 worker 集區」。
從原始碼部署時,Cloud Build 會將程式碼轉換為容器映像檔,並儲存在 Artifact Registry。您可以部署包含 Dockerfile 的原始碼,也可以使用支援的語言執行階段。
函式
您可以部署單一用途函式,回應雲端基礎架構和服務產生的事件。監控的事件發生時,Cloud Run 會觸發函式。
函式部署作業是特殊類型的原始碼部署作業,您只需要提供函式程式碼。您可以使用多種支援的程式設計語言編寫 Cloud Run 函式。
部署函式會建立 Cloud Run 服務。
從 Git 持續部署原始碼
Cloud Run 可協助您從 Git 設定持續部署。與來源部署作業類似,您可以部署包含 Dockerfile 的原始碼,或以支援的語言執行階段撰寫的原始碼。
從 Git 持續部署適用於 Cloud Run 服務。您可以在 Cloud Run 的 Cloud Build 工作中手動設定這些項目。
Cloud Run 資源
以下各節將詳細說明 Cloud Run 資源。
比較 Cloud Run 資源
| 功能 | 服務 | 工作 | 工作站集區 | 執行個體 |
|---|---|---|---|---|
| 主要應用實例 | 要求導向 (網站、API、微服務) | 以工作為導向 (指令碼、資料處理、遷移) | 事件/提取驅動 (Kafka/PubSub 消費者) | 受管理單例項 (代理式工作負載、特定運算需求) |
| 觸發條件 | HTTP/gRPC 要求、Eventarc | 執行模式 - 標準 (立即)、延遲。 觸發條件 - 手動執行、使用排程器、使用工作流程 |
一律開啟,或使用提取式背景工作自動調度資源 | 無 |
| 擴大運用 | 自動/手動:調度至零或根據要求調度 | 自動:調度至 N 個獨立工作,這些工作會依序或平行執行。 | 自動/手動:使用手動調度或內建自動調度功能,根據 CPU 使用率或 Pub/Sub 訊息待處理量,設定固定數量的執行個體 (使用外部自動調度器,以 KEDA 為基礎的自動調度) | 無:不自動調度資源,可個別管理 |
| 生命週期 | 暫時性,閒置時會縮減資源 | 放送最多 7 天 (短期) | 可選擇持續執行的背景程序,或自動調度資源的臨時執行個體。 | 長時間執行 (可執行數天/數週),並無限期自動重新啟動 |
| 解決 | 穩定服務網址 (負載平衡) | 沒有公開端點。 觸發條件的內部網址 (例如排程器) |
沒有公開端點。 以直連虛擬私有雲 IP 為基礎的私人連入存取權 |
每個執行個體都有專屬網址 |
| 傳入流量 | 公開/內部 HTTP/gRPC | 無 | 透過直連虛擬私有雲連線,以 IP 為基礎的 L4 層輸入流量 | 每個執行個體的公開/內部網址 |
| 帳單 | 以要求為依據或以執行個體為依據 | 每次執行的時間長度 | 每個執行個體的持續時間 | 每個執行個體的持續時間 |
Cloud Run 服務
服務是 Cloud Run 的主要資源類型,代表由要求驅動的工作負載,會自動調度容器例項,以處理傳入的網路流量、HTTP 要求或事件。每個服務都位於特定Google Cloud 區域。為提供備援和容錯移轉功能,Cloud Run 會自動將服務複製到區域內的多個可用區。特定Google Cloud 專案可在不同地區執行多項服務。
每項服務都會公開一個不重複的端點。根據預設,Cloud Run 會自動調整資源配置,以便處理傳入要求。如有需要,您可以將縮放行為變更為手動縮放。您可以從容器、存放區或原始碼部署服務。
下圖顯示服務的 Cloud Run 資源模型:
此圖顯示一個 Google Cloud 專案,其中包含三項 Cloud Run 服務:Service A、Service B 和 Service C,都各有幾個修訂版本:
- Service A 收到多個要求,因此 Cloud Run 已啟動多個執行個體來處理負載。每個執行個體只會執行一個容器 (應用程式的容器)。
- 服務 B 沒有任何要求,因此處於閒置狀態,Cloud Run 也未執行任何執行個體。
- 服務 C 有要求,且已建立多個執行個體來處理負載,藉此調整規模。在本例中,每個執行個體都會執行一組多個容器。在每個集合中,只有 Ingress 容器會收到要求,但其他容器會協助完成要求。
Cloud Run 服務修訂版本
每次部署服務都會建立一個修訂版本。修訂版本由一或多個容器映像檔和設定組成,例如環境變數、記憶體上限或要求並行值。
修訂版本建立後就無法修改。舉例來說,當您將容器映像檔部署到新服務時,Cloud Run 會建立第一個修訂版本。如果您將不同的容器映像檔部署到同一個服務,Cloud Run 就會建立第二個修訂版本。如果您之後設定環境變數,Cloud Run 就會建立第三個修訂版本。一段時間後,Cloud Run 最終會移除未使用的修訂版本。
Cloud Run 會自動盡快將要求轉送到最新且健康狀態良好的服務修訂版本。
Cloud Run 服務執行個體
Cloud Run 會自動調整接收要求的每個服務修訂版本,以符合處理所有要求所需的執行個體數量。請注意,執行個體可同時接收多個要求。您可以使用要求並行設定,設定可同時傳送至修訂版本每個執行個體的要求數目上限。
Cloud Run 工作
每個工作都位於特定 Google Cloud區域,且由一或多個工作任務組成,這些任務會執行一或多個容器,直到完成為止。工作工作是獨立的,可以在指定的工作執行中平行執行。
Cloud Run 工作執行作業
執行工作時,Cloud Run 會建立工作執行作業,並啟動所有工作任務。工作執行中的所有任務都必須順利完成,工作執行才會成功。您可以為工作設定 timeouts,並在工作失敗時指定 retries 次數。
如果任何工作超過重試次數上限,Cloud Run 會將該工作標示為失敗,並將工作標示為失敗。根據預設,工作會並行執行,最多可達 100 個,但如果任何支援資源 (例如資料庫) 有此需求,您可以指定較低的上限。
Cloud Run 工作任務
每次執行工作時,都會平行執行多項工作,每項工作都會執行一個例項。Cloud Run 會根據工作的 maxRetries 設定,自動嘗試再次執行任何失敗的工作。
Cloud Run worker 集區
工作站集區是專為非要求工作負載 (例如提取佇列) 設計的 Cloud Run 資源。請注意,工作站集區不支援下列功能:
- 沒有端點/網址
- 部署的容器不必在通訊埠監聽要求
- 不會自動調整資源配置
與 Cloud Run 服務類似,部署或更新 worker 集區時,系統會建立新的修訂版本。
您可以視需要手動調整工作站集區執行個體,以處理工作負載。您也可以使用外部指標自動調度工作站集區資源,處理由 Pub/Sub 訂閱項目、Prometheus 查詢或 Kafka 佇列等來源驅動的工作負載調度作業。
連線至虛擬私有雲 (VPC) 網路後,每個工作站集區執行個體都會取得 VPC 網路上的 IP 位址,並能與這個 VPC 傳送及接收流量。
Cloud Run 執行個體
Cloud Run 執行個體代表獨立的單例項執行階段環境。與服務不同 (服務會自動或手動調度容器執行個體來處理流量),Cloud Run 執行個體是頂層資源,具有自己的直接網址可定址性和生命週期作業。
每個 Cloud Run 執行個體都包含下列功能:
- 專屬網址端點:預設會指派穩定的連入網址。您可以停用預設網址,僅允許來自執行個體其他輸入路徑的流量。
- 重新啟動政策:支援重新啟動條件 (
always、on-failure、never),可在容器程序當機時自動復原。 - 共用 CPU 分配:在共用 CPU 模型上執行,CPU 會根據爆量預算完全分配,並在該預算外節流至 6.25% 的基準資源限制。