Envoy Gateway (EG) 通过自定义资源定义 (CRD) 扩展了 Kubernetes Gateway API,提供灵活而强大的流量管理功能。这些特性提升了服务的可用性和性能,同时为服务间流量提供了精细的控制。
路由与流量分发
- HTTP/GRPC 路由:使用
HTTPRoute
和GRPCRoute
根据路径、方法、头信息或 gRPC 方法进行路由。 - 请求镜像:通过
HTTPRequestMirrorFilter
镜像请求到不同的后端服务,而不影响原始流量。 - 多协议支持:通过
TCPRoute
和UDPRoute
根据端口号路由 TCP 和 UDP 流量。 - 多集群路由:结合
ServiceImport
和HTTPRoute
实现跨集群服务的路由。
流量控制与优化
- 重试与熔断器:通过
BackendTrafficPolicy
配置重试和熔断器策略,提升可靠性并防止过载。 - 全局速率限制:在多个 Envoy 实例间共享请求限额,保护资源。
- 连接和超时管理:使用
ClientTrafficPolicy
和HTTPRoute
控制并发连接和设置请求超时。 - 故障注入:通过
BackendTrafficPolicy
注入延迟和错误,进行鲁棒性测试。
流量修改
- HTTP 重定向与 URL 重写:使用
HTTPRoute
进行流量重定向(如 HTTP 到 HTTPS)或重写 URL。 - 头信息管理:通过
RequestHeaderModifier
和ResponseHeaderModifier
修改请求和响应头。 - HTTP/3 支持:启用 HTTP/3 提升连接速度,减少延迟。
负载均衡
Envoy Gateway 支持多种负载均衡策略:
- 轮询:顺序分发请求。
- 随机:随机选择上游主机。
- 最少请求:选择负载最轻的主机。
- 一致性哈希:基于哈希算法路由请求。
这些策略通过 BackendTrafficPolicy
配置,适用于 Gateway
、HTTPRoute
或 GRPCRoute
。
客户端流量策略
ClientTrafficPolicy
用于管理 Envoy Proxy 与下游客户端之间的连接行为,包括 TCP 保活、代理协议和超时管理。
通过这些功能,Envoy Gateway 提供了强大且精细的流量控制能力,满足现代服务的需求。