配置 ALB 规则
目录
介绍
什么是规则?
规则是一个自定义资源(CR),定义了 ALB 如何匹配和处理传入请求。
由 ALB 处理的 Ingress 可以自动转换为规则。
前提条件
规则快速演示
下面是一个演示规则,帮助你快速了解如何使用规则。
规则必须通过标签关联到 frontend 和 alb。
- 必填,指明该规则所属的
Frontend。 - 必填,指明该规则所属的 ALB。
- backendProtocol
- certificate_name
- dslx
- 数值越小,优先级越高。
- serviceGroup
使用 dslx 和优先级匹配请求
dslx
DSLX 是一种用于描述匹配条件的领域特定语言。 例如,下面的规则匹配满足所有以下条件的请求:
- url 以 /app-a 或 /app-b 开头
- method 是 post
- url 参数 group 的值是 vip
- host 是 *.app.com
- header 中 location 的值是 east-1 或 east-2
- 有名为 uid 的 cookie
- 源 IP 在 1.1.1.1-1.1.1.100 范围内
优先级
优先级是一个介于 0 到 10 的整数,数值越小优先级越高。要在 ingress 中配置规则优先级,可以使用以下注解格式:
对于规则,直接在 .spec.priority 中设置整数值即可。
动作
请求匹配规则后,可以对请求应用以下动作:
后端
后端协议
默认情况下,后端协议设置为 HTTP。如果需要使用 TLS 重新加密,可以配置为 HTTPS。
服务组和会话亲和策略
规则中可以配置一个或多个服务。
默认情况下,ALB 使用轮询(RR)算法在后端服务间分发请求。但你可以为单个服务分配权重,或选择其他负载均衡算法。
详情请参考负载均衡算法。
创建规则
使用 Web 控制台

- 进入 Container Platform。
- 点击左侧导航栏的 Network > Load Balancing。
- 点击负载均衡器名称。
- 点击监听端口名称。
- 点击 Add Rule。
- 参考以下说明配置相关参数。
- 点击 Add。
Web UI 上的每个输入项对应 CR 的一个字段。
使用 CLI
Https
如果 frontend 协议(ft)是 HTTPS 或 GRPCS,规则也可以配置为使用 HTTPS。 你可以在规则或 ingress 中指定证书,以匹配该端口的证书。
支持终止(termination),如果后端协议是 HTTPS,也支持重新加密(re-encryption)。但不能为与后端服务通信指定证书。
Ingress 中的证书注解
证书可以通过注解跨命名空间引用。
规则中的证书
在 .spec.certificate_name 中,格式为 $secret_namespace/$secret_name
TLS 模式
Edge 模式
Edge 模式下,客户端与 ALB 使用 HTTPS 通信,ALB 与后端服务使用 HTTP 协议通信。 实现步骤:
- 创建使用 https 协议的 ft
- 创建后端协议为 http 的规则,并通过
.spec.certificate_name指定证书
重新加密模式
重新加密模式下,客户端与 ALB 使用 HTTPS 通信,ALB 与后端服务使用 HTTPS 协议通信。 实现步骤:
- 创建使用 https 协议的 ft
- 创建后端协议为 https 的规则,并通过
.spec.certificate_name指定证书
Ingress
ingress 同步
每个 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 命名空间。
ssl 策略
对于未配置证书的 ingress,ALB 提供使用默认证书的策略。
你可以通过以下配置设置 ALB 自定义资源:
.spec.config.defaultSSLStrategy:定义未配置证书 ingress 的 SSL 策略.spec.config.defaultSSLCert:设置默认证书,格式为$secret_ns/$secret_name
可用的 SSL 策略:
- Never:不在 HTTPS 端口创建规则(默认行为)
- Always:在 HTTPS 端口创建规则,使用默认证书