本文希望提供一种更简单的方式,来理解这些容易混淆的技术概念:Nginx、Ingress、Ingress Controller、Ingress API、Nginx Ingress、Higress、Gateway API。
1.Nginx 和 Kubernetes
Cloud Native
我们先按和 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。
2.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 入口流量的管理。
3.Nginx Ingress 和 Higress
Nginx Ingress 和 Higress 都是 Ingress API 的完整实现和功能扩展。
图片
Nginx Ingress:用 Nginx 作为底层实现的 Ingress API,控制面和数据面耦合在同一个进程/容器中。优点是简单、易用、社区广泛。


闽公网安备 35020602001684号