文档首页/ 云容器引擎 CCE/ 用户指南/ 网络/ 路由(Ingress)/ ELB Ingress管理/ 路由转发策略/ 为配置了重定向监听器的ELB Ingress配置转发规则优先级
更新时间:2026-08-26 GMT+08:00

为配置了重定向监听器的ELB Ingress配置转发规则优先级

当多个Ingress资源共享同一个ELB时,特别是在涉及HTTP到HTTPS重定向的场景下,转发策略的执行顺序至关重要。如果优先级配置不当,可能导致重定向逻辑干扰正常的业务路由,或者业务路由被重定向规则意外拦截。本文介绍如何为配置了重定向监听器的ELB Ingress配置转发规则优先级。

约束与限制

  • 该特性仅在使用独享型ELB时支持配置。
  • 集群版本为v1.30.14-r100、v1.31.14-r60、v1.32.13-r30、v1.33.12-r10、v1.34.8-r10、v1.35.5-r10、v1.36.2-r0及以上版本时,使用HTTP重定向到HTTPS协议的策略支持配置优先级排序。

默认优先级规则

为ELB ingress配置转发规则优先级时,可使用“kubernetes.io/elb.ingress-order”注解为不同Ingress的转发规则进行排序,具体规则如下:

  • “kubernetes.io/elb.ingress-order”注解的参数取值范围为1~1000,参数值越小,表示优先级越高。
  • 具有“kubernetes.io/elb.ingress-order”注解的Ingress优先级较高,不具有该注解的Ingress优先级较低。

即在默认场景下,不同ingress的优先级从高到低如下:

  1. 配置了kubernetes.io/elb.ingress-order且取值较小
  2. 配置了kubernetes.io/elb.ingress-order且取值较大
  3. 未配置kubernetes.io/elb.ingress-order注解

ingress-order的更多信息,请参见为ELB Ingress配置转发规则优先级

在未配置ingress-order优先级注解的情况下,HTTP至HTTPS的重定向规则默认拥有最高优先级。详情请参见示例2:重定向场景下未配置ingress-order

场景示例

示例1:重定向场景下配置ingress-order

例如,有四个Ingress资源(ingress-a,ingress-b,ingress-c,ingress-d),共用一个独享型ELB。

Ingress

ingress-order值

端口

规则

说明

ingress-a

1

80

规则A(host: a.com, path: /A)

80端口HTTP转发

ingress-b

2

80→443

规则B(host: b.com, path: /B)

配置HTTP/80重定向到HTTPS/443

ingress-c

3

443

规则C(host: c.com, path: /C)

443端口HTTPS转发

ingress-d

未配置

80

规则D(host: d.com, path: /D)

80端口HTTP转发

创建成功截图示例如下。

查看ELB的80监听器上的转发策略优先级,此时转发策略顺序依次为:

转发规则优先级

规则

所属Ingress

说明

对应的ingress-order

1

规则A(host: a.com, path: /A)

ingress-a

80端口HTTP转发

1

2

规则B(host: b.com, path: /B)

ingress-b

配置HTTP/80重定向到HTTPS/443

2

3

规则D(host: d.com, path: /D)

ingress-d

80端口HTTP转发

未配置

查看ELB的443监听器上的转发策略优先级,此时转发策略顺序依次为:

转发规则优先级

规则

所属Ingress

说明

对应的ingress-order

1

规则B(host: b.com, path: /B)

ingress-b

配置HTTP/80重定向到HTTPS/443

2

2

规则C(host: c.com, path: /C)

ingress-c

443端口HTTPS转发

3

若需调重定向规则的优先级,示例如下:

  1. 将80端口的ingress-a调整到ingress-b后面

    更新ingress-a的YAML,将kubernetes.io/elb.ingress-order从1改为3:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-a
      namespace: default
      annotations:
        kubernetes.io/elb.port: '80'    # 对接的ELB端口
        kubernetes.io/elb.id: fef427e4-6d2c-4c63-bf26-270daa******    # 已有ELB的ID
        kubernetes.io/elb.class: performance    # 已有ELB的类型,该功能仅支持performance
        kubernetes.io/elb.ingress-order: '3'    # 由1调整为3
    spec:
      rules:
        - host: 'a.com'
          http:
            paths:
              - path: /A  # 定义转发规则A
                backend:  # 该规则对应的后端Service,示例可进行替换
                  service:
                    name: service1 
                    port:
                      number: 80
                property:
                  ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
                pathType: ImplementationSpecific
      ingressClassName: cce

    查看ELB的80监听器上的转发策略优先级:

    转发规则优先级

    规则

    所属Ingress

    说明

    对应的ingress-order

    1

    规则B(host: b.com, path: /B)

    ingress-b

    配置HTTP/80重定向到HTTPS/443

    2

    2

    规则A(host: a.com, path: /A)

    ingress-a

    80端口HTTP转发

    3

    3

    规则D(host: d.com, path: /D)

    ingress-d

    80端口HTTP转发

    未配置

  2. 将443端口的ingress-c放到ingress-b前面

    更新ingress-c的YAML,将kubernetes.io/elb.ingress-order从3改为1:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-c
      namespace: default
      annotations:
        kubernetes.io/elb.port: '443'    # 对接的ELB端口
        kubernetes.io/elb.id: fef427e4-6d2c-4c63-bf26-270daa******    # 已有ELB的ID
        kubernetes.io/elb.class: performance    # 已有ELB的类型,该功能仅支持performance
        kubernetes.io/elb.ingress-order: '1'    # 不同Ingress间的转发规则优先级
        kubernetes.io/elb.tls-certificate-ids: fd12a22d3ea64ae697066b78d9******,e981aee11f074c8d89c8eaa023******    
    spec:
      rules:
        - host: 'c.com'
          http:
            paths:
              - path: /C  # 定义转发规则C
                backend:  # 该规则对应的后端Service,示例可进行替换
                  service:
                    name: service1 
                    port:
                      number: 80
                property:
                  ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
                pathType: ImplementationSpecific
      ingressClassName: cce

    查看ELB的443监听器上的转发策略优先级:

    转发规则优先级

    规则

    所属Ingress

    说明

    对应的ingress-order

    1

    规则C(host: c.com, path: /C)

    ingress-c

    443端口HTTPS转发

    1

    2

    规则B(host: b.com, path: /B)

    ingress-b

    配置HTTP/80重定向到HTTPS/443

    2

示例2:重定向场景下未配置ingress-order

例如,有三个Ingress资源(ingress-a,ingress-b,ingress-c),共用一个独享型ELB。

Ingress

ingress-order值

端口

规则

说明

ingress-a

未配置

80→443

规则A(host: a.com, path: /A)

配置HTTP/80重定向到HTTPS/443

ingress-b

1

80

规则B(host: b.com, path: /B)

80端口HTTP转发

ingress-c

2

80

规则C(host: c.com, path: /C)

80端口HTTP转发

创建成功截图示例如下。

查看ELB的80监听器上的转发策略优先级:

转发规则优先级

规则

所属Ingress

说明

对应的ingress-order

1

规则A(host: a.com, path: /A)

ingress-a

配置HTTP/80重定向到HTTPS/443

未配置

2

规则B(host: b.com, path: /B)

ingress-b

80端口HTTP转发

1

3

规则C(host: c.com, path: /C)

ingress-c

80端口HTTP转发

2