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

为ELB Ingress配置HTTP重定向到HTTPS

Ingress支持将HTTP协议的访问请求转发至HTTPS协议的监听器上。配置Ingress重定向到重定向到HTTPS的示例如下,本示例将访问example.com/test的HTTP请求重定向至HTTPS 443端口。

前提条件

约束与限制

仅使用独享型ELB时,Ingress支持配置HTTP重定向到HTTPS。

配置HTTP重定向到HTTPS

您可以使用以下方式配置HTTP重定向到HTTPS。

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 选择左侧导航栏的“服务”,在右侧选择“路由”页签,单击右上角“创建路由”
  3. 设置Ingress参数。

    本示例中展示配置HTTP重定向到HTTPS的关键参数,其余参数可按需配置,详情请参见通过控制台创建ELB Ingress

    表1 关键参数说明

    参数

    配置说明

    示例

    名称

    自定义Ingress名称。

    ingress-test

    负载均衡器

    选择对接的ELB实例或自动创建ELB实例。本例中仅支持选择“独享型”

    独享型ELB

    监听器配置

    • 前端协议:可选择“HTTP”“HTTPS”
    • 对外端口:ELB监听器的端口。
      说明:

      v1.23.18-r10、v1.25.16-r0、v1.27.16-r0、v1.28.13-r0、v1.29.8-r0、v1.30.4-r0以下集群版本中配置后不支持修改。v1.23.18-r10、v1.25.16-r0、v1.27.16-r0、v1.28.13-r0、v1.29.8-r0、v1.30.4-r0及以上集群版本中支持修改。

    • 重定向至HTTPS:开启后进行HTTPS端口配置。
      • 对外端口:HTTPS协议的端口。
      • 证书来源:支持TLS密钥和ELB服务器证书。
      • 服务器证书:使用在ELB服务中创建的证书。

        如果您没有可选择的ELB证书,可前往ELB服务创建,详情请参见创建证书

    • 前端协议:“HTTP”
    • 对外端口:80
    • 重定向至HTTPS:开启
      • 对外端口:443
      • 证书来源:ELB服务器证书
      • 服务器证书:cert-test

    转发策略配置

    • 域名:实际访问的域名地址,不配置时可通过IP地址访问Ingress。请确保所填写的域名已注册并备案,一旦配置了域名规则后,必须使用域名访问。
    • 路径匹配规则:支持前缀匹配精确匹配正则匹配,请按需选择。
    • 路径:后端应用对外提供访问的路径,此处添加的访问路径要求后端应用内存在相同的路径,否则转发无法生效。
    • 目标服务名称:请选择已有Service或新建Service。页面列表中的查询结果已自动过滤不符合要求的Service。
    • 目标服务访问端口:可选择目标Service的访问端口。
    • 域名:无需填写
    • 路径匹配规则:正则匹配
    • 路径:/
    • 目标服务名称:nginx
    • 目标服务访问端口:80
    图1 配置HTTP重定向到HTTPS
    图2 重定向至HTTPS的端口配置

  4. 配置完成后,单击“确定”

Ingress重定向到HTTPS监听器可通过注解实现,示例如下:

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

    vi ingress-test.yaml

    以关联已有ELB为例,YAML配置文件如下:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: test-redirect-listener
      namespace: default
      annotations:
        kubernetes.io/elb.id: df76342f-e898-402a-bac8-bde5bf974da8
        kubernetes.io/elb.class: performance
        kubernetes.io/elb.listen-ports: '[{"HTTP":80},{"HTTPS":443}]'             # 多端口配置
        kubernetes.io/elb.ssl-redirect: 'true'        # 开启HTTP重定向到HTTPS
        kubernetes.io/elb.tls-certificate-ids: 6cfb43c9de1a41a18478b868e34b0a82       # HTTPS监听器服务端证书
    spec:
      rules:
        - host: ''
          http:
            paths:
              - path: /
                backend:
                  service:
                    name: test-service
                    port:
                      number: 80
                property:
                  ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
                pathType: ImplementationSpecific
      ingressClassName: cce
    表2 关键参数说明

    参数

    是否必填

    参数类型

    描述

    kubernetes.io/elb.listen-ports

    string

    多端口监听配置。v1.23.18-r10、v1.25.16-r0、v1.27.16-r0、v1.28.13-r0、v1.29.8-r0、v1.30.4-r0以下集群版本中配置后不支持修改。v1.23.18-r10、v1.25.16-r0、v1.27.16-r0、v1.28.13-r0、v1.29.8-r0、v1.30.4-r0及以上集群版本中支持修改。

    格式为json字符串格式,例如:

    [{"HTTP":80},{"HTTPS":443}]

    参数说明:端口号范围 1~65535

    说明:

    该注解可以和开启HTTP/2的注解同时配置,且HTTP/2仅在HTTPS端口生效。

    kubernetes.io/elb.ssl-redirect

    string

    是否开启HTTP重定向到HTTPS。

    格式说明:支持字段 "true" 和 "false"

    参数说明:"true" 表示开启重定向能力,"false"或参数不存在表示不开启重定向能力

    说明:

    该注解不能和灰度发布的注解一起配置。

  3. 创建Ingress。

    kubectl create -f ingress-test.yaml

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

    ingress/test-redirect-listener created

  4. 查看已创建的Ingress。

    kubectl get ingress

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

    NAME                    CLASS    HOSTS     ADDRESS          PORTS   AGE
    test-redirect-listener  cce      *         121.**.**.**     80      10s