Cloud Service Mesh GKE 服務網格總覽
搶先體驗版客戶可以使用這項設定,但我們不建議新的 Cloud Service Mesh 使用者採用。詳情請參閱 Cloud Service Mesh 總覽。
本文適用於想使用 Kubernetes Gateway API 部署 Cloud Service Mesh 服務網格的 Google Kubernetes Engine 使用者。
您可以使用 Kubernetes Gateway API 設定 GKE 適用的 Cloud Service Mesh,為服務網格用途啟用服務間通訊、流量管理、全域負載平衡和安全性政策強制執行。
Kubernetes API 和 Google Cloud API
您可以使用兩種不同的 API 設定 Cloud Service Mesh 服務網格:
- Google Cloud API,可以是服務路徑 API 或舊版 API
- Kubernetes Gateway API
本文和相關設定指南提供操作說明,協助您使用 Kubernetes Gateway API 設定 Cloud Service Mesh 服務網格。
建議您在 Google Kubernetes Engine 上使用 Kubernetes Gateway API,且不建議在 GKE 的同一服務網格中,同時使用這兩種 API 設定路由。
服務路由 API 使用的資源名稱與 Kubernetes Gateway API 中的資源名稱相同,因此使用這兩個 API 時會更加輕鬆。您設定的 Kubernetes 資源在功能上,等同於 Cloud Service Mesh 的服務路由 API 所代表的 Google Cloud資源。
以下各節說明 Cloud Service Mesh 與 Kubernetes Gateway API 整合時使用的資源和架構。
Gateway API
Gateway API 是一組資源,可在 Kubernetes 中建立服務網路模型。Kubernetes Gateway API 是一項開放原始碼專案,專門提供一般用途的路由 API,支援 Ingress 和負載平衡器用途。通用路徑規劃 API 有許多實作方式。Cloud Service Mesh 自訂資源定義 (CRD) 會新增為開放原始碼 Gateway API 的擴充功能。CRD 支援服務網格用途,並使用 Gateway API 導入的相同通用路由 API。
Gateway API 採用階層式架構,包含父項閘道資源和相關聯的 GatewayClass
,您可以在其中附加路徑。GKE 包含 TDMesh
資源,該資源是 Gateway
資源的同層級資源。您可以將相同的 Route
型別附加至 TDMesh
資源。您可以在 TDMesh
資源中附加服務網格的路徑和政策。
機群
機群包含一或多個邏輯上分組的 GKE 叢集。機群可讓您管理功能,並在多個叢集中套用一致的政策。使用機群時,您可以管理跨多個叢集的 Cloud Service Mesh 服務網格。
架構
Cloud Service Mesh 會透過程式設計叢集的資料平面,實作 Gateway API 資源中指定的網路行為,在 GKE 上支援 Gateway API。Cloud Service Mesh 本身是 Google 代管的控制層,不會處理任何資料層流量。以工作負載的 Sidecar 形式執行的 Envoy Proxy,或無 Proxy 的 gRPC 用戶端,會在資料層處理流量。Cloud Service Mesh 會透過 xDSv3 API 設定 Envoy Proxy 和無 Proxy 的 gRPC 用戶端。
Cloud Service Mesh 提供代管的全球可用控制層解決方案,比在叢集內執行控制器更強大且可擴充。由於 Cloud Service Mesh 是全域解決方案,因此可在多個 GKE 叢集之間分配工作負載,並在這些工作負載之間達到流量負載平衡。在下圖中,Cloud Service Mesh 使用 Gateway API 資源,管理單一車隊中三個叢集的服務流量。
將機群中的一個叢集指定為設定叢集。設定叢集是儲存 Gateway API 資源的位置。Cloud Service Mesh 只會監控設定叢集中的資源,並忽略艦隊中其他叢集的資源。如要進一步瞭解設定叢集,請參閱 GKE 說明文件中的「設定叢集設計」。
透過 GKE 多叢集服務,設定叢集中的 Gateway API 資源可以參照艦隊內任何叢集中的 Kubernetes 服務。如要進一步瞭解多叢集服務探索,請參閱「多叢集服務」。
資源
在服務網格的資料層中,Cloud Service Mesh 同時支援 Envoy Proxy 和無 Proxy gRPC。這兩個用戶端都會從 Cloud Service Mesh 接收特定服務網格的設定,方法是在各自的啟動設定中指定 TDMesh
資源的名稱和對應專案編號。Cloud Service Mesh 的設定指南搭配 Kubernetes Gateway API,提供 Envoy 和無 Proxy gRPC 的示範資料層設定。
TDMesh
項資源
TDMesh
資源是 Cloud Service Mesh 自訂資源。這是開放原始碼 Gateway API 的擴充功能,可支援 Cloud Service Mesh 的服務網格用途。使用 TDMesh
資源在車隊中建立服務網格執行個體。附加至 TDMesh
資源的路徑會指定服務網格中的服務對服務轉送行為。
Route
項資源
Gateway API 路由資源的子集可以附加至 TDMesh
資源,指定服務網格內的服務層級路由。Cloud Service Mesh 支援下列Route
資源:
HTTPRoute
TCPRoute
TDGRPCRoute
(Cloud Service Mesh 自訂資源)
舉例來說,您可以建立 HTTPRoute
,指定傳送至主機 payments.svc.internal
的 HTTP 請求會轉送至 Kubernetes 服務 service-payments
。將 HTTPRoute
資源附加至資料平面執行個體訂閱的 TDMesh
資源時,網格內工作負載傳送的 HTTP 要求會相應地轉送。
這個版本在 Gateway API 中新增 TDGRPCRoute
這種新的路徑類型,擴充了通用的 Route
資源。新的路徑類型會比對原生 gRPC 基本類型 (例如方法和服務定義),提供頂尖的 gRPC 要求轉送體驗。
限制
- Cloud Service Mesh 會為服務網格中的所有 Kubernetes 服務設定下列預設行為。您無法變更這些行為。
- Envoy 自動注入器僅支援每個機群一個網格。
- 無法使用 Gateway API 啟用 Cloud Service Mesh 的安全性功能。
- 您只能使用 Gateway API,在 GKE 上設定
TDMesh
和Route
資源。您無法使用Google Cloud 控制台、gcloud CLI 或 REST API。 - 所有叢集都必須位於同一項專案中。不支援跨多個專案的叢集服務網格。
- 您無法使用 Google Cloud 控制台設定或查看 GKE 服務網格。
- 不支援透過 Cloud Logging 和 Cloud Monitoring 監控控制層。