Cloud Service Mesh 總覽

Cloud Service Mesh 是可在 Google Cloud和各項支援的 GKE Enterprise 平台上使用的服務網格。支援在各種運算基礎架構上執行的服務。Cloud Service Mesh 由專為 Google Cloud或開放原始碼設計的 API 控管,或同時由兩者控管。

如果您是 Cloud Service Mesh 的新使用者,或是 Anthos 服務網格或 Traffic Director 的現有客戶,這份文件將對您有所助益。

什麼是服務網格?

服務網格是一種架構,可讓您在各項服務之間進行受管理、可觀察且安全的通訊,讓您更輕鬆地在所選基礎架構上建立由多項微服務組成的穩固企業應用程式。服務網格提供功能強大且一致的工具,可管理執行服務時的常見需求,例如監控、網路和安全性,讓服務開發人員和營運人員可以專心建立及管理出色的應用程式,為使用者提供優質體驗。

在架構上,服務網格由一或多個控制層和資料層組成。服務網格會監控服務的所有進出流量。在 Kubernetes 上,Proxy 會透過側邊車模式部署至網格中的微服務。在 Compute Engine 中,您可以在 VM 上部署 Proxy,或為資料層使用無 Proxy 的 gRPC。

這個模式會將應用程式或商業邏輯與網路功能分離,讓開發人員專注於企業所需的功能。服務網格也讓運作團隊和開發團隊將各自的工作解耦。

將應用程式做為微服務建構具備許多優點。不過,隨著工作負載規模擴大,工作負載可能會變得更複雜且零碎。服務網格有助於解決分散問題,讓您更輕鬆地管理微服務。

什麼是 Cloud Service Mesh?

Cloud Service Mesh 是 Google 針對 Google Cloud和支援的 GKE Enterprise 環境提供的解決方案。

  • 已啟用 Google Cloud:Cloud Service Mesh 會提供 API,這些 API 專門針對工作負載執行的運算基礎架構。
    • 針對 Compute Engine 工作負載,Cloud Service Mesh 會使用 Google Cloud專屬的服務路由 API
    • 針對 Google Kubernetes Engine (GKE) 工作負載,Cloud Service Mesh 會使用開放原始碼 Istio API。
  • 關閉 Google Cloud:使用分散式雲端或 GKE 多雲端時,Cloud Service Mesh 會支援 Kubernetes 工作負載的 Istio API。

無論是否啟用 Google Cloud,Cloud 服務網格都能讓您管理、觀測及保護服務,而無須變更應用程式程式碼。

Cloud Service Mesh 可簡化服務交付程序,從流量管理、網格遙測到服務間的通訊安全防護都包含在內,因此能減輕營運和開發團隊的工作負擔。Google 的全代管服務網格可讓您管理複雜的環境,並享有環境提供的所有優勢。

功能

Cloud Service Mesh 提供一系列功能,可用於流量管理、觀測和遙測,以及安全性。

流量管理

Cloud Service Mesh 會控管網格中服務之間、進入網格 (入站) 和外部服務 (出站) 的流量。您可以設定及部署資源,以便在應用程式 (L7) 層管理這類流量。舉例來說,您可以執行下列操作:

  • 使用服務探索功能。
  • 設定服務之間的負載平衡。
  • 建立初期測試和藍綠部署。
  • 精細控制服務的路由。
  • 設定斷路器。

Cloud Service Mesh 會依名稱和各自的端點,維護網格中的所有服務清單。這個清單會用來管理流量 (例如 Kubernetes Pod IP 位址,或 Managed instance group 中 Compute Engine VM 的 IP 位址)。使用這個服務註冊,並與服務並行執行 Proxy,網格就能將流量導向適當的端點。無 Proxy gRPC 工作負載也可以與使用 Envoy Proxy 的工作負載並行使用。

觀測洞察

Google Cloud 控制台中的 Cloud Service Mesh 使用者介面可提供服務網格的洞察資料。系統會自動為透過 Istio API 設定的工作負載產生這些指標。

  • 系統會自動將網格 GKE 叢集中 HTTP 流量的服務指標和記錄檔,擷取至 Google Cloud。
  • 預先設定的服務資訊主頁會提供您瞭解服務所需的資訊。
  • 透過 Cloud MonitoringCloud LoggingCloud Trace 提供的深入遙測功能,您可以深入瞭解服務指標和記錄。您可以依據多種屬性篩選及區隔資料。
  • 服務與服務之間的關係可讓您一目瞭然地瞭解服務間的相依關係,以及哪些服務會連結至各項服務。
  • 您不僅可以快速查看服務的通訊安全狀態,還能瞭解與其他服務的關係。
  • 服務水準目標 (SLO) 可讓您深入瞭解服務的健康狀態。您可以定義 SLO,並依據自己的服務健康標準發出警示。

請參閱可觀測性指南,進一步瞭解 Cloud Service Mesh 的可觀測性功能。

安全性優勢

Cloud Service Mesh 可為您帶來多項安全性優勢。

  • 降低使用遭竊憑證的重播或冒用攻擊風險。Cloud Service Mesh 會使用雙向 TLS (mTLS) 憑證驗證對等端,而非 JSON Web Token (JWT) 這類代管者權杖。
  • 確保傳輸中資料加密。使用 mTLS 進行驗證,還可確保所有 TCP 通訊在傳輸期間都會加密。
  • 降低未經授權的用戶端存取含有機密資料的服務的風險,不論用戶端的網路位置和應用程式層級憑證為何皆然。
  • 降低實際運作網路中使用者資料遭到侵害的風險。您可以確保內部人員只能透過授權的用戶端存取機密資料。
  • 識別哪些用戶端存取了含有機密資料的服務。除了 IP 位址之外,Cloud Service Mesh 存取記錄也會擷取用戶端的 mTLS 身分。
  • 所有叢集內控制層元件都是使用經過 FIPS 140-2 驗證的加密編譯模組建構而成。

如要進一步瞭解 Service Mesh 的安全性優點和功能,請參閱安全性指南

部署選項

您可以在 Cloud Service Mesh 中使用下列部署選項:

  • Google Cloud
    • 代管 Cloud Service Mesh - 代管控制層和資料層 (適用於 GKE) (建議)
    • 代管 Cloud Service Mesh - 針對 Compute Engine 和 VM 提供的代管控制層和資料層 (建議)
    • 使用 Istio API 的 GKE 叢集內控制層 (不建議使用)
  • 關閉 Google Cloud
    • 使用 Istio API 的 Kubernetes 叢集內控制層

代管 Cloud Service Mesh

代管 Cloud Service Mesh 服務包含所有基礎架構的代管控制層,以及 GKE 的代管資料層。採用代管 Cloud Service Mesh,Google 會為您處理升級、資源調度和安全性工作,盡量減少使用者手動維護作業。這包括控制層、資料層和相關資源。

資料層實作

如果您使用 Google Cloud API,資料層可以由 Envoy Proxy 或無 Proxy gRPC 應用程式提供。如果您要更新現有應用程式,則可使用側載方法,不必變更應用程式即可整合至網格。如要避免執行附加程式的額外負擔,您可以更新應用程式以使用 gRPC。

Envoy Proxy 和無 Proxy gRPC 都會使用 xDS API 連線至控制層。如果您使用無 Proxy 的 gRPC,可以為應用程式選擇支援的語言,包括 Go、C++、Java 和 Python。

如果您使用的是開放原始碼 Istio API,資料層是由 Envoy Proxy 提供。

控制層實作

Cloud Service Mesh 控制層的運作方式取決於設定是否已啟用 Google Cloud ,以及您是否為新客戶。

現有使用者的控制層實作

如要判斷目前的控制層,請參閱「找出控制層實作方式」。如要進一步瞭解控制層和控制層遷移作業,請參閱「持續服務客戶的管理控制層總覽」。

新使用者的控制層實作

控制層遷移

如果您是持續使用 Anthos 服務網格的客戶,且使用 Istio API,您的叢集就會開始遷移至 Traffic Director 控制層。您可以繼續使用 Istio API 進行設定。

如要判斷叢集是否仍使用 Istio 控制層,或是已遷移至新的全域控制層,請參閱「找出控制層實作方式」。

後續步驟