Envoy Gateway与NGINX Ingress功能对比
在CCE集群中,Envoy Gateway(数据平面为Envoy)与NGINX Ingress均用于实现外部流量路由、负载均衡等能力。本文主要对比NGINX Ingress与Envoy Gateway在各项功能上的差异,帮助您完成业务选型和迁移规划。
流量路由(Routing)
基础路由
| NGINX Ingress功能(通过注解实现) | Envoy Gateway(通过 Gateway API实现) | 实现方式差异与说明 |
|---|---|---|
| Host路由 | 支持 | Envoy Gateway通过HTTPRoute的hostnames字段实现 |
| Path路由 (prefix/exact) | 支持 | Envoy Gateway通过HTTPRoute的rules.matches.path字段实现 |
| TLS终止 (SNI多证书) | 支持 | Envoy Gateway通过Gateway的listeners.tls字段引用Secret实现 |
| HTTP重定向到HTTPS | 支持 | Envoy Gateway通过HTTPRoute的RequestRedirect过滤器实现 |
| 多后端服务转发 | 支持 | Envoy Gateway通过HTTPRoute的backendRefs字段实现,支持多个后端 |
| 多端口监听 | 支持 | Envoy Gateway通过Gateway的listeners字段实现 |
请求/响应修改
| NGINX Ingress功能(通过注解实现) | Envoy Gateway(通过 Gateway API实现) | 实现方式差异与说明 |
|---|---|---|
| 路径重写(Rewrite) | 支持 | 通过HTTPRoute的URLRewrite过滤器实现。 |
| 重定向 | 支持 | Envoy Gateway通过HTTPRoute的RequestRedirect过滤器实现。 |
| 请求头增删改 | 支持 | Envoy Gateway通过HTTPRoute的RequestHeaderModifier过滤器实现。 |
| 响应头增删改 | 支持 | Envoy Gateway通过HTTPRoute的ResponseHeaderModifier过滤器实现。 |
| 注入自定义Nginx片段(snippet) | 不支持 | Envoy Gateway无Nginx snippet概念,可通过EnvoyPatchPolicy资源修改Envoy底层配置。 |
上游策略
| NGINX Ingress功能(通过注解实现) | Envoy Gateway(通过 Gateway API实现) | 实现方式差异与说明 |
|---|---|---|
| 超时(connect/read/send) | 支持 | Envoy Gateway通过HTTPRoute的timeouts字段或者Envoy Gateway的扩展资源BackendTrafficPolicy实现。 Envoy实现方式不同,Envoy超时机制更精细,配置字段与Nginx存在差异。 |
| 重试(retry) | 支持 | 通过Envoy Gateway的扩展资源BackendTrafficPolicy实现:
|
| 负载均衡算法(RR/least_request等) | 支持 | 通过Envoy Gateway的扩展资源BackendTrafficPolicy的loadBalancer.type字段实现:
|
| 连接池/最大连接/熔断等 | 支持 | 通过Envoy Gateway的扩展资源 BackendTrafficPolicy实现:
|
| Sticky session(Cookie 粘性) | 支持 | Envoy Gateway通过一致性哈希负载均衡和StatefulSession扩展实现。 |
灰度与流量控制
| NGINX Ingress功能(通过注解实现) | Envoy Gateway(通过 Gateway API实现) | 差异与说明 |
|---|---|---|
| 按权重分流 | 支持 | Envoy Gateway通过HTTPRoute的backendRefs.weight字段实现。 |
| 按Header/Query条件分流 | 支持 | Envoy Gateway通过HTTPRoute的matches字段(headers/queryParams)实现。 |
| 按Cookie分流 | 支持 | Envoy Gateway通过HTTPRoute的matches字段(匹配Cookie Header)实现。 |
| Mirror(流量镜像) | 支持 | Envoy Gateway通过HTTPRoute的RequestMirror过滤器实现。 |
安全
TLS/证书
| NGINX Ingress功能(通过注解实现) | Envoy Gateway(通过 Gateway API实现) | 差异与说明 |
|---|---|---|
| TLS证书管理 | 支持 | 通过Gateway的TLS配置实现。 |
| TLS版本/加密套件 | 支持 | 通过Envoy Gateway的扩展资源ClientTrafficPolicy实现。 |
认证鉴权
| NGINX Ingress功能(通过注解实现) | Envoy Gateway(通过 Gateway API实现) | 差异与说明 |
|---|---|---|
| Basic Auth | 支持 | 通过Envoy Gateway的扩展资源SecurityPolicy的basicAuth字段实现。 |
| 外部认证 (OAuth2/OIDC/SSO) | 支持 | 通过Envoy Gateway的扩展资源SecurityPolicy的oidc字段实现。 |
| 基于路径/方法的RBAC | 支持 | 通过Envoy Gateway的扩展资源SecurityPolicy的authorization字段实现。 |
限流/防护
| NGINX Ingress功能(通过注解实现) | Envoy Gateway(通过 Gateway API实现) | 差异与说明 |
|---|---|---|
| 限流(基于 IP/Header/key) | 支持 | 通过Envoy Gateway的扩展资源BackendTrafficPolicy实现,支持全局限流和本地限流。 |
| 连接数限制/并发限制 | 部分支持 | 通过Envoy Gateway的扩展资源ClientTrafficPolicy和BackendTrafficPolicy实现。 |
| IP白名单/黑名单 | 支持 | 通过Envoy Gateway的扩展资源SecurityPolicy的authorization字段实现。 |