创建应用路由(MSE Ingress)

EDAS的Ingress是用于将外部HTTP/HTTPS流量路由到内部Service的路由规则集合。您可以通过配置不同的应用路由(K8s Ingress),从而根据不同的路由转发规则访问集群内不同的Service。本文介绍在EDAS控制台如何配置MSE Ingress应用路由和转发规则。

前提条件

添加服务Service

背景信息

在Kubernetes集群中,Ingress作为集群内服务对外暴露的访问接入点,几乎承载着集群内服务访问的所有流量。Ingress是Kubernetes中的一个资源对象,用于管理集群外部访问集群内部服务的方式。您可以通过Ingress资源来配置不同的转发规则,从而达到根据不同的规则设置访问集群内不同的Service所对应的后端Pod。

标准的Ingress资源仅支持配置HTTP流量的规则,无法配置一些高级特性,例如负载均衡的算法、Sessions Affinity等。这些高级特性都需要由Ingress实现者(Nginx Ingress、MSE Ingress)提供支持。

MSE Ingress是在MSE云原生网关之上提供更为强大的Ingress流量管理方式,兼容Nginx Ingress以及50多个Nginx Ingress的注解,覆盖90%以上的Nginx Ingress业务场景,支持多服务版本同时灰度发布、灵活的服务治理能力以及全方位的安全防护保障,能够满足大规模云原生分布式应用的流量治理诉求。

工作原理

MSE Ingress Controller负责监听集群中创建的MseIngressConfig资源,实时动态维护该资源对应的云原生网关实例的生命周期以及该网关与ACK集群的关联性。

MSE云原生网关的控制面通过关联的ACK集群的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工作示意图。

image

操作步骤

  1. 登录EDAS控制台,在左侧导航栏,单击流量管理 > 应用路由 > Ingress路由
  2. 应用路由(K8s Ingress)页面顶部菜单栏选择地域,在页面中选择目标微服务空间

  3. 应用路由(K8s Ingress)页面,单击创建Ingress

  4. 创建Nginx Ingress面板,设置规则相关参数,然后单击确定

    配置项

    描述

    类型

    选择MSE Ingress

    K8s集群

    从下拉列表中选择目标K8s集群。

    K8s命名空间

    K8s命名空间通过将系统内部的对象分配到不同的命名空间中,形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理。

    • default:没有其他命名空间的对象的默认命名空间。

    • kube-system:系统创建的对象的命名空间。

    • kube-public:此命名空间是自动创建的,并且可供所有用户(包括未经过身份验证的用户)读取。

    应用路由名称

    自定义设置路由名称,在同一个命名空间下应用路由名称必须唯一。

    支持小写字母、数字和短划线(-),且必须以字母开头,字母或数字结尾。

    重定向至HTTPS

    打开重定向至HTTPS开关,表示用HTTP协议访问时会重定向到HTTPS协议。

    MSE云原生网关

    从下拉列表中选择已有MSE云原生网关实例或者单击+创建MSE云原生网关创建新的MSE云原生网关实例。

    转发规则

    说明

    在添加应用路由时,您需要了解以下几点。

    • 在同一个应用路由下,可以创建多个路由规则。

      • 相同域名和路径的组合,只能对应一个Service。

      • 同一个Service,可以对应多个域名和路径组合。

    • 在不同应用路由下,可以创建完全相同的路由规则。

    域名

    指定访问域名。

    路径

    指定访问路径,必须以正斜线(/)开头。

    应用

    从下拉列表中选择当前K8s集群中的目标应用。

    服务名称

    从下拉列表中选择当前应用的目标服务Service。

    服务端口

    服务Service的服务端口。

    开启TLS

    选中开启TLS,即代表允许外部HTTPS请求路由到内部Service的路由规则集合。

    注解

    为Ingress添加注解键值对。添加特定的注解能够实现MSE Ingress的高级能力,详情请参见MSE Ingress高级用法

    标签

    为Ingress添加标签键值对。使用标签能够便于对已配置特定标签的Ingress进行分组管理。

    创建完成后,新建的应用路由出现在应用路由列表。您可以对其进行查看详情、变更路由规则信息和删除应用路由,以及查看应用路由的监控详情。

结果验证

您可在浏览器中访问路由规则中的域名/路径,查看能否访问到Service对应的后端服务。