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 服務網格:

本文件和相關設定指南提供使用 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,以支援入口和負載平衡器用途。通用路由 API 有許多實作方式。我們新增了 Cloud Service Mesh 自訂資源定義 (CRD),做為開放原始碼 Gateway API 的擴充功能。CRD 支援服務中介網用例,並使用 Gateway API 導入的通用路由 API。

Gateway API 採用階層式組織方式,其中包含 Gateway 父項資源和相關聯的 GatewayClass,您可以將路徑附加至這些資源。GKE 包含 TDMesh 資源,這是 Gateway 資源的對等項目。您可以將相同的 Route 類型附加至 TDMesh 資源。您可以在 TDMesh 資源中,為服務網格附加路徑和政策。

Gateway API、Gateway 資源、Mesh 資源和路由
Gateway API、Gateway 資源、Mesh 資源和路由 (按一下可放大)

機群

機群由一或多個邏輯分組的 GKE 叢集組成。機群可讓您管理功能,並在多個叢集中一致套用政策。使用機群時,您可以管理跨多個叢集的 Cloud Service Mesh 服務網格。

架構

Cloud Service Mesh 會透過編寫叢集資料平面程式碼,實作 Gateway API 資源中指定的網路行為,以便支援 GKE 上的 Gateway API。Cloud Service Mesh 本身是 Google 代管的控制層,不會處理任何資料層流量。Envoy 代理程式會以附屬程式形式執行工作負載,或在資料層處理無 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 多叢集服務網格
使用 Gateway API 設定的 Cloud Service Mesh 多叢集服務網格 (按一下可放大檢視)

您可以將機群中的一個叢集指定為設定叢集。設定叢集是 Gateway API 資源的儲存位置。Cloud Service Mesh 只會監控設定叢集中的資源,並忽略機隊中其他叢集中的資源。如要進一步瞭解設定叢集,請參閱 GKE 說明文件中的「設定叢集設計」。

有了 GKE 多叢集服務,設定叢集中的 Gateway API 資源就能參照機隊中任何叢集的 Kubernetes 服務。如要進一步瞭解多叢集服務探索,請參閱「多叢集服務」。

資源

Cloud Service Mesh 在服務網格的資料層中支援 Envoy Proxy 和無 Proxy gRPC。兩個用戶端會在各自的啟動設定中指定 TDMesh 資源的名稱和相應專案編號,從 Cloud Service Mesh 接收特定服務網格的設定。使用 Kubernetes Gateway API 設定 Cloud Service Mesh 的指南,提供 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 要求進行轉送。

這個版本透過新的路由類型 TDGRPCRoute,擴充 Gateway API 中的一般 Route 資源。新的路由類型會比對原生 gRPC 基本元素 (例如方法和服務定義),提供一流的 gRPC 要求路由體驗。

使用 GKE 中的 Gateway API 資源設定 Cloud Service Mesh
使用 GKE 中的 Gateway API 資源設定 Cloud Service Mesh (按一下即可放大)

限制

  • Cloud Service Mesh 會為服務網格中的所有 Kubernetes 服務設定下列預設行為。您無法變更這些行為。
    • 系統會在任何 Gateway API Route 資源參照的服務通訊埠上,設定 TCP 健康狀態檢查。
    • 系統會為服務的所有傳入要求設定預設 30 秒的逾時時間。
    • 已停用「工作階段相依性」
  • Envoy 自動插入器僅支援每個車隊一個網格。
  • 無法使用 Gateway API 啟用 Cloud Service Mesh 的安全防護功能。
  • 您必須在 GKE 上僅使用 Gateway API 設定 TDMeshRoute 資源。您無法使用Google Cloud 主控台、gcloud CLI 或 REST API。
  • 所有叢集都必須位於同一個專案中。不支援橫跨多個專案叢集的服務網格。
  • 您無法使用 Google Cloud 主控台設定或查看 GKE 服務網格。
  • 不支援透過 Cloud Logging 和 Cloud Monitoring 監控控制平面。

後續步驟