本参考架构提供了一种可用性高且可扩缩的解决方案,该解决方案使用 Cloud Service Mesh 和 Envoy 网关来管理 Google Kubernetes Engine (GKE) 上运行的 Windows 应用的网络流量。它介绍了如何使用可将流量路由到 Pod 和符合 xDS 标准的开源代理的服务来管理这些网络流量。使用这样的架构有助于降低费用并改善网络管理。
本文档面向负责设计和管理在 GKE 上运行的 Windows 应用的云架构师、网络管理员和 IT 专业人员。
架构
下图展示了使用 Cloud Service Mesh 和 Envoy 网关管理在 GKE 上运行的 Windows 应用网络的架构:
该架构包括以下组件:
- 具有 Windows 和 Linux 节点池的区域级 GKE 集群。
- 在两个单独的 GKE Pod 中运行的两个 Windows 应用。
- 每个应用都由一个
ClusterIP
类型的 Kubernetes Service 和一个网络端点组 (NEG) 公开。
- 每个应用都由一个
- Cloud Service Mesh 会为每个 GKE Pod 创建和管理指向 NEG 的流量路由。每条路由都会映射到特定的
scope
。scope
唯一标识 Cloud Service Mesh 入站流量网关。 - 映射到 Cloud Service Mesh 的后端服务的 HTTP 路由。
- 充当 GKE 集群的 Envoy 网关的 Envoy 容器 Pod。
- 在 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 网关:将 Envoy 代理作为独立应用或基于 Kubernetes 的应用网关进行管理。
- Gateway API:一个官方 Kubernetes 项目,专注于 Kubernetes 中的 L4 和 L7 路由。
使用场景
此参考架构的主要用例是管理在 GKE 上运行的 Windows 应用的网络流量。此架构具有以下优势:
简化的网络管理:Cloud Service Mesh 和 Envoy 网关通过管理流向应用的网络流量的集中式控制平面提供简化的网络管理。这些应用可以是在 GKE 或 Compute Engine 上运行的 Linux 或 Windows 应用。使用这种简化的网络管理方案可减少手动配置的需求。
增强的可伸缩性和可用性:为满足不断变化的需求,请使用 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 目标代理都可以支持多个 SSL 证书(不超过支持的数量上限),以管理具有不同网域的多个应用。
- 基础设施即代码 (IaC):如需管理基础设施,可以使用 IaC 部署架构。IaC 有助于确保您的基础设施一致且可重复。
部署
如需部署此架构,请参阅部署在托管式 Kubernetes 上运行的 Windows 应用。
后续步骤
- 详细了解本设计指南中使用的 Google Cloud 产品:
- 如需查看更多参考架构、图表和最佳做法,请浏览云架构中心。
贡献者
作者:Eitan Eibschutz | 员工技术解决方案顾问
其他贡献者:
- John Laham | 解决方案架构师
- Kaslin Fields | 开发技术推广工程师
- Maridi (Raju) Makaraju | 支持性技术主管
- Valavan Rajakumar | 关键企业架构师
- Victor Morno | Cloud 网络产品经理