ACK托管集群和ACK Serverless集群均支持使用Nginx Ingress、ALB Ingress和MSE Ingress对外暴露容器服务和管理路由。Nginx Ingress需要自行维护,ALB Ingress和MSE Ingress使用的网关为全托管模式。本文比较了Nginx Ingress、ALB Ingress和MSE Ingress在典型应用场景、工作流程和功能等方面的差异,帮助您选择合适的Ingress类型。
背景信息
Nginx Ingress:基于开源社区Ingress NGINX Controller提供七层流量处理能力与丰富的高级路由功能,与上游社区完全兼容,支持扩展能力。该组件由您自主运维,无SLA保障,支持丰富定制化能力。
ALB Ingress:阿里云自研云原生Ingress网关,兼容Nginx Ingress,采用全托管一体化设计,支持SSL硬件加速,具备自动弹性、低时延、处理复杂业务路由的能力。单个ALB实例支持100万QPS,提供更强大的Ingress流量管理功能。关于ALB Ingress云原生网关的详细介绍,请参见ALB Ingress概述。
MSE Ingress:阿里云开源Higress企业版,兼容Nginx Ingress,适用于微服务场景,支持多种服务发现、认证鉴权以及多语言插件扩展,提供灰度发布、预热和限流等核心能力。单个MSE云原生网关实例支持100万QPS,提供更为强大的Ingress流量管理功能。关于MSE云原生网关的详细介绍,请参见云原生网关概述。
典型应用场景
类型 | 典型应用场景 |
Nginx Ingress |
|
ALB Ingress |
|
MSE Ingress |
|
工作示意图
通过从请求域名www.example.net/app
到转发并访问具体容器服务的工作示意图,对比Nginx Ingress、ALB Ingress和MSE Ingress之间工作方式的差异。
Nginx Ingress
Nginx Ingress Controller是一个集控制面和数据面于一体的实现方案。每个Nginx Ingress Controller Pod中有一个Controller进程(控制面),同时也包含Nginx相关进程(数据面),因此配置流量和用户请求流量都会由Nginx Ingress Controller Pod处理。
ALB Ingress
ALB Ingress Controller通过API Server动态地获取Ingress资源和AlbConfig资源的变化,然后更新ALB实例。与Nginx Ingress Controller不同,ALB Ingress Controller是托管组件,作为ALB实例的控制面,不直接处理用户请求流量,用户流量的转发由ALB实例来实现。
MSE Ingress
MSE Ingress Controller负责监听集群中的MseIngressConfig资源,协调MSE云原生网关实例用于实施Ingress资源描述的流量管理规则。与Nginx Ingress Controller不同,MSE Ingress Controller是管理MSE云原生网关实例以及配置的控制面,MSE Ingress Controller Pod不直接处理用户请求流量,用户流量的路由和转发由MSE云原生网关实例来实现。
功能对比
比较项 | Nginx Ingress | ALB Ingress | MSE Ingress |
产品定位 |
|
|
|
产品架构 | 基于Nginx+Lua插件扩展。 |
|
|
基础路由 |
|
|
|
支持协议 |
|
|
|
配置变更 |
|
|
|
认证鉴权 |
| 支持TLS身份认证。 |
|
性能 |
|
|
|
可观测能力 |
|
|
|
运维能力 |
|
| 网关全托管,免运维。 |
安全 |
|
|
|
费用成本 |
|
| |
组件管理 | |||
服务治理 |
|
|
|
扩展性 | 使用Lua脚本。 | 使用AScript自研脚本。更多信息,请参见可编程脚本AScript概述。 |
|
云原生集成 | 自行运维组件,与阿里云ACK或ACK Serverless等容器服务结合使用。更多信息,请参见Ingress概述。 |
| 用户侧组件,与阿里云ACK或ACK Serverless等容器服务结合使用,且支持Nginx Ingress核心 Annotation无缝转换,关于MSE Ingress支持的Annotation,请参见MSE Ingress支持的Annotation。 |
相关文档
关于如何从Nginx Ingress迁移到其他类型Ingress或ASM网关的详细内容,请参见: