這項參考架構提供高可用性且可擴充的解決方案,可使用 Cloud Service Mesh 和 Envoy 閘道,管理在 Google Kubernetes Engine (GKE) 上執行的 Windows 應用程式網路流量。本文說明如何使用可將流量路由至 Pod 和相容於 xDS 的開放原始碼 Proxy 的服務,管理該網路流量。使用這類架構有助於降低成本及提升網路管理效率。
本文適用對象為雲端架構師、網路管理員和 IT 專業人員,他們負責設計及管理在 GKE 上執行的 Windows 應用程式。
架構
下圖顯示的架構,是使用 Cloud Service Mesh 和 Envoy 閘道,管理在 GKE 上執行的 Windows 應用程式網路:
此架構包含下列元件:
- 具有 Windows 和 Linux 節點集區的區域性 GKE 叢集。
- 在兩個不同的 GKE Pod 中執行的兩個 Windows 應用程式。
- 每個應用程式都會透過
ClusterIP
類型的 Kubernetes 服務和網路端點群組 (NEG) 公開。
- 每個應用程式都會透過
- Cloud Service Mesh 會為每個 GKE Pod 建立及管理 NEG 的流量路徑。每條路徑都會對應到特定
scope
。scope
可做為 Cloud Service Mesh 入口閘道的專屬 ID。 - 對應至 Cloud Service Mesh 後端服務的 HTTP 路由。
- Envoy 容器 Pod,做為 GKE 叢集的 Envoy 閘道。
- 在 Linux 節點上執行的 Envoy 閘道。閘道會設定為透過對應這些應用程式的服務,將流量導向 Windows 應用程式。Envoy 已設定為使用
scope
參數,載入相關 Cloud Service Mesh 服務的設定詳細資料。 - 內部應用程式負載平衡器,可終止 SSL 流量,並將所有外部連入流量導向 Envoy 閘道。
使用的產品
這項參考架構使用下列 Google Cloud 和第三方產品:
Google Cloud 產品
- Cloud Load Balancing:一系列高效能、可擴充的全球和區域負載平衡器。
- Google Kubernetes Engine (GKE):Kubernetes 服務,可讓您透過 Google 的基礎架構,大規模部署及操作容器化應用程式。
- Cloud Service Mesh:這是一套工具,可協助您監控及管理地端或 Google Cloud 中的可靠服務網格。
第三方產品
- Envoy Gateway: 將 Envoy Proxy 管理為獨立或以 Kubernetes 為基礎的應用程式閘道。
- Gateway API: Kubernetes 官方專案,著重於 Kubernetes 中的 L4 和 L7 路由。
用途
這項參考架構的主要用途是管理在 GKE 上執行的 Windows 應用程式網路流量。這項架構具有下列優點:
簡化網路管理:Cloud Service Mesh 和 Envoy 閘道提供集中式控制層,可管理應用程式的網路流量,進而簡化網路管理作業。這些應用程式可以是 Linux 或 Windows 應用程式,在 GKE 或 Compute Engine 上執行。使用這項簡化的網路管理機制,可減少手動設定的需求。
提升擴充性和可用性:為因應不斷變化的需求,請使用 Cloud Service Mesh 和 Envoy 閘道,擴充 Linux 和 Windows 應用程式。您也可以使用 Envoy 閘道,在多個 Pod 之間平衡負載流量,為應用程式提供高可用性。
提升安全性:使用 Envoy 閘道為 Linux 和 Windows 應用程式新增安全防護功能,例如 SSL 終止、驗證和速率限制。
降低成本:Cloud Service Mesh 和 Envoy 閘道都能協助降低管理 Linux 和 Windows 應用程式網路流量的成本。
設計須知
本節提供指引,協助您開發符合特定安全性、可靠性、成本和效率需求的架構。
安全性
- 安全網路:此架構使用內部應用程式負載平衡器,加密傳入 Windows 容器的流量。傳輸中加密功能可防止資料外洩。
- Windows 容器:Windows 容器可為容器化應用程式提供安全且獨立的環境。
可靠性
- 負載平衡:這項架構使用多層 Cloud Load Balancing,在 Envoy 閘道和 Windows 容器之間分配流量。
- 容錯能力:這個架構具備容錯能力,不會出現單點故障。即使一或多個元件故障,也能確保系統一律可用。
- 自動調度資源:這項架構會使用自動調度資源功能,根據負載自動調整 Envoy 閘道和 Windows 容器的數量。自動調度資源可確保閘道和應用程式能應付流量高峰,效能不受影響。
- 監控:這項架構使用 Google Cloud Managed Service for Prometheus 和 Cloud Operations,監控 Envoy 閘道和 Windows 容器的健康狀態。監控功能可協助您及早找出問題,並防止問題中斷應用程式運作。
成本最佳化
- 為工作負載選擇合適的執行個體類型:選擇執行個體類型時,請考慮下列因素:
- 應用程式所需的 vCPU 數量和記憶體容量
- 應用程式的預期流量負載
- 使用者需要高可用性應用程式
使用自動調度功能:自動調度功能可自動垂直和水平調度 Windows 工作負載,協助您節省費用。
垂直調度會根據客戶用量調整容器要求和限制。
- 使用垂直 Pod 自動調度資源,自動調整垂直資源配置。
水平調度資源會新增或移除 Kubernetes Pod,以滿足需求。
- 使用水平 Pod 自動調度資源,自動執行水平調度作業。
使用 Cloud Service Mesh 和 Envoy 閘道: Cloud Service Mesh 和 Envoy 閘道可有效將流量轉送至 Windows 應用程式,協助您節省費用。使用更有效率的路由可以減少必須購買的頻寬量。還能提升這些應用程式的效能。
使用共用虛擬私有雲 (VPC) 網路:共用虛擬私有雲網路可讓您在多個專案中共用單一 VPC。共用可減少您需要建立及管理的 VPC 數量,進而節省費用。
提升作業效率
- 使用單一內部負載平衡器處理多個網域:此架構使用內部應用程式負載平衡器卸載 SSL 流量。每個 HTTPS 目標 Proxy 最多可支援支援上限的 SSL 憑證,以便管理不同網域的多個應用程式。
- 基礎架構即程式碼 (IaC):如要管理基礎架構,可以使用 IaC 部署架構。IaC 可確保基礎架構一致且可重複使用。
部署作業
如要部署這個架構,請參閱「部署在代管 Kubernetes 上執行的 Windows 應用程式」。
後續步驟
- 進一步瞭解本設計指南中使用的 Google Cloud 產品:
- 如要查看更多參考架構、圖表和最佳做法,請瀏覽 Cloud 架構中心。
貢獻者
作者:Eitan Eibschutz | 員工技術解決方案顧問
其他貢獻者:
- John Laham | 解決方案架構師
- Kaslin Fields | 開發人員服務代表
- Maridi (Raju) Makaraju | 支援能力技術主管
- Valavan Rajakumar | 主要企業架構師
- Victor Moreno | 雲端網路產品經理