本文为您介绍ALB Ingress的基础功能、高级功能以及ALB Ingress与其他云产品包括:企业级分布式应用服务EDAS(Enterprise Distributed Application Service)、Serverless应用引擎SAE(Serverless App Engine)等相结合的功能。

基础功能

AlbConfig是由ALB Ingress Controller提供的CRD资源,ALB Ingress Controller使用AlbConfig来配置ALB实例和监听。下表为您介绍如何在ASK集群安装和卸载ALB Ingress Controller,如何创建、修改AlbConfig以及开启日志服务等操作。

对象功能描述容器集群ACK文档链接容器集群ASK文档链接
ALB Ingress ControllerALB Ingress Controller组件管理

阿里云Serverless Kubernetes集群,基于ALB七层转发规则提供了托管的ALB Ingress Controller。

您可以通过在创建集群时安装ALB Ingress Controller,也可以通过在组件管理页面安装ALB Ingress Controller。

管理ALB Ingress Controller组件管理ALB Ingress Controller组件
实例管理创建AlbConfig

AlbConfig是在ALB Ingress Controller提供的CRD资源,使用AlbConfig CRD来配置ALB实例和监听。

一个AlbConfig对应一个ALB实例,如果您需要使用多个ALB实例,可以通过创建多个AlbConfig实现。

创建AlbConfig创建AlbConfig
关联IngressAlbConfig通过K8s中标准的IngressClass资源与Ingress进行关联。您需要先创建IngressClass,然后关联AlbConfig。创建IngressClass并关联AlbConfig使用IngressClass关联AlbConfig与Ingress
修改AlbConfig您可以修改AlbConfig的属性,比如名称、vSwitch配置等。

配置完成保存后,新配置自动生效。

开启日志服务访问日志当您需要ALB Ingress能够收集访问日志Access Log,您需要在AlbConfig中指定logProjectlogStore
说明
  • 当前Log Project需要您手动创建,不支持自动创建。创建Log Project的具体操作,请参见管理Project
  • logStore命名需要以alb_开头,若指定logStore不存在,系统则会自动创建。
开启日志服务访问日志开启日志服务访问日志
复用已有ALB实例当您需要复用已有ALB实例,您只需要在创建AlbConfig时指定ALB实例ID即可。复用已有ALB实例复用已有ALB实例
使用多个ALB实例当您需要使用多个ALB实例时,您可以在Ingress中通过spec.ingressClassName指定不同的IngressClass即可。创建并使用多个ALB实例创建并使用多个ALB实例
删除ALB实例一个ALB实例对应一个AlbConfig, 因此可以通过删除AlbConfig实现删除ALB实例,但前提是先需要删除AlbConfig关联的所有Ingress。删除ALB实例删除ALB实例
监听管理指定HTTPS证书通过ALBConfig可以指定ALB证书,您可以通过配置ALBConfig的listeners来指定HTTPS的证书ID。使用AlbConfig指定证书使用AlbConfig指定证书
支持TLS安全策略当前ALBConfig配置HTTPS监听时,支持指定TLS安全策略。TLS安全策略包含自定义策略和系统默认策略,更多信息,请参见TLS安全策略指定TLS安全策略指定TLS安全策略

高级功能

在ASK集群中,ALB Ingress对集群服务(Service)中外部可访问的API对象进行管理,提供七层负载均衡能力。下表为您介绍如何通过ALB Ingress将来自不同域名或URL路径的请求转发给不同的后端服务器组、将HTTP访问重定向至HTTPS及实现灰度发布等功能。

功能描述容器集群ACK文档链接容器集群ASK文档链接
基于域名转发请求创建一个简单的Ingress,根据指定的正常域名或空域名转发请求。基于域名转发请求基于域名转发请求
基于URL路径转发请求ALB Ingress支持按照URL转发请求,可以通过pathType字段设置不同的URL匹配策略。pathType支持Exact、ImplementationSpecific和Prefix三种匹配方式。基于URL路径转发请求基于URL路径转发请求
配置健康检查ALB Ingress支持通过设置注解来配置健康检查,配置项包括path/protocol/method/httpcode/timeout/interval/threshold等。配置健康检查配置健康检查
配置自动发现HTTPS证书功能ALB Ingress Controller提供证书自动发现功能。您需要首先在数字证书管理服务控制台创建证书,然后ALB Ingress Controller会根据Ingress中TLS配置的域名自动匹配发现证书。ALB Ingress服务高级用法ALB Ingress服务高级用法
配置HTTP重定向至HTTPSALB Ingress通过设置注解alb.ingress.kubernetes.io/ssl-redirect: "true",可以将HTTP请求重定向到HTTPS 443端口。配置HTTP重定向至HTTPS配置HTTP重定向至HTTPS
支持HTTPS和gRPC协议当前ALB Ingress后端协议支持HTTPS和gRPC协议,通过ALB Ingress只需要在注解中配置alb.ingress.kubernetes.io/backend-protocol: "grpc"alb.ingress.kubernetes.io/backend-protocol: "https" 即可。使用Ingress转发gRPC服务需要对应域名拥有SSL证书,使用TLS协议进行通信。
说明 后端协议不支持修改,如果您需要变更协议,请删除重建Ingress。
支持HTTPS和gRPC协议支持HTTPS和gRPC协议
支持Rewrite重写当前ALB Ingress支持Rewrite重写,通过ALB Ingress只需要在注解中配置alb.ingress.kubernetes.io/rewrite-target: /path/${2} 即可。
说明
  • rewrite-target注解中,${number}类型的捕获组变量需要在路径为Prefix类型的path上配置。
  • path默认无法配置正则符号,例如*?等,您需要通过配置rewrite-target注解使用正则符号。
  • path必须以 / 开头。
支持Rewrite重写支持Rewrite重写
配置自定义监听端口支持Ingress配置自定义监听端口。通过该方式,可以将服务同时暴露80端口和443端口。配置自定义监听端口配置自定义监听端口
配置转发规则优先级通过配置Ingress注解可以定义ALB Ingress转发规则优先级。
说明 同一个监听内规则优先级必须唯一。alb.ingress.kubernetes.io/order用于标识Ingress之间的优先级顺序,取值范围为1~1000,值越小表示优先级越高。
配置转发规则优先级配置转发规则优先级
通过注解实现灰度发布ALB Ingress提供复杂路由处理能力,支持基于Header、Cookie以及权重的灰度发布功能。灰度发布功能可以通过设置注解来实现。

为了启用灰度发布功能,需要设置注解calb.ingress.kubernetes.io/canary: "true",通过不同注解可以实现不同的灰度发布功能。

通过注解实现灰度发布通过注解实现灰度发布
通过注解实现会话保持ALB Ingress支持通过alb.ingress.kubernetes.io/sticky-sessionalb.ingress.kubernetes.io/sticky-session-type注解实现会话保持。通过注解实现会话保持通过注解实现会话保持
指定服务器组负载均衡算法ALB Ingress支持通过设置Ingress注解alb.ingress.kubernetes.io/backend-scheduler指定服务器组负载均衡算法。指定服务器组负载均衡算法指定服务器组负载均衡算法
跨域配置ALB Ingress支持通过设置注解项配置跨域。跨域配置跨域配置
后端长链接当使用短链接的方式访问后端服务器组时,每一条请求都需要经历TCP层面的建立连接和断开连接,使网络连接成为高性能系统的瓶颈。ALB支持开启后端长链接,能够极大的减少处理连接层面的资源消耗,从而大幅度提高处理性能。当前在ALB Ingress中可以通过注解alb.ingress.kubernetes.io/backend-keepalive开启后端长链接。
说明 目前ALB后端长链接功能默认不开放,如需使用,请登录配额中心控制台,在权益配额列表页面,输入配额ID为slb_user_visible_gray_label/upstream_keepalive,然后进行申请。更多信息,请参见管理ALB配额
后端长链接后端长链接
支持QPS限速ALB本身支持转发规则的QPS限速功能,QPS限速值取值范围为1~100000。当前在ALB Ingress只需要设置alb.ingress.kubernetes.io/traffic-limit-qps注解即可。支持QPS限速支持QPS限速

与其他云产品交互的功能

其他云产品功能描述文档链接
WAF为ALB Ingress开启WAF防护Web应用防火墙WAF(Web Application Firewall)可以为网站或App提供一站式安全防护,防止数据泄密和恶意CC攻击,阻止木马上传和网页篡改,提供虚拟补丁。当ALB Ingress开启WAF防护后,ALB实例监听的端口流量将受到Web应用安全防护。为ALB Ingress开启WAF防护
EDAS创建应用路由(ALB Ingress)EDAS支持ALB Ingress应用路由,ALB Ingress基于阿里云应用型负载均衡ALB(Application Load Balancer)提供更有效的Ingress流量管理方式,同时兼容Nginx Ingress,具备处理复杂业务路由和证书自动发现的能力。创建应用路由(ALB Ingress)
SAE基于Ingress网关实现全链路灰度您可以通过ALB Ingress网关,在不需要修改您的任何业务代码的情况下,为您的SAE应用实现全链路流量控制。线上场景:基于Ingress网关实现全链路灰度
ASM支持以Ingress方式与应用型负载均衡ALB集成。阿里云服务网格(Alibaba Cloud Service Mesh,简称ASM)支持以Ingress方式与应用型负载均衡ALB(Application Load Balancer)集成,满足ALB用户使用ASM的诉求。ASM集成应用型负载均衡实例ALB