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