在Kubernetes集群中,Ingress对集群服务(Service)中外部可访问的API对象进行管理,提供七层负载均衡能力。为了更好地支持云原生应用场景,MSE云原生网关与容器服务Kubernetes版 ACK(Container Service for Kubernetes)进行了深度集成和优化,推出了MSE Ingress,提供更强大的集群入口流量管理能力。本文介绍MSE Ingress的基本概念、功能介绍、使用说明、工作原理和安装说明。
MSE Ingress基本概念
在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,几乎承载着集群内服务访问的所有流量。Ingress是Kubernetes中的一个资源对象,用于管理集群外部访问集群内部服务的方式。您可以通过Ingress资源来配置不同的转发规则,从而达到根据不同的规则设置访问集群内不同的Service所对应的后端Pod。
标准的Ingress资源仅支持配置HTTP流量的规则,无法配置一些高级特性,例如负载均衡的算法、Session Affinity等。这些高级特性都需要由Ingress实现者(Nginx Ingress、MSE Ingress)提供支持。
MSE Ingress是在MSE云原生网关之上提供更为强大的Ingress流量管理方式,兼容Nginx Ingress以及50多个Nginx Ingress的注解,覆盖90%以上的Nginx Ingress业务场景,支持多服务版本同时灰度发布、灵活的服务治理能力以及全方位的安全防护保障,能够满足大规模云原生分布式应用的流量治理诉求。
MSE Ingress功能介绍
更多关于MSE Ingress云原生网关的功能介绍,请参见:
MSE Ingress使用说明
容器服务ACK托管版、ACK Serverless、ACS等Kubernetes产品,能够借助MSE Ingress将集群外部流量路由到集群内部的Service,从而实现七层负载均衡功能。您需要在K8s集群中部署MSE Ingress Controller,该组件负责监听MseIngressConfig资源,动态管理MSE云原生网关实例的生命周期、全局参数配置以及Ingress资源的监听选项。由MSE云原生网关负责监听和转换K8s集群中的Ingress资源为自身所需的流量治理配置,完成内部服务对外暴露。具体操作,请参见通过MSE Ingress访问容器服务和容器计算服务。
K8s标准的Ingress仅支持简单的HTTP流量管理,高阶能力通常用注解方式拓展。MSE Ingress在兼容Nginx Ingress 注解的同时,推出了额外的注解来增强流量治理和安全防护能力。更多信息,请参见MSE Ingress高级用法。
MSE Ingress工作原理
组成部分
MSE Ingress Controller:
MSE Ingress Controller本身不是网络数据平面,它是管理MSE云原生网关实例以及配置的控制平面。即MSE Ingress Controller不处理任何业务请求流量,它位于流量旁路,管理着处理业务流量的MSE云原生网关实例。
您需要在ACK 托管版/ACK Serverless 集群/ACS 集群中安装MSE Ingress Controller,通过使用该组件提供的MseIngressConfig的CRD资源以声明式配置的方式来管理云原生网关实例,以及设置网关对Ingress资源的监听选项。
关于如何安装MSE Ingress Controller组件,请参见管理MSE Ingress Controller组件。
MSE云原生网关:
MSE云原生网关由MSE Ingress Controller根据用户配置的MseIngressConfig资源创建,包含控制面(Control Plane)和数据面(Data Plane)。
控制面(Control Plane):控制面监听您已关联的容器服务集群中的Ingress、IngressClass、Service等资源,经内部解析之后实时下发给网关数据面。
数据面(Data Plane): 数据面是流量治理配置的实施者,按照控制面下发的治理规则处理外部请求,并转发到后端目标服务。
工作原理
MSE Ingress Controller负责监听集群中创建的MseIngressConfig资源,实时动态维护该资源对应的云原生网关实例的生命周期以及该网关与容器服务集群的关联性。
MSE云原生网关的控制面通过关联的容器服务集群的API Server获取Ingress资源的变化,然后动态更新MSE云原生网关的路由规则。当MSE云原生网关收到请求时,匹配Ingress转发规则转发请求到后端Service所对应的Pod。
Kubernetes中Service、Ingress、IngressClass、MseIngressConfig和MSE Ingress Controller存在以下关系:
Service:是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。
Ingress:是反向代理规则,用来规定HTTP和HTTPS请求应该被转发到哪个Service上。例如,根据请求中不同的Host和URL路径,使请求转发到不同的Service上。
IngressClass:是Ingress处理器的描述,用于在K8s集群中声明一个Ingress处理器实现,关联该IngressClass的Ingress资源会被该Ingress处理器解析。此外,需要通过IngressClass的Parameter字段关联一个MseIngressConfig(MSE云原生网关),用于实施被解析的Ingress资源描述的流量管理规则。
MseIngressConfig:是由MSE Ingress Controller提供的CRD,用于描述云原生网关实例的基本信息。
MSE Ingress Controller:本身不是网络数据平面,它是管理MSE云原生网关实例以及配置的控制平面。MSE Ingress Controller负责监听集群中的MseIngressConfig资源,协调MSE云原生网关实例用于实施Ingress资源描述的流量管理规则。
下图是MSE Ingress Controller工作示意图。
安装MSE Ingress Controller
MSE Ingress Controller 支持在ACK 托管版,ACK Serverless和ACS 容器计算服务产品中安装。
方式一:在创建容器服务或容器计算服务集群时安装MSE Ingress Controller
创建ACK 托管版集群和ACK Serverless集群时,在组件配置阶段的Ingress参数配置区域,选择安装MSE Ingress。关于创建集群,请参见创建ACK托管集群和创建ACK Serverless 集群。
创建ACS集群时,在组件配置区域的Ingress参数处,选择安装MSE Ingress。关于创建ACS集群,请参见创建ACS集群。
方式二:在容器服务或容器计算服务集群组件管理页面安装MSE Ingress Controller
方式三:在容器服务或容器计算服务集群路由页面安装MSE Ingress Controller
ACK 托管版/ACK Serverless
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在路由页面,单击页面的创建 Ingress,在创建 Ingress弹框中选择网关类型为MSE Ingress。在网关类型下方提示处单击安装组件。
ACS
登录容器计算服务控制台,在左侧导航栏选择集群。
在集群页面,单击目标集群ID,然后在左侧导航栏,选择网络 > 路由。
在路由页面,单击页面的创建 Ingress,在创建 Ingress弹框中选择网关类型为MSE Ingress。在网关类型下方提示处单击安装组件。
变更记录
2024年11月
版本号 | 变更时间 | 变更内容 | 变更影响 |
1.1.12 | 2024年11月01日 | 优化网关版本与容器产品 ACK/ASK/ACS 的匹配逻辑。 | 此次升级不会对业务造成影响。 |
2024年08月
版本号 | 变更时间 | 变更内容 | 变更影响 |
1.1.11 | 2024年08月16日 | 支持跨Region和VPC创建网关实例,支持OpenTelemetry链路追踪。 | 此次升级不会对业务造成影响。 |
2024年07月
版本号 | 变更时间 | 变更内容 | 变更影响 |
1.1.10 | 2024年07月18日 | 优化网关Serverless版本的Ingress监听。 | 此次升级不会对业务造成影响。 |
2024年06月
版本号 | 变更时间 | 变更内容 | 变更影响 |
1.1.9 | 2024年06月28日 | 支持ACS容器计算服务集群,支持多可用区,支持创建网关Serverless实例。 | 此次升级不会对业务造成影响。 |
2023年11月
版本号 | 变更时间 | 变更内容 | 变更影响 |
1.1.7 | 2023年11月13日 | 调整安装Controller时创建和复用MSE云原生网关的全局参数。 | 此次升级不会对业务造成影响。 |
1.1.6 | 2023年11月07日 | 支持安装Controller时创建和复用MSE云原生网关。 | 此次升级不会对业务造成影响。 |
2023年08月
版本号 | 变更时间 | 变更内容 | 变更影响 |
1.1.5 | 2023年08月28日 | 优化Controller的授权逻辑。 | 此次升级不会对业务造成影响。 |
1.1.4 | 2023年08月16日 |
| 此次升级不会对业务造成影响。 |
2023年06月
版本号 | 变更时间 | 变更内容 | 变更影响 |
1.1.3 | 2023年06月02日 |
| 此次升级不会对业务造成影响。 |
2023年03月
版本号 | 变更时间 | 变更内容 | 变更影响 |
1.1.2 | 2023年03月31日 | 收敛Controller的权限。 | 此次升级不会对业务造成影响。 |
2022年12月
版本号 | 变更时间 | 变更内容 | 变更影响 |
1.1.0 | 2022年12月23日 | Controller上线组件管理。 | 此次升级不会对业务造成影响。 |