规则是一个自定义资源(CR),定义了 ALB 如何匹配和处理传入请求。
由 ALB 处理的 Ingress 可以自动转换为规则。
下面是一个演示规则,帮助你快速了解如何使用规则。
规则必须通过标签关联到 frontend 和 alb。
Frontend
。DSLX 是一种用于描述匹配条件的领域特定语言。 例如,下面的规则匹配满足所有以下条件的请求:
优先级是一个介于 0 到 10 的整数,数值越小优先级越高。要在 ingress 中配置规则优先级,可以使用以下注解格式:
对于规则,直接在 .spec.priority
中设置整数值即可。
请求匹配规则后,可以对请求应用以下动作:
功能 | 描述 | 链接 |
---|---|---|
Timeout | 配置请求的超时设置。 | timeout |
Redirect | 将传入请求重定向到指定 URL。 | redirect |
CORS | 为应用启用跨域资源共享(CORS)。 | cors |
Header Modification | 允许修改请求或响应头。 | header modification |
URL Rewrite | 转发前重写传入请求的 URL。 | url-rewrite |
WAF | 集成 Web 应用防火墙(WAF)以增强安全性。 | waf |
OTEL | 启用 OpenTelemetry (OTEL) 进行分布式追踪和监控。 | otel |
Keepalive | 启用或禁用应用的 keepalive 功能。 | keepalive |
默认情况下,后端协议设置为 HTTP。如果需要使用 TLS 重新加密,可以配置为 HTTPS。
规则中可以配置一个或多个服务。
默认情况下,ALB 使用轮询(RR)算法在后端服务间分发请求。但你可以为单个服务分配权重,或选择其他负载均衡算法。
详情请参考负载均衡算法。
Web UI 上的每个输入项对应 CR 的一个字段。
如果 frontend 协议(ft)是 HTTPS 或 GRPCS,规则也可以配置为使用 HTTPS。 你可以在规则或 ingress 中指定证书,以匹配该端口的证书。
支持终止(termination),如果后端协议是 HTTPS,也支持重新加密(re-encryption)。但不能为与后端服务通信指定证书。
证书可以通过注解跨命名空间引用。
在 .spec.certificate_name
中,格式为 $secret_namespace/$secret_name
Edge 模式下,客户端与 ALB 使用 HTTPS 通信,ALB 与后端服务使用 HTTP 协议通信。 实现步骤:
.spec.certificate_name
指定证书重新加密模式下,客户端与 ALB 使用 HTTPS 通信,ALB 与后端服务使用 HTTPS 协议通信。 实现步骤:
.spec.certificate_name
指定证书每个 ALB 会创建一个同名的 IngressClass,处理同一项目内的 ingress。
当 ingress 命名空间带有类似 cpaas.io/project: demo
的标签时,表示该 ingress 属于 demo
项目。
.spec.config.projects
配置中包含项目名 demo
的 ALB 会自动将这些 ingress 转换为规则。
ALB 监听 ingress 并自动创建 Frontend
或 Rule。source
字段定义如下:
spec.source.type
目前仅支持 ingress
。spec.source.name
是 ingress 名称。spec.source.namespace
是 ingress 命名空间。对于未配置证书的 ingress,ALB 提供使用默认证书的策略。
你可以通过以下配置设置 ALB 自定义资源:
.spec.config.defaultSSLStrategy
:定义未配置证书 ingress 的 SSL 策略.spec.config.defaultSSLCert
:设置默认证书,格式为 $secret_ns/$secret_name
可用的 SSL 策略: