文档

MSE Ingress概览

更新时间:

在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、ASK、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 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工作示意图。

ingress的应用场景

安装MSE Ingress Controller

说明

MSE Ingress Controller 支持在ACK 托管版ACK Serverless ACS 容器服务产品中安装。

方式一:在创建容器服务集群时安装MSE Ingress Controller

创建ACK 托管版ACK Serverless 集群ACS 集群时,在组件配置阶段的Ingress参数配置区域,选择安装MSE Ingress。关于创建集群,请参见创建ACK托管集群创建ACK Serverless 集群创建ACS集群

image

方式二:在容器集群组件管理页面安装MSE Ingress Controller

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情

  3. 在集群管理页左侧导航栏,选择运维管理 > 组件管理

  4. 组件管理页面,单击网络页签,找到MSE Ingress Controller,在MSE Ingress Controller组件的右下角,单击安装

    image

方式三:在容器服务集群路由页面安装MSE Ingress Controller

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情

  3. 在集群管理页左侧导航栏,选择网络 > 路由

  4. 路由页面,单击页面右上角的创建 Ingress,在创建 Ingress页签上网关类型选择MSE云原生网关。在网关类型下方提示处单击安装组件

    image

变更记录

版本号

变更时间

变更内容

变更影响

1.1.9

2024年06月28日

支持ACS容器服务集群,支持多可用区vsw,支持创建网关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日

  • Controller从应用市场下线。

  • 新增Controller前置授权。

  • 支持arm64架构。

此次升级不会对业务造成影响。

2023年06月

版本号

变更时间

变更内容

变更影响

1.1.3

2023年06月02日

  • 新增支持TLS硬件加速的地域检测。

  • Controller副本数调整为1,降低成本。

此次升级不会对业务造成影响。

2023年03月

版本号

变更时间

变更内容

变更影响

1.1.2

2023年03月31日

收敛Controller的权限。

此次升级不会对业务造成影响。

2022年12月

版本号

变更时间

变更内容

变更影响

1.1.0

2022年12月23日

Controller上线组件管理。

此次升级不会对业务造成影响。