更新时间:2024-11-12 GMT+08:00

为ELB Ingress配置多个监听端口

Ingress支持配置自定义监听端口,可为同一个服务配置HTTP和HTTPS协议的监听器,例如一个服务可以同时暴露HTTP协议的80端口和HTTPS的443端口对外提供访问。

前提条件

通过kubectl命令行配置

  1. 请参见通过kubectl连接集群,使用kubectl连接集群。
  2. 创建名为“ingress-test.yaml”的YAML文件,此处文件名可自定义。

    vi ingress-test.yaml

    以使用已有ELB为例,配置示例如下:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        kubernetes.io/elb.id: 2c623150-17bf-45f1-ae6f-384b036f547e     # 已有ELB的ID
        kubernetes.io/elb.class: performance    # ELB的类型
        kubernetes.io/elb.listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'    # 多监听器配置
        kubernetes.io/elb.tls-certificate-ids: 6cfb43c9de1a41a18478b868e34b0a82,6cfb43c9de1a41a18478b868e34b0a82   # HTTPS证书配置
      name: ingress-test
      namespace: default
    spec:
      ingressClassName: cce
      rules:
      - host: example.com
        http:
          paths:
          - backend:
              service:
                name: test
                port:
                  number: 8888
            path: /
            pathType: ImplementationSpecific
            property:
              ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH

    表1 自定义监听端口注解

    参数

    类型

    描述

    kubernetes.io/elb.listen-ports

    String

    为同一个Ingress创建多个监听端口,端口号范围为1~65535。

    参数值为JSON格式的字符串,示例如下:

    kubernetes.io/elb.listen-ports: '[{"HTTP":80},{"HTTPS":443}]'
    • 仅支持同时配置HTTP和HTTPS协议的监听端口。
    • v1.23.18-r10、v1.25.16-r0、v1.27.16-r0、v1.28.13-r0、v1.29.8-r0、v1.30.4-r0以下集群版本中仅支持新建Ingress场景,且配置多个监听端口后annotation不支持修改和删除。v1.23.18-r10、v1.25.16-r0、v1.27.16-r0、v1.28.13-r0、v1.29.8-r0、v1.30.4-r0及以上集群版本中支持修改和删除。
    • 同时指定多监听器(kubernetes.io/elb.listen-ports)和单监听器(kubernetes.io/elb.port)配置时,多监听器优先级更高。
    • Ingress内配置项对多个监听器同时生效,如黑白名单配置、超时时间配置。Ingress开启HTTP/2配置时,HTTP/2仅在HTTPS端口生效。

  3. 创建Ingress。

    kubectl create -f ingress-test.yaml

    回显如下,表示Ingress服务已创建。

    ingress/ingress-test created

  4. 查看已创建的Ingress。

    kubectl get ingress

    回显如下,表示Ingress服务创建成功。

    NAME          CLASS    HOSTS           ADDRESS          PORTS   AGE
    ingress-test  cce      example.com     121.**.**.**     80,443  10s