Kubernetes Gateway API 网关选型全景对比

发布于:2025-07-02 ⋅ 阅读:(17) ⋅ 点赞:(0)

对比分析 NGINX Ingress、Kong Gateway、Apache APISIX、Envoy Gateway 等支持 Gateway API 的主流 Kubernetes 网关,从性能、安全、可观测性、社区活跃度等多个维度深入解读。

阅读原文请转到:https://jimmysong.io/blog/kubernetes-gateway-api-comparison/

Kubernetes 最初主要依赖 Ingress Controller(如社区的 NGINX Ingress)暴露 HTTP 服务。近年随着微服务与多协议需求增加,业界推动采用 Gateway API[1] 作为下一代标准,将流量网关演进为可管理 L4/L7 多协议流量的控制面。本文对比几种支持 Gateway API 的代表性网关:NGINX Ingress、Kong Gateway、Apache APISIX、Envoy Gateway,从网关 API 支持、性能、启动部署、安全、可观测性、社区活跃度等维度展开分析。

Gateway API 支持情况

  • • NGINX Ingress Controller: 传统基于 Ingress API 实现。针对 Gateway API,NGINX 官方推出了 NGINX Gateway Fabric[2] 项目(GA)来支持核心 Gateway API 功能;社区版 ingress-nginx 本身主要仍用旧有 Ingress 资源。

  • • Kong Gateway(通过 KIC/Gateway Operator):Kong Gateway[3] 本身是高性能 API 网关,通过官方控制器如 Kong Ingress Controller (KIC)[4] 或 Gateway Operator[5] 实现对 Kubernetes Gateway API 的支持。控制器负责监听 Gateway/Route 等资源,并将配置同步至 Kong Gateway(数据面),支持多协议(HTTP/gRPC/TCP/UDP)流量管理。

  • • Apache APISIX: APISIX 以 API Gateway 为定位,支持自定义 CRD(例如 APISIXRoute);针对 Gateway API,目前正通过提案(AEP-0001[6])开发 v1alpha2 支持,尚处于早期阶段。未来 APISIX Ingress Controller 将支持 Gateway、跨集群等扩展功能。

  • • Envoy Gateway (EG): 原生基于 Gateway API 设计,使用 Gateway/HTTPRoute 等资源动态配置托管的 Envoy 代理。Envoy Gateway[7] 将 Envoy 作为数据平面,充分实现了 Gateway API 所有核心功能。

网关

Gateway API 支持

扩展能力/插件

NGINX Ingress Controller

传统 Ingress API;NGINX Gateway Fabric (GA) 支持核心 Gateway API

通过 NGINX 模板、Snippet 等自定义配置;支持 WAF、Lua 等扩展

Kong Gateway (KIC/Gateway OP)

原生支持 Gateway API(继承 Ingress API)

内置丰富插件(认证、限流、转码等);可用 Kong 插件开发环境动态扩展

Apache APISIX

传统 APISIXRoute 等;正在开发 Gateway API 支持(v1alpha2)

丰富插件系统(认证、限流、QoS、Websocket、gRPC 等);易于添加自定义插件

Envoy Gateway (EG)

完全实现 Gateway API

利用 Envoy 强大扩展:TLS、Wasm、外部认证等;支持 Gateway API 扩展 CRD(如 SecurityPolicy)

性能(QPS、延迟、资源消耗)

综合社区测试和官方基准:

  • • Apache APISIX: 性能突出。API7(APISIX 背后团队)测试表明,APISIX 在无插件场景下可达约 16-17 万 QPS(95% 延迟 2.3ms);启用插件后(限流、认证等),仍能保持 13-14 万 QPS 左右。与 Kong 相比,APISIX 在相同场景下吞吐约为 Kong 的 1.4–2 倍;例如在 1 条路由 + 限流测试中,APISIX 平均 QPS≈13787,Kong≈9840(APISIX 140%);添加认证插件后,APISIX 8933 QPS,Kong 3977 QPS(近 2.2 倍)。

  • • Kong Gateway: Kong 官方文档公布的基准显示,单实例 Kong 在简单代理场景下可稳定 12.4–12.7 万 RPS(P99 7-10ms),即使加了限流/认证插件,吞吐也可达 9.1–9.7 万 RPS。实际性能与 APISIX 相比略低。John Howard 的 Gateway API Bench[8] 中,Kong Ingress(KIC)在简单场景下也能达到 3.7 万 QPS(单连接测试),但在大规模规则更新时性能有所下降。

  • • NGINX Ingress: 性能相对较弱。John 的测试发现,在流量测试中 NGINX Ingress 的性能远低于其他实现(约为平均水平的 1/5-1/20)。阿里云社区测试[9]也观察到,在 CPU 利用率上升到较高水平时,NGINX Ingress 吞吐大幅下降,有时还会发生 Pod 重启导致吞吐骤降。其原因之一是控制面(Go)和数据面(Nginx)运行在同一容器内,高负载时会互相争用资源。

  • • Envoy Gateway: 性能与 Envoy 数据面能力直接相关。John 的基准显示 Envoy Gateway 在多数测试中表现与 Istio/Cilium 接近(均为 Envoy)的最佳水平;其单连接 QPS 3.45 万,16 连接时可突破 13 万 QPS。由于 Envoy 的高效架构,Envoy Gateway 能够在高并发和多路由场景下保持稳定,且常见瓶颈为单核。总体而言,基于 Envoy 的实现在高性能和可扩展性上具有显著优势。

启动时间与部署复杂度

John Howard 的 Gateway API Bench 提供了启动时间比较:在单实例简单部署情况下,Kong Ingress Controller 启动非常快(约 1s),Envoy Gateway 约需 10–23s,NGINX Ingress 约 17–29s。同时部署多个 Gateway 时,Envoy Gateway 的并行启动也明显快于 NGINX(Envoy ~10s,NGINX ~17s)。可见:

  • • Kong/In­­gressController 启动轻量(采用单容器控制面 + 数据面或 KIC 单纯控制面)。

  • • Envoy Gateway 需要初始化 CRD 对象、Envoy 配置等,启动稍慢。

  • • NGINX Ingress 混合了控制平面和 NGINX 数据平面,容器体积大、启动相对慢且可能因初始化过多组件而较复杂。

部署复杂性上,各项目均提供 Helm Chart 或 Operator:Kong 和 Envoy Gateway 都有专门的 Operator/Chart 引导安装,APISIX 和 ingress-nginx 也可通过常规 Helm 或清单部署。总体来看,Kong 和 ingress-nginx 的部署相对成熟简便,Envoy Gateway 和 APISIX 随产品成熟度不同,配置细节稍多一些。

安全能力(mTLS、认证授权)

  • • TLS/双向认证 (mTLS): 所有网关都支持标准的 TLS 终止。NGINX Ingress 可通过 Ingress 注解启用客户端证书验证(mTLS);Kong Gateway 和 APISIX 都提供了 mTLS 插件 或配置方式以验证客户端证书;Envoy Gateway 利用 Envoy 的原生功能支持客户端证书,以及 Gateway API 的 BackendTLSPolicy[10] 来配置上游 TLS。

  • • 认证授权: Kong 和 APISIX 提供了丰富的认证授权插件,例如 JWT、Key-Auth、OAuth2 等,且支持自定义 Lua/WASM 扩展,可实现细粒度的访问控制。NGINX Ingress 主要依赖 NGINX 内建或第三方模块(如 basic auth、JWT 验证脚本等)。Envoy Gateway 通过 SecurityPolicy 扩展(CRD)集成了外部认证服务和策略配置,并支持 Envoy Proxy 的内置功能(外部授权、JWT 验证、IP 白名单等)。

  • • 其他安全特性: 部分网关(如 Kong Enterprise、NGINX Plus)还提供高级安全功能(WAF、动态 IDP 集成等)。总的来看,这四种开源网关都能够满足常见的加密传输和认证需求,其中 Kong、APISIX 插件生态最为丰富,而 Envoy Gateway 借助 Envoy 实现了高度灵活的安全扩展。

可观测性(指标、日志、Tracing)

  • • 指标 (Metrics): NGINX Ingress 可输出 Prometheus 格式的指标(包含 NGINX 核心和 Ingress 控制器自身指标)。Kong Gateway 提供内置的 Prometheus 指标支持和/或通过插件导出指标;APISIX 通过 Metrics 插件输出 Prometheus 格式数据,并可对接专用监控面板。Envoy Gateway 则直接使用 Envoy 的统计指标(通过 Gateway API Exported Metrics 导出),并内置对 OpenTelemetry/Prometheus 的支持,用户可自动收集到下游应用延迟、吞吐等指标。

  • • 日志(日志采集): 所有网关均记录访问日志和错误日志。Kong/APISIX 支持将日志送往多种后端(文件、Syslog、Elasticsearch 等),Envoy Gateway 则利用 Envoy 的访问日志机制,可以配置格式和目标(文件、gRPC 推送等)。

  • • Tracing/分布式追踪: Kong 和 APISIX 均支持通过插件注入 OpenTracing/OpenTelemetry 报头,以配合 Jaeger/Zipkin 等链路追踪系统。Envoy Gateway 支持通过其配置机制启用 Envoy 原生链路追踪功能。

  • • 可视化集成: 这些项目通常提供与 Grafana+Prometheus 的集成示例(如 ingress-nginx 的 Grafana 仪表盘),也可结合云监控系统使用。Envoy Gateway 官方文档专门列出了 Gateway API 指标和访问日志等内容,方便用户快速配置监控。总之,各网关在可观测性方面都提供了丰富支持,部分项目在标准化配置与默认集成方面更具优势。

社区活跃度(GitHub 指标对比)

根据最新 GitHub 数据,各项目代码仓库活跃度如下:

  • • kubernetes/ingress-nginx(NGINX Ingress):约 18.7k 星标,约 348 个开放 Issue,累积提交 8,098 次。

  • • apache/apisix(Apache APISIX):约 15.3k 星标,285 个 Issue,4,486 次提交。

  • • Kong/kubernetes-ingress-controller(Kong Ingress Controller):约 2.3k 星标,231 个 Issue,5,350 次提交。

  • • envoyproxy/gateway(Envoy Gateway):约 2.0k 星标,401 个 Issue,3,343 次提交。

项目

GitHub Stars

Open Issues

Commits

备注

NGINX Ingress (k8s 仓库)

18.7k

348

8,098

社区项目

Apache APISIX

15.3k

271

4,494

Apache 项目

Kong Ingress Controller

2.3k

231

5,350

Kong 官方维护

Envoy Gateway (EG)

2.0k

401

3,343

Envoy 官方项目

选型建议

根据以上分析,以下是针对不同使用场景的选型建议:

🚀 高性能场景

推荐:Apache APISIX 或 Envoy Gateway

  • • Apache APISIX:在需要极致性能的 API 网关场景,APISIX 表现最佳(16-17 万 QPS),插件丰富且性能损耗较小

  • • Envoy Gateway:适合需要 Gateway API 标准化且对性能有较高要求的场景,基于 Envoy 的架构保证了高并发稳定性

🏢 企业级生产环境

推荐:Kong Gateway

  • • 成熟的商业化产品,企业版提供完整的安全、监控、支持服务

  • • 丰富的插件生态和良好的扩展性

  • • 快速启动(~1s)和相对简单的部署流程

  • • 适合需要专业技术支持的大型企业

🔄 从 Ingress 迁移

推荐:NGINX Gateway Fabric

  • • 对于已使用 NGINX Ingress 的团队,NGINX Gateway Fabric 提供了平滑的 Gateway API 迁移路径

  • • 熟悉的 NGINX 配置方式和运维经验可以复用

  • • 但需要注意性能瓶颈,适合中小规模应用

🔮 未来标准化需求

推荐:Envoy Gateway

  • • 完全基于 Gateway API 设计,最符合 Kubernetes 未来标准

  • • 利用 Envoy 的强大扩展能力和 CNCF 生态

  • • 适合希望跟进最新技术标准的团队

💡 快速原型和中小项目

推荐:Apache APISIX

  • • 相对轻量的部署和配置

  • • 性能优异,能以较少资源支撑较大流量

  • • 活跃的开源社区和中文文档支持

📋 选型决策矩阵

优先级

NGINX Ingress

Kong Gateway

Apache APISIX

Envoy Gateway

高性能需求

❌ 不推荐

✅ 推荐

⭐ 强烈推荐

✅ 推荐

Gateway API

⚠️ 需额外产品

✅ 支持

⚠️ 开发中

⭐ 原生支持

企业级支持

✅ 社区成熟

⭐ 商业支持

✅ Apache 项目

✅ CNCF 项目

部署简易性

⚠️ 较复杂

✅ 简单

✅ 简单

⚠️ 配置较多

插件生态

⚠️ 有限

⭐ 丰富

⭐ 丰富

✅ 基于 Envoy

社区活跃度

⭐ 最高

✅ 活跃

⭐ 很高

✅ 快速发展

总体建议

  • • 追求性能优先选择 Apache APISIX

  • • 企业级应用选择 Kong Gateway

  • • 标准化需求选择 Envoy Gateway

  • • 现有 NGINX 用户可考虑 NGINX Gateway Fabric 作为过渡方案

结论

Kubernetes 流量网关正从早期的单协议 Ingress(以 NGINX 为代表)演进到支持多协议、可扩展的现代 Gateway API 解决方案。新一代网关(如 Kong、APISIX、Envoy Gateway)更注重性能优化、协议覆盖、认证插件和标准 API 的支持。随着 Gateway API 的普及和项目生态的完善,未来云原生流量网关将更加强调多协议支持、自动化控制面、内置安全和可观测性。


引用链接

[1] Gateway API:https://github.com/kubernetes-sigs/gateway-api/blob/main/site-src/implementations.md
[2]NGINX Gateway Fabric:https://github.com/nginx/nginx-gateway-fabric
[3]Kong Gateway:https://github.com/Kong/kong
[4]Kong Ingress Controller (KIC):https://github.com/Kong/kubernetes-ingress-controller
[5]Gateway Operator:https://github.com/Kong/gateway-operator
[6]AEP-0001:https://apisix.apache.org/docs/ingress-controller/aeps/gateway-api/
[7]Envoy Gateway:https://gateway.envoyproxy.io/
[8]Gateway API Bench:https://github.com/howardjohn/gateway-api-bench
[9]阿里云社区测试:https://www.alibabacloud.com/blog/kubernetes-gateway-selection-nginx-or-envoy_599485
[10]`BackendTLSPolicy`:https://gateway.envoyproxy.io/docs/api/gateway_api/backendtlspolicy/


网站公告

今日签到

点亮在社区的每一天
去签到