服務架構

Last reviewed 2024-12-13 UTC

Kubernetes 服務是一種抽象層,可讓您將一組 Pod 公開為單一實體。服務是 Kubernetes 叢集中用於公開及管理容器化應用程式的基礎構成元素。這個藍圖中的服務是以標準化方式建構,考量了命名空間、身分、服務曝光和服務對服務通訊。

命名空間

每個命名空間都有自己的資源組合,例如 Pod、服務和部署作業。命名空間可讓您組織應用程式,並將各個應用程式隔離開來。藍圖會使用命名空間,依服務用途進行分組。舉例來說,您可以為所有前端服務建立命名空間,並為後端服務建立命名空間。這樣一來,您就能更輕鬆地管理服務及控管服務存取權。

服務曝光

服務會透過 GKE 閘道控制器公開至網際網路。GKE Gateway 控制器會在多叢集、多區域設定中使用 Cloud Load Balancing 建立負載平衡器。Cloud Load Balancing 會使用 Google 的網路基礎架構,透過 anycast IP 位址提供服務,讓您可以以低延遲的方式存取服務。用戶端會透過 HTTPS 連線存取服務,而用戶端 HTTP 要求會重新導向至 HTTPS。負載平衡器會使用 Certificate Manager 管理公開憑證。服務會進一步受到 Cloud Armor 和 Cloud CDN 的保護。下圖顯示服務如何公開至網際網路。

對外開放的 Blueprint 服務。

Cloud Service Mesh

此藍圖會使用 Cloud Service Mesh,針對服務之間的所有通訊進行雙向驗證和授權。針對這項部署作業,Cloud Service Mesh 會使用 CA 服務核發 TLS 憑證,以驗證對等端,並確保只有經過授權的用戶端才能存取服務。使用 相互傳輸層安全性 (mTLS) 進行驗證,也有助於確保服務間的所有 TCP 通訊在傳輸期間都會加密。針對服務網格中的服務輸入流量,範本會使用 GKE Gateway 控制器。

分散式服務

分散式服務是 Kubernetes 服務的抽象概念,可在多個叢集中的相同命名空間中執行。即使一或多個 GKE 叢集無法使用,只要任何剩餘的健康叢集都能提供負載,分散式服務仍可供使用。如要跨叢集建立分散式服務,Cloud Service Mesh 會在環境中所有叢集的應用程式服務之間提供第 4 層和第 7 層連線。這種連線功能可讓多個叢集中的 Kubernetes 服務充當單一邏輯服務。只有在區域故障導致區域內流量無法傳送時,叢集間的流量才會轉送至其他區域

服務身分

在 GKE 上執行的服務會與相關身分建立關聯。此藍圖會設定 GKE 適用的工作負載身分聯盟,讓 Kubernetes 服務帳戶可充當 Google Cloud 服務帳戶。同一個環境中每個分散式服務的例項都具有共同身分,可簡化權限管理。存取 Google Cloud API 時,以 Kubernetes 服務帳戶執行的服務會自動以 Google Cloud 服務帳戶身分進行驗證。每項服務都只具備服務運作所需的最少權限。

後續步驟