更新时间:2025-08-19 GMT+08:00

ELB Ingress转发策略优先级说明

在创建ELB Ingress时,CCE会根据Ingress配置中的域名、URL等转发规则,在ELB侧配置相应的转发策略。

为了满足复杂的流量路由需求,CCE集成了ELB的高级转发策略能力,支持URL重定向、重写等高级转发能力,但高级转发策略的排序逻辑与普通的转发策略存在差异。

具体如下:

场景

未指定优先级

指定优先级

未开启ELB高级转发策略

转发策略根据域名/路径匹配进行排序,详情请参见默认排序(根据域名/路径匹配进行排序)。

以指定的优先级进行排序:

  • 同一个Ingress间的转发策略排序:使用“kubernetes.io/elb.rule-priority-enabled”注解,设置为“true”时,根据Ingress YAML里paths字段下定义的转发规则顺序进行排序,配置靠前的优先级高。
  • 不同Ingress间的转发策略排序:使用“kubernetes.io/elb.ingress-order”注解的优先级进行排序,且默认开启同一个Ingress的转发规则排序(即同时设置“kubernetes.io/elb.rule-priority-enabled”注解为“true”)。具体规则如下:
    • “kubernetes.io/elb.ingress-order”注解的参数取值范围为1~1000,参数值越小,表示优先级越高。
    • 具有“kubernetes.io/elb.ingress-order”注解的Ingress优先级较高,不具有该注解的Ingress优先级较低。
    • 如果多个Ingress都具有“kubernetes.io/elb.ingress-order”注解,则不同Ingress间先按注解值的大小排序,然后同一个Ingress的规则按照先后顺序排序。

关于指定优先级的使用示例,请参见为ELB Ingress配置转发规则优先级

开启ELB高级转发策略

转发策略会按照创建时间添加优先级(先创建的优先级较高),请求会根据创建时间顺序进行匹配然后转发,详情请参见按创建时间顺序排序

当前部分局点已默认开启高级转发策略,您可以在添加转发策略时查看当前局点是否开启高级转发策略:
图1 查看是否开启高级转发策略

默认排序

未开启ELB高级转发策略时,转发策略的默认排序规则如下:

  • 不同域名间优先级互相独立,转发规则域名与URL同时存在时,优先按照域名进行匹配。
  • 转发规则为URL时,匹配优先级如下:精确匹配 > 前缀匹配 > 正则匹配,匹配类型相同时URL长度越长,优先级越高。
表1 默认排序的转发策略示例

转发策略

设定值

转发策略排序

URL(精确匹配)

/test1/test2/test3

1

URL(前缀匹配)

/test1/test2

2

URL(前缀匹配)

/test1

3

创建转发策略后,系统会根据默认排序规则进行排序。访问示例如下:

  • 访问请求www.example.com/test1/test2同时满足转发策略2和转发策略3,匹配类型相同时URL长度越长,优先级越高,则请求将按照转发策略2进行转发。
  • 访问www.example.com/test1/test2/test3同时满足转发策略1、和转发策略2和转发策略3,优先精确匹配,则请求将按照转发策略1进行转发。

按创建时间顺序排序

开启ELB高级转发策略后,转发策略会根据其创建时间顺序被赋予编号(转发策略编号的数值越小,优先级越高),每个请求会按照这些编号逐条匹配,一旦能够匹配到一条转发策略,立即按照当前转发策略进行转发。

转发策略的优先级设置规则如下:

  • 配置高级转发策略前已有的转发策略会继承原有的优先级顺序。
  • 配置高级转发策略后,每次新增的转发策略优先级排序最低(默认转发策略固定为最低优先级,不参与排序)。
表2 根据优先级排序的转发策略示例

转发策略

设定值

转发策略优先级设置

URL(前缀匹配)

/test1

1

URL(精确匹配)

/test1

2

如以上示例,访问请求www.example.com/test1同时满足转发策略1和转发策略2,根据优先级排序,则请求将按照转发策略1进行转发。