应对 Nginx Ingress 退役,是时候理清这些易混淆的概念了_Blog-HigressOfficial Website
下载量破万,《AI 原生应用架构白皮书》免费下载Know more

应对 Nginx Ingress 退役,是时候理清这些易混淆的概念了

Release Time 2025-12-24


作者:望宸

本文希望提供一种更简单的方式,来理解这些容易混淆的技术概念:Nginx、Ingress、Ingress Controller、Ingress API、Nginx Ingress、Higress、Gateway API。

01 Nginx 和 Kubernetes

我们先按和 Kubernetes 是否有关,分为两类:

Nginx 是在没有 Kubernetes 的年代,流量入口上的事实标准,是独立运行在任何 Linux/Windows 服务器上的 Web 服务器。提供以下主要功能:

  • 接收请求
  • 转发请求
  • 负载均衡
  • 简单的流量治理,例如限流、缓存、重写

而 Ingress API、Ingress Controller、Nginx Ingress、Higress、Gateway API 都依赖 Kubernetes,Kubernetes 出现后,才有了这些概念。其中,Ingress API 是 Kubernetes 管理流量的规范,Ingress Controller 是规范的实现组件,Nginx Ingress 和 Higress 都是规范的完整实现和功能扩展,Gateway API 则是 Ingress API 的升级和下一代。

需要注意的是,Ingress 经常单独出现,需要基于语境来判断,有可能是指 Ingress API,也有可能是指 Ingress 资源,即用户编写的具体配置对象(YAML),遵循 Ingress API。

02 Ingress API 和 Ingress Controller

Ingress API 和 Ingress Controller 分别是 Kubernetes 流量管理的规范和执行器。

Ingress API:用声明式的方式,描述外部流量如何进入集群里的 Service,包括:

  • 如何通过域名访问服务
  • 如何根据 URL 路径路由到不同后端服务
  • 后端服务是谁
  • 是否启用 HTTPS 加密

形象地说,Ingress API 可以理解位 Kubernetes 中管理流量的说明书。

Ingress Controller:是 Ingress API 的实现组件,即执行者,包括

  • 监听 Ingress 资源变化
  • 将 Ingress 规则转换为实际的反向代理配置
  • 接收外部流量并按规则路由
  • 处理 TLS 终止(HTTPS 解密)
  • 提供健康检查、负载均衡、重试等流量治理能力

通过以上能力,Ingress Controller 就实现了 Kubernetes 入口流量的管理。

03 Nginx Ingress 和 Higress

Nginx Ingress 和 Higress 都是 Ingress API 的完整实现和功能扩展。

Nginx Ingress:用 Nginx 作为底层实现的 Ingress API,控制面和数据面耦合在同一个进程/容器中。优点是简单、易用、社区广泛。

缺点是:

  • 不是原生的 Ingress API,Ingress API语义偏弱
  • 扩展靠 Annotation(工程噩梦)
  • 生成 nginx.conf + reload,动态配置能力弱(频繁 reload 影响性能)

适用于简单、稳定、小规模的场景。

Higress:数据面是基于 Enovy,控制面给基于 istio,是原生的 Ingress API。

优点是:

  • 控制面与数据面解耦,可独立扩缩容。
  • 基于 xDS 协议,实现真正的动态配置(无 reload,零中断)。
  • 原生支持插件扩展:Wasm、Lua、Go 插件由控制面统一管理并下发。
  • 兼容多协议 & 多标准:同时支持 Ingress API 和 Gateway API。

缺点是,相比 Nginx 广泛的社区基础,Higress 为代表的原生 Ingress API,部署和维护存在学习成本。

适用于高性能、高扩展、企业级的场景。

04 Nginx Ingress 退役

11月,Kubernetes SIG Network 和安全响应委员会宣布 Ingress NGINX 退役。(⚠️ NGINX 并未退役)

意味着:

  • Ingress NGINX 尽力维护服务至 2026 年 3 月
  • 不再发布任何新版本
  • 不再修复任何漏洞
  • 也不会更新任何可能发现的安全漏洞
  • GitHub 代码库将设置为只读,仅供参考
  • 现有的 Ingress NGINX 部署将继续运行,安装文件也将继续可用

引发退役的根本原因:

  • 多年来,该项目只有一两个人利用业余时间,在工作之余进行开发工作。
  • 尝试和 Gateway API 社区合作开发一个替代控制器,但未能激发更多人参与 Ingress NGINX 的维护。

05 Higress:Nginx Ingress 退役的替代优先方案

  • Kubernetes 官方推荐,即官方社区文档中进行了说明。
  • 对 Nginx Ingress 的 Annotation 兼容度最高,支持51种,覆盖90%的用户场景,这意味着现有的 K8s Ingress YAML 文件无需大量修改即可完成迁移
  • 长期投入,并提供企业版服务,即阿里云 API 网关
  • 提供监听 K8s Ingress(Ingress 模式),适用于希望保持 K8s 原生工作流(如GitOps)的团队 ;和控制台配置 API(API 管理模式),适用于需要集中治理和精细化管理的场景 。

06 Gateway API 和 Ingress API

标题是:Gateway API 和 Ingress API

Gateway API 是 Ingress API 规范的超集和下一代。他的出现,是为了解决 Ingress API 自身无法搞定的问题。其中,Higress 已经支持 Gateway API 标准,用户可从 Ingress API 平滑迁移至 Gateway API。

Ingress API 存在的问题,Gateway API 这样去解决:

  • 职责不清,后果是 Ingress 是“一人写全”,没有权限边界。

-> Gateway API 通过角色分离解决,定义基础设施提供者、集群管理员、应用开发者。

  • 功能表达能力弱,依赖 Controller 特有扩展,后果是不标准、不同实现之间迁移成本高。

-> Gateway API 通过 Wasm、插件、服务网格集成解决扩展的标准化。

  • 仅支持 HTTP/HTTPS,无法处理 TCP/UDP/gRPC 等协议

-> 云原生应用早已不只是 Web 服务,Gateway API 通过统一的 API,管理所有南北向流量。

  • 无法表达复杂路由逻辑,微服务治理需求远超 Ingress 能力。

-> Gateway API 支持 Wasm、插件、服务网格集成,通过标准化的高级路由解决。

  • 一个 Ingress Controller 全局共享,缺乏多租户隔离,多租户场景下存在安全和配置冲突风险。

-> Gateway API 提供了独立 Gateway 的实例。