Cloud Service Mesh 支援的 API 功能 Google Cloud
本文將摘要說明 Cloud Service Mesh 提供的功能。
Cloud Service Mesh 包含應用程式、與 xDS 相容的資料層 (開放原始碼 Envoy Proxy 或 gRPC 無 Proxy 資料層),以及 Cloud Service Mesh 做為控制層。
下表中的「不適用」表示功能與特定 Cloud Service Mesh 設定不相容,因此無法支援。空白空間 (沒有勾號或「不適用」) 表示不支援該功能。
其中部分功能僅適用於負載平衡 API。強烈建議您使用服務路徑 API,不要使用負載平衡 API 建立新的部署作業。
支援的 xDS 版本
Cloud Service Mesh 使用開放原始碼 xDS 控制層 API,設定 Envoy 和無 Proxy gRPC 用戶端。這些用戶端會代表應用程式碼運作,提供 Cloud Service Mesh 的應用程式網路功能。
系統僅支援 xDS v3。如果您使用 xDS v2,請遷移至 xDS v3。如要瞭解如何遷移,請參閱「從 xDS v2 遷移至 xDS v3」。
執行網格服務的平台
您可以在下列平台上執行應用程式,並將其納入 Cloud Service Mesh 設定的全球服務網格。
功能 | 支援 |
---|---|
Compute Engine 虛擬機器 (VM) 執行個體 | ✔ |
Google Kubernetes Engine (GKE) 容器執行個體 | ✔ |
Compute Engine 容器執行個體上的 Kubernetes | ✔ |
服務管理
Cloud Service Mesh 設定的網格服務可享有下列優點:
服務探索。網格中的應用程式如要連線至其他應用程式,可以依名稱呼叫該服務。
後端自動調度資源。執行應用程式程式碼的執行個體會根據您的需求,動態調度資源。
自動註冊端點。建立或移除新執行個體時,系統會自動將這些執行個體與服務建立關聯。
功能 | 支援 |
---|---|
自動部署 Compute Engine VM 的補充 Proxy | ✔ |
自動將補充 Proxy 插入 GKE Pod | ✔ |
根據主機名稱探索服務 | ✔ |
根據 CPU 使用率自動調度執行個體 | ✔ |
根據流量負載/服務規模自動調度執行個體 (僅限代管執行個體群組或 MIG 中的 Compute Engine VM) |
✔ |
根據可設定的健康狀態檢查自動修復執行個體 | ✔ |
自動註冊 Compute Engine VM 的端點 | ✔ |
自動註冊 GKE 容器執行個體/Pod 的端點 | ✔ |
透過 API 以程式輔助方式新增或移除端點 | ✔ |
資料層流量的端點
微服務會使用資料層,連線至網格內和網格外的服務。Cloud Service Mesh 可讓您將應用程式邏輯與網路邏輯分開,因此應用程式只需要將要求傳送至資料層 (例如與應用程式並行執行的 Sidecar Proxy)。資料平面隨後會將要求傳送至正確的端點。
下表中的應用程式位於網格中,表示這些應用程式使用 Cloud Service Mesh 管理的資料平面,與其他服務通訊。這些應用程式可以將流量傳送至網格內的服務,以及網格外的服務。
功能 | 支援 |
---|---|
網格中的 VM 型應用程式 | ✔ |
網格中的容器式應用程式 | ✔ |
網格外部的 VM 型應用程式 | ✔ |
網格外部的容器式應用程式 | ✔ |
在內部部署資料中心執行的應用程式 | ✔ |
多雲端環境中的應用程式 | ✔ |
資料層拓撲
在服務網格模型中,應用程式會使用資料層進行通訊。這個資料層通常包含與應用程式一併部署的 Sidecar 代理程式。Cloud Service Mesh 彈性極高,支援符合服務網路需求的資料平面拓撲。
功能 | 支援 |
---|---|
與應用程式並行執行的 Sidecar Proxy | ✔ |
無 Proxy gRPC 應用程式 | ✔ |
網格中兩個應用程式之間的中間 Proxy | ✔ |
網格邊界的邊緣 Proxy | ✔ |
網格涵蓋多個地區中的多個 GKE 叢集和/或 Compute Engine VM | ✔ |
透過 API 進行程式輔助設定
所有設定都會透過 REST API 和資訊主頁預設公開,方便您自動化處理大型團隊的變更,並以程式輔助管理變更。部分功能無法透過 Google Cloud 控制台設定。
功能 | 支援 |
---|---|
REST API | ✔ |
Google Cloud 控制台 | ✔ |
Google Cloud CLI | ✔ |
Cloud Deployment Manager | ✔ |
Terraform 支援 | ✔ |
無 Proxy gRPC 應用程式的語言支援
您可以使用下列程式設計語言,建立可與 Cloud Service Mesh 搭配使用的無 Proxy gRPC 應用程式。如要查看各項 gRPC 實作和版本支援的服務網格功能,請前往 GitHub。
語言 | 支援 |
---|---|
Java | ✔ |
Go | ✔ |
C++ | ✔ |
Python | ✔ |
Ruby | ✔ |
PHP | ✔ |
節點 | ✔ |
要求通訊協定
應用程式使用 Cloud Service Mesh 設定的資料層進行通訊時,可以使用下列要求通訊協定。
功能 | 支援 |
---|---|
HTTP | ✔ |
HTTPS | ✔ |
HTTP/2 | ✔ |
TCP | ✔ |
gRPC | ✔ |
服務安全性
Cloud Service Mesh 支援下列設定,可確保服務安全。
功能 | Envoy | gRPC |
---|---|---|
搭配 GKE Pod 使用 TLS | ✔ | ✔ |
搭配 GKE Pod 使用 mTLS | ✔ | ✔ |
存取權控管與授權 | ✔ | ✔ |
使用 Google Cloud Armor 限制速率 | ✔ |
轉送和流量管理
Cloud Service Mesh 支援進階流量管理政策,可用於引導、分割及塑造通過資料層的流量。
無 Proxy gRPC 服務無法使用部分進階流量管理功能,目標 TCP Proxy 資源則無法使用任何進階流量管理功能。
Cloud Service Mesh 處理 TCP (非 HTTP(S)) 流量時,不支援下列功能。
功能 | 搭配設定為處理 HTTP(S) 或 gRPC 流量的 Envoy Proxy 使用 | 支援無 Proxy gRPC |
---|---|---|
根據下列項目中的後置字串/前置字串/完整/Regex 比對結果,進行 HTTP/第 7 層要求路由: | ||
• 主機名稱 | ✔ | ✔ |
• 路徑 | ✔ | ✔ |
• 標頭 | ✔ | ✔ |
• 方法 | ✔ | 不適用 |
• Cookie | ✔ | ✔ |
• 要求參數 | ✔ | 不適用 |
錯誤植入 | ✔ | ✔ |
可設定逾時 | ✔ | 不適用 請參閱「直播時間長度上限」。 |
重試 | ✔ | ✔ 但每次重試的逾時時間除外 |
重新導向 | ✔ | |
URI 重新編寫 | ✔ | |
要求/回應標頭轉換 | ✔ | |
流量拆分 | ✔ | ✔ |
流量鏡像 | ✔ | |
離群值偵測 | ✔ | ✔ |
斷路機制 | ✔ | ✔ 僅限 maxRequests |
串流時間長度上限 | ✔ | ✔ |
負載平衡
您可以設定進階負載平衡方法和演算法,在服務、後端群組 (執行個體群組或網路端點群組) 和個別後端或端點層級進行負載平衡。詳情請參閱後端服務總覽和進階負載平衡總覽。
功能 | 支援 Envoy Proxy,並設定為處理 HTTP(s)、TCP 或 gRPC 流量 | 支援無 Proxy gRPC |
---|---|---|
根據區域選取後端 (執行個體群組或網路端點群組),最好是選擇後端容量充足的最近區域 | ✔ | ✔ |
使用以速率為準 (每秒要求數) 的平衡模式選取後端。 | ✔ 不支援 TCP (非 HTTP(S)) 流量。 |
✔ |
根據以使用率為準的平衡模式選取後端 (僅限 Compute Engine 執行個體群組中的 VM) | ✔ | ✔ |
每個後端的最大容量可設定 (僅限 Compute Engine 和 GKE) | ✔ | ✔ |
根據可設定的負載平衡政策選取後端。 如要瞭解各項內建政策,請參閱 |
|
服務韌性
Cloud Service Mesh 支援多項功能,可協助您提升服務的復原能力。舉例來說,您可以使用 Cloud Service Mesh 實作藍綠部署模式、初期測試或斷路 (Envoy、gRPC)。
功能 | 支援 Envoy Proxy,並設定為處理 HTTP(s)、TCP 或 gRPC 流量 | 支援無 Proxy gRPC |
---|---|---|
根據流量分配比例選擇服務 | ✔ | ✔ |
斷路機制 | ✔ | ✔ 僅限 maxRequests |
服務和後端容量管理
Cloud Service Mesh 會考量服務和後端容量,盡可能將流量分配到服務的後端。Cloud Service Mesh 與 Google Cloud 基礎架構整合,可自動收集容量資料。您也可以手動設定及配置容量。
功能 | 支援 |
---|---|
根據代管執行個體群組 (MIG) 中 VM 執行個體的 CPU,自動追蹤後端容量和使用率。 | ✔ |
根據要求率,手動調整 MIG 和網路端點群組 (NEG) 中 VM 和容器執行個體的容量和覆寫。 | ✔ |
手動排除容量。 | ✔ |
容錯移轉
企業工作負載通常會採用高可用性部署作業,以提升服務運作時間。Cloud Service Mesh 支援這類部署作業,可啟用多可用區/多區域備援。
功能 | 支援 |
---|---|
自動容錯移轉至同一區域內,具有健全後端容量的其他可用區。 | ✔ |
自動容錯移轉至最近的區域,並提供運作狀態良好的後端容量。 | ✔ |
健康狀態檢查
Cloud Service Mesh 支援集中式健康狀態檢查,可判斷後端健康狀態。
如需參考資訊,請參閱健康狀態檢查總覽。
功能 | 支援 |
---|---|
gRPC 健康狀態檢查 | ✔ |
HTTP 健康狀態檢查 | ✔ |
HTTPS 健康狀態檢查 | ✔ |
HTTP/2 健康狀態檢查 | ✔ |
TCP 健康狀態檢查 | ✔ |
可設定的健康狀態檢查:
|
✔ |
可設定的要求路徑 (HTTP、HTTPS、HTTP/2) | ✔ |
可設定的要求字串或路徑 (TCP 或 SSL) | ✔ |
可設定的預期回應字串 | ✔ |
觀測能力
觀測工具提供監控、偵錯和效能資訊,協助您瞭解服務網格。下列功能預設會提供,或是在資料層中設定。應用程式程式碼無須採取任何特別動作,即可產生這項可觀測性資料。
無 Proxy gRPC 服務提供服務健康狀態資訊主控台,但您無法設定資料層記錄和追蹤。Cloud Service Mesh 無法設定 gRPC 應用程式的記錄和追蹤功能。如要啟用記錄和追蹤功能,請按照開放原始碼網站上的疑難排解章節或 gRPC 指南中的操作說明進行。舉例來說,如要在無 Proxy 的 gRPC 服務中啟用指標收集和追蹤功能,可以使用 OpenTelemetry。
功能 | 支援 Proxy | 無 Proxy gRPC 服務支援的功能 |
---|---|---|
服務健康狀態資訊主頁 | ✔ | ✔ |
資料層記錄 | ✔ | ✔ |
資料層追蹤 | ✔ | ✔ |
工作階段相依性
用戶端與伺服器之間的通訊通常會涉及多項連續要求。在這種情況下,將連續的用戶端要求轉送至相同的後端或伺服器會很有幫助。Cloud Service Mesh 提供可設定的選項,盡可能將特定用戶端的要求傳送至同一個後端,只要該後端保持良好健康狀態並具有容量即可。詳情請參閱「後端服務總覽」。
功能 | 支援 HTTP(S) Proxy | 支援 TCP Proxy | 無 Proxy gRPC 服務支援的功能 |
---|---|---|---|
用戶端 IP 位址 | ✔ | ✔ | |
HTTP Cookie | ✔ | 不適用 | |
HTTP 標頭 | ✔ | 不適用 | ✔ |
產生的 Cookie (在第一個要求中設定用戶端 Cookie) | ✔ | 不適用 |
網路拓撲
Cloud Service Mesh 支援常見的 Google Cloud 網路拓撲。
功能 | 支援 |
---|---|
專案中的單一網路 Google Cloud | ✔ |
專案中的多個網格 Google Cloud | ✔ |
Google Cloud 專案中的多個閘道 | ✔ |
共用虛擬私有雲 (多個專案共用單一網路) Google Cloud | ✔ |
如要詳細瞭解 Cloud Service Mesh 如何支援共用虛擬私有雲,請參閱「限制」。
法規遵循
Cloud Service Mesh 符合下列標準。
法規遵循認證 | 支援 |
---|---|
健康保險流通與責任法案 | ✔ |
ISO 27001、ISO 27017、ISO 27018 | ✔ |
SOC1、SOC2、SOC3 | ✔ |
PCI DSS | ✔ |
後續步驟
- 如要進一步瞭解 Cloud Service Mesh,請參閱「Cloud Service Mesh 總覽」。
- 如要瞭解無 Proxy gRPC 服務的用途和架構模式,請參閱無 Proxy gRPC 服務總覽。