EDAS支持ALB Ingress应用路由。ALB Ingress基于阿里云应用型负载均衡ALB(Application Load Balancer)提供更有效的Ingress流量管理方式,同时兼容Nginx Ingress,具备处理复杂业务路由和证书自动发现的能力。本文介绍在EDAS控制台如何配置应用路由和转发规则。

前提条件

  • 添加服务Service
  • 已安装ALB Ingress Controller组件。
    • 若需要创建集群,请在组件配置配置向导页面,在Ingress字段右侧选择ALB Ingress
    • 若已创建集群,且未安装ALB Ingress Controller组件。关于如何安装ALB Ingress Controller组件,请参见管理组件

约束限制

  • 为Ingress服务创建的ALB由EDAS完全托管,无法在ALB控制台配置,否则可能造成Ingress服务的异常。
  • 不能修改EDAS创建的Ingress资源(含有以下标签:edas-domain: edas-adminedas-domain),不能变更或删除Ingress关联的IngressClass、AlbConfig资源(以edas-{alb_id}格式命名的资源)。
  • 若集群的网络插件类型为Flannel,则仅支持后端Service的类型为NodePort或LoadBalancer。
  • 如果需要配置HTTPS类型转发,则需要改Ingress实例的所有规则都开启TLS。
  • ALB Ingress支持证书自动发现,路由规则开启TLS后无需进行Secret资源配置,但需要在SSL证书服务中购买对应域名的证书,且需要域名匹配的证书唯一。证书支持泛域名证书和单域名证书。
  • 使用应用路由需要依赖已有标准版ALB实例,配置应用路由ALB Ingress后,绑定的ALB实例无法再被其他集群复用。

背景信息

ALB Ingress Controller通过API Server获取Ingress资源的变化,动态地生成AlbConfig,然后依次创建ALB实例、监听、路由转发规则以及后端服务器组。Kubernetes中Service、Ingress与AlbConfig有着以下关系:
  • Service是后端真实服务的抽象,一个Service可以代表多个相同的后端服务。
  • Ingress是反向代理规则,用来规定HTTP或HTTPS请求应该被转发到哪个Service上。例如,根据请求中不同的Host和URL路径,让请求转发到不同的Service上。
  • AlbConfig是在ALB Ingress Controller提供的CRD资源,使用AlbConfig CRD来配置ALB实例和监听。一个AlbConfig对应一个ALB实例。
ae

操作步骤

  1. 登录EDAS控制台,在左侧导航栏,单击流量管理 > 应用路由
  2. 应用路由(K8s Ingress)页面顶部菜单栏选择地域,在页面中选择目标微服务空间
  3. 应用路由(K8s Ingress)页面,单击创建Ingress
  4. 创建Nginx Ingress面板中,设置相关参数,然后单击确定
    配置项 描述
    类型 选择ALB Ingress
    K8s集群 从下拉列表中选择目标K8s集群。
    K8s命名空间 K8s命名空间通过将系统内部的对象分配到不同的命名空间中,形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理。
    • default:没有其他命名空间的对象的默认命名空间。
    • kube-system:系统创建的对象的命名空间。
    • kube-public:此命名空间是自动创建的,并且可供所有用户(包括未经过身份验证的用户)读取。

    此处以选择default为例。

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

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

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

    选择路由绑定的ALB实例,列表中仅返回与选择的K8s集群在同一专有网络下的ALB实例。

    若您还没有ALB实例,请参见创建应用型负载均衡

    说明
    • 仅支持标准版ALB实例。
    • 若选择ALB实例绑定到该K8s集群后,无法再被其他集群使用。
    • 可以使用一个ALB实例绑定一个集群中的多个应用路由。
    转发规则
    说明 在添加应用路由时,需注意:
    • 在同一个应用路由下,可以创建多个路由规则:
      • 相同域名和路径的组合,只能对应一个Service。
      • 同一个Service,可以对应多个域名和路径组合。
    • 在不同应用路由下,可以创建完全相同的路由规则。
    域名 指定访问域名。
    路径 指定访问路径,必须以正斜线(/)开头。
    应用 从下拉列表中选择当前K8s集群中的目标应用。
    服务名称 从下拉列表中选择当前应用的目标服务Service。
    服务端口 服务Service的服务端口。
    开启TLS 选中开启TLS,即代表允许外部HTTPS请求路由到内部Service的路由规则集合。

    如果允许外部HTTPS请求,还需要设置TLS证书。在EDAS控制台左侧导航栏应用管理 > Kubernetes配置 > 保密字典列表中选择TLS证书类型的保密字典。如果您还没有将HTTPS证书保存到保密字典,请单击创建保密字典。创建保密字典的具体操作,请参见创建保密字典

    注解 为Ingress添加注解键值对。添加特定的注解能够实现ALB Ingress的高级能力,详情请参见ALB Ingress服务高级用法
    标签 为Ingress添加标签键值对。使用标签能够便于对已配置特定标签的Ingress进行分组管理。
    创建完成后,新建的应用路由出现在应用路由列表。您可以对其进行查看详情、变更路由规则信息和删除应用路由等操作。