使用 Envoy Gateway 进行 Ingress 和负载均衡
目录
概述网络流量架构配置路由定义 GatewayClass创建 Gateway创建 HTTP 路由配置 Ingress 集群流量负载均衡策略默认轮询加权负载均衡会话亲和性(Sticky Sessions)TLS 和安全性TLS 终止TLS 透传Gateway 与 Service 之间的 mTLS与 MetalLB 集成故障排查概述
Envoy Gateway 为 Kubernetes 集群提供第 7 层(L7)Ingress 和负载均衡。 它基于 Kubernetes Gateway API 构建,并建立在 Envoy Proxy 之上,支持高级的 HTTP、HTTPS、gRPC 和 TCP 路由,同时具备完整的可观测性和策略控制能力。
Envoy Gateway 通过定义 GatewayClass、Gateway 和 Route 资源,统一了 Ingress 流量管理模型,
提供了一种标准、可移植的替代方案,以取代传统的 Ingress 对象。
网络流量架构
-
外部负载均衡器提供一个外部 IP,并将流量映射到集群中。
-
Envoy Gateway 终止 TLS、应用路由规则,并将流量转发到后端服务。
-
Service(虚拟 IP)在各节点上的 Pod 之间分发流量。
该架构以完全符合 Gateway API 的数据平面取代了“Ingress Controller”。
配置路由
定义 GatewayClass
创建 Gateway
了解更多 配置 Gateway API Gateway。
创建 HTTP 路由
了解更多 配置 Gateway API Route。
说明
-
Gateway 为 HTTP/S 流量暴露 80 和 443 端口。
-
HTTPRoute 基于主机名和路径定义路由规则。
-
多个 HTTPRoute 对象可以共享同一个 Gateway。
配置 Ingress 集群流量
Envoy Gateway 会根据你的基础设施支持多种外部流量入口模式。
暴露 Envoy Gateway 的示例 Service:
你可以通过运行以下命令验证分配到的外部 IP:
负载均衡策略
Envoy Gateway 通过其后端引用提供灵活的负载均衡方法。
默认轮询
加权负载均衡
会话亲和性(Sticky Sessions)
Envoy 通过策略配置支持基于 cookie 或源 IP 的会话亲和性:
了解更多关于 BackendTrafficPolicy。
TLS 和安全性
TLS 终止
在 Gateway 监听器级别处理:
TLS 透传
用于端到端加密场景,此时 Envoy 会转发加密流量:
Gateway 与 Service 之间的 mTLS
高级策略 CRD 可启用 mTLS 或客户端证书验证。
与 MetalLB 集成
在没有云负载均衡器的裸金属集群中:
-
配置 MetalLB IPAddressPool 和 L2Advertisement。
-
确保 Envoy Gateway 的 Service 类型为 LoadBalancer。
-
MetalLB 会自动分配一个外部 IP。
-
然后可以通过 DNS 记录将域名(例如 app.example.com)映射到该 IP。