更新时间:2024-10-14 GMT+08:00

为ELB Ingress配置HTTP/2

Ingress支持HTTP/2的方式暴露服务,在默认情况下,客户端与负载均衡之间采用HTTP1.X协议,若需开启HTTP2功能,可在annotation字段中加入如下配置:

kubernetes.io/elb.http2-enable: 'true'
  • 当负载均衡端口使用HTTPS协议时,支持使用HTTP/2功能。
  • 该特性从v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0集群版本开始支持。
  • 配置HTTP/2后,如果您在CCE控制台删除开启HTTP/2的高级配置或在YAML中删除对应的annotation,ELB侧的配置将会保留。
以关联已有ELB为例,yaml配置文件如下。
apiVersion: networking.k8s.io/v1
kind: Ingress 
metadata: 
  name: ingress-test
  annotations: 
    kubernetes.io/elb.id: <your_elb_id>  #替换为您已有的ELB ID
    kubernetes.io/elb.ip: <your_elb_ip>  #替换为您已有的ELB IP
    kubernetes.io/elb.port: '443'
    kubernetes.io/elb.http2-enable: 'true' # 开启HTTP/2功能
spec:
  tls: 
  - secretName: ingress-test-secret
  rules: 
  - host: ''
    http: 
      paths: 
      - path: '/'
        backend: 
          service:
            name: <your_service_name>  #替换为您的目标服务名称
            port: 
              number: 8080             #替换为您的目标服务端口
        property:
          ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
        pathType: ImplementationSpecific
  ingressClassName: cce 
表1 HTTP/2参数说明

参数

是否必填

参数类型

描述

kubernetes.io/elb.http2-enable

String

表示HTTP/2功能的开启状态。开启后,可提升客户端与ELB间的访问性能,但ELB与后端服务器间仍采用HTTP1.X协议。

取值范围:

  • true:开启HTTP/2功能;
  • false:关闭HTTP/2功能(默认为关闭状态)。

注意:只有当监听器的协议为HTTPS时,才支持开启或关闭HTTP/2功能。当监听器的协议为HTTP时,该字段无效,默认将其设置为false。