Gateway API 与 Ingress:Kubernetes 网络的未来

作者:API传播员 · 2025-11-15 · 阅读时间:5分钟

随着 Kubernetes 成为云原生应用程序部署的核心平台,如何高效管理服务和基础设施的访问已经成为一个关键挑战。Kubernetes 的核心 Ingress 资源虽然能够满足基本的第 7 层(L7)路由需求,但在灵活性、功能性和标准化方面仍存在一定的局限性。为了解决这些问题,Gateway API 项目应运而生,作为 Ingress 的继任者,提供了一套更为可移植的网络管理资源。本文将详细解析 Kubernetes Ingress 与新兴 Gateway API 标准之间的关键差异,并探讨 Gateway API 如何解决 Ingress 的局限性,为 Kubernetes 网络的未来提供重要的参考。


什么是 Kubernetes 中的 Ingress?

Ingress 是 Kubernetes 中用于管理外部访问的一种集中式资源,主要针对第 7 层的 HTTP/HTTPS 流量。它通过定义路由规则,将外部请求引导至 Kubernetes 集群中的服务,从而避免为每个服务单独配置负载均衡器。

Ingress 资源的核心功能包括:

  • 定义路由规则,例如主机名、路径和 TLS 配置。
  • 通过入口控制器将路由规则应用到数据平面(如反向代理或负载均衡器)。
  • 简化外部访问管理,使服务专注于应用交付,而无需处理网络细节。

Ingress 的抽象层次使得 Kubernetes 团队可以集中管理外部访问,同时解耦服务与外部依赖关系。


Ingress 的局限性

尽管 Ingress 控制器在网络和流量管理方面发挥了重要作用,但其本身存在一些显著的局限性:

  1. 协议限制:Ingress 仅支持 HTTP 和 HTTPS 等第 7 层协议。对于其他 L7 协议(如 gRPC)以及非 L7 协议(如 TCP 和 UDP),需要依赖自定义控制器扩展,这导致功能碎片化。
  2. 标准化不足:不同供应商的 Ingress 控制器实现方式各异,语法和扩展功能不统一。例如,HAProxy 和 NGINX 的 Ingress 控制器使用不同的语法和扩展集。
  3. 高级功能缺失:核心 Ingress 规范缺乏对生产环境中常见高级功能(如 A/B 测试、金丝雀部署、分布式追踪等)的支持。这些功能通常需要依赖供应商特定的扩展,导致供应商锁定问题。
  4. 功能依赖控制器:Ingress 资源主要关注 HTTP 路由,而关键的网络功能需要通过底层的 Ingress 控制器实现。这种分离增加了配置的复杂性。

Gateway API 的引入

为了解决上述问题,Gateway API 项目被提出,旨在统一不同 Ingress 控制器的功能,并扩展其能力。

Gateway API 的核心特性

  1. 协议支持:Gateway API 同时支持第 4 层(L4)和第 7 层(L7)协议,包括 TCP、UDP、HTTP 和 gRPC 等,扩展了其适用范围。
  2. 新资源对象
    • GatewayClass:定义控制器功能。
    • Gateway:实例化网络网关。
    • HTTPRoute:声明 HTTP 路由规则,是 Ingress 资源的直接替代。
    • 未来还将支持更多协议的资源对象。
  3. 高级功能支持:内置支持高级流量管理功能,如请求镜像、金丝雀部署、细粒度流量指标等,避免了供应商特定扩展的依赖。
  4. 标准化模型:通过建立通用标准,Gateway API 实现了跨供应商的可移植性,降低了迁移成本。

Gateway API 的优势

Gateway API 提供了更强大的流量控制能力。例如,它支持基于任意标头和路径的高级模式匹配与过滤,适用于更复杂的用例。此外,Gateway API 的标准化设计避免了供应商锁定问题,为开发者提供了更灵活的声明式管理方式。

目前,Gateway API 的核心资源对象(如 GatewayClass、Gateway 和 HTTPRoute)已达到 GA(一般可用)状态,而 L4 支持仍处于 Alpha 阶段,未来可能会根据社区需求进一步发展。


Ingress 与 Gateway API 的主要区别

特性 Ingress Gateway API
协议支持 仅支持 HTTP 和 HTTPS 支持 L4(TCP、UDP)和 L7(HTTP、gRPC)
流量管理 高级功能有限,需依赖供应商扩展 内置支持流量拆分、镜像、注入等功能
可移植性 定义依赖于供应商实现 提供跨平台的统一标准
资源对象 无新增资源对象 引入 GatewayClass、Gateway、HTTPRoute 等
路由自定义 仅支持路径和主机的路由规则 支持基于标头、路径和主机的高级路由
扩展功能 需通过供应商特定注释实现 内置支持身份验证、速率限制等功能

值得注意的是,Ingress 规范已冻结,所有新功能将添加到 Gateway API 中。


Gateway API 的未来

Gateway API 的目标是标准化和扩展 Kubernetes 网络管理功能。通过引入通用对象和定义,Gateway API 提供了对多协议支持、高级流量控制和扩展规则定制的支持。这不仅提升了跨平台的可移植性,还为服务网格等复杂用例提供了更强大的能力。

未来,Gateway API 将逐步取代供应商特定的 Ingress 实现,但不会完全取代现有的 Ingress 控制器。团队可以根据需求选择继续使用基本的 Ingress 功能,或转向 Gateway API,以满足多协议支持和高级流量管理的需求。


通过 Gateway API 的引入,Kubernetes 网络管理迎来了全新的发展阶段。它不仅解决了 Ingress 的局限性,还为开发者提供了更强大的工具来应对复杂的网络需求。随着 Gateway API 的不断成熟,它将成为 Kubernetes 网络的核心标准,为云原生应用的未来奠定基础。


原文链接: https://konghq.com/blog/engineering/gateway-api-vs-ingress