
# 为ELB Ingress配置HTTPS证书
Ingress支持配置SSL/TLS证书，以HTTPS协议的方式对外提供安全服务。
当前支持在集群中使用以下方式配置Ingress证书：
- [使用集群中的TLS密钥证书]：需要将证书导入至Secret中，CCE会将该证书自动配置到ELB侧（证书名以k8s_plb_default开头），由CCE自动创建的证书**在ELB侧不可修改或删除**。如果您需要修改证书，请在CCE侧更新对应的Secret。
- [使用ELB服务中的证书]：直接使用ELB服务中创建的证书，无需手动配置集群Secret，且可以在ELB侧修改证书。
 
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
多个Ingress使用同一个ELB实例的同一个对外端口时，建议每个Ingress的证书、安全策略等配置相同，否则将以第一个创建的Ingress配置为准。详情请参见[多个Ingress配置同一端口说明]。
#### 前提条件
- 集群中需提前部署可用的工作负载用于对外提供访问。若您无可用工作负载，可参见[创建无状态负载（Deployment）](https://support.huaweicloud.com/usermanual-cce/cce_10_0047.html)、[创建有状态负载（StatefulSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0048.html)或[创建守护进程集（DaemonSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0216.html)部署工作负载。
- 为提供对外访问的工作负载配置Service，ELB Ingress支持的Service类型请参见[ELB Ingress支持的Service类型](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html#cce_10_0094__section3565202819276)。
- 已准备可信的证书，您可以从证书提供商处获取证书。操作详情请参见[购买SSL证书](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0074.html)。
 
 #### 使用集群中的TLS密钥证书
您可以使用以下方式为ELB Ingress配置集群中的TLS密钥证书。
#### TLS密钥证书生命周期说明
1. **证书创建**：当Ingress的证书来源配置为"TLS密钥"时，CCE会自动在ELB侧创建对应的服务器证书。
2. **证书删除**：删除该Ingress 时，若ELB侧对应的服务器证书未被（其他）监听器使用，CCE会自动清理并删除该证书。
3. **证书优先级** ：若Ingress同时配置了"ELB服务器证书"和"TLS密钥"两种来源，系统将**优先使用**"ELB服务器证书"，且ELB监听器上仅会绑定该证书。
4. **证书更新** ：
   - 当Ingress仅配置"TLS密钥"作为证书来源时，更新了该Ingress引用的Secret内容，CCE会自动将更新同步至ELB侧对应的服务器证书。
   
   - 当Secret未被任何Ingress关联时，更新该Secret内容，CCE不会同步更新ELB侧服务器证书。
   
   - 在同时配置"ELB服务器证书"和"TLS密钥"两种证书来源的情况下，如果更新"TLS密钥"对应的Secret，CCE是否将更新同步至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：
     - **低于上述版本**：CCE不再将更新同步至ELB。
     
     - **等于或高于上述版本**：CCE将继续维护并同步更新对应的服务器证书。
      
    
 
- [通过控制台配置]
  1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
  
  2. 选择左侧导航栏的"服务"，在右侧选择"路由"页签，单击右上角"创建路由"。
  
  3. 设置Ingress参数。 
     ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
     本示例中展示配置HTTPS证书的关键参数，其余参数可按需配置，详情请参见[通过控制台创建ELB Ingress](https://support.huaweicloud.com/usermanual-cce/cce_10_0251.html)。
     表1关键参数说明 
     | 参数     | 配置说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 示例                                                                                                                                                                                                                                                                                                                                                                                                                      |
     |:---|:---|:---|
     | 名称     | 自定义Ingress名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | ingress-test                                                                                                                                                                                                                                                                                                                                                                                                            |
     | 负载均衡器  | 选择对接的ELB实例或自动创建ELB实例。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 共享型ELB                                                                                                                                                                                                                                                                                                                                                                                                                  |
     | 监听器配置  | - 前端协议：为Ingress配置证书需选择"HTTPS"。  - 对外端口：ELB监听器端口，HTTPS协议的端口默认为443。  - 证书来源：选择"TLS密钥"。  - 服务器证书：支持使用kubernetes.io/tls和IngressTLS两种TLS密钥类型。 如果您没有可选择的密钥证书，可新建TLS类型的密钥证书，对应参数详情请参见[创建密钥](https://support.huaweicloud.com/usermanual-cce/cce_10_0153.html)。                                                                                                                                                                                                | - 前端协议："HTTPS"  - 对外端口：443  - 证书来源："TLS密钥"  - 服务器证书：test                                                                              |
     | 转发策略配置 | - 域名：实际访问的域名地址，不配置时可通过IP地址访问Ingress。请确保所填写的域名已注册并备案，一旦配置了域名规则后，必须使用域名访问。  - 路径匹配规则：支持前缀匹配、精确匹配、正则匹配，请按需选择。  - 路径：后端应用对外提供访问的路径，此处添加的访问路径要求后端应用内存在相同的路径，否则转发无法生效。  - 目标服务名称：请选择已有Service，页面列表中的查询结果已自动过滤不符合要求的Service。如果没有满足要求的Service请根据[Ingress支持的Service类型](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html#cce_10_0094__section1674954315446)新建。  - 目标服务访问端口：可选择目标Service的访问端口。   | - 域名：无需填写  - 路径匹配规则：前缀匹配  - 路径：/  - 目标服务名称：nginx  - 目标服务访问端口：80   |
        
     图1使用TLS密钥证书   
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002006371813.png "点击放大")
     
     
     
  
  4. 配置完成后，单击"确定"。
   
- [通过kubectl命令行配置]
  1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
  
  2. Ingress支持使用kubernetes.io/tls和IngressTLS两种TLS密钥类型，此处以IngressTLS类型为例，详情请参见[创建密钥](https://support.huaweicloud.com/usermanual-cce/cce_10_0153.html)。kubernetes.io/tls类型的密钥示例及说明请参见[TLS Secret](https://kubernetes.io/zh-cn/docs/concepts/configuration/secret/#tls-secret)。
     
     执行如下命令，创建名为"**ingress-test-secret.yaml**"的YAML文件，此处文件名可自定义。
     ```
     vi ingress-test-secret.yaml
     ```
     **YAML文件配置如下：**
     ```
     apiVersion: v1
     data:
       tls.crt: LS0******tLS0tCg==
       tls.key: LS0tL******0tLS0K
     kind: Secret
     metadata:
       annotations:
         description: test for ingressTLS secrets
       name: ingress-test-secret
       namespace: default
     type: IngressTLS
     ```
     ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
     此处tls.crt和tls.key为示例，请获取真实的证书和密钥进行替换。tls.crt和tls.key的值为Base64编码后的内容。
     
     
  
  3. 创建密钥。 
     ```
     kubectl create -f ingress-test-secret.yaml
     ```
     回显如下，表明密钥已创建。
     ```
     secret/ingress-test-secret created
     ```
     
     
  
  4. 查看已创建的密钥。 
     ```
     kubectl get secrets
     ```
     回显如下，表明密钥创建成功。
     ```
     NAME                         TYPE                                  DATA      AGE
     ingress-test-secret          IngressTLS                            2         13s
     ```
     
     
  
  5. 创建名为"**ingress-test.yaml** "的YAML文件，此处文件名可自定义。
     
     ```
     vi ingress-test.yaml
     ```
     ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
     默认安全策略选择（kubernetes.io/elb.tls-ciphers-policy）仅在1.17.17及以上版本的集群中支持。
     自定义安全策略选择（kubernetes.io/elb.security_policy_id）仅在1.17.17及以上版本的集群中支持。
     以自动创建关联ELB为例，YAML文件配置如下：
     **1.23及以上版本集群：**
     ```
     apiVersion: networking.k8s.io/v1
     kind: Ingress 
     metadata: 
       name: ingress-test
       annotations: 
         kubernetes.io/elb.class: performance
         kubernetes.io/elb.port: '443'
         kubernetes.io/elb.autocreate: 
           '{
               "type": "public",
               "bandwidth_name": "cce-bandwidth-******",
               "bandwidth_chargemode": "bandwidth",
               "bandwidth_size": 5,
               "bandwidth_sharetype": "PER",
               "eip_type": "5_bgp", # 弹性公网IP类型
               "available_zone": [
                   "cn-north-4b"
               ], # ELB所在可用区
               "elb_virsubnet_ids":["b4bf8152-6c36-4c3b-9f74-2229f8e640c9"],  #子网的网络ID
               "l7_flavor_name": "L7_flavor.elb.s1.small"   #七层负载均衡实例规格名称
            }'
         kubernetes.io/elb.security_policy_id: 99bec42b-0dd4-4583-98e9-b05ce628d157  #自定义安全策略优先级高于系统默认安全策略
         kubernetes.io/elb.tls-ciphers-policy: tls-1-2
     spec:
       tls: 
       - secretName: ingress-test-secret     #服务器证书名称
       rules: 
       - host: ''
         http: 
           paths: 
           - path: '/'
             backend: 
               service:
                 name: <your_service_name>  #替换为您的目标服务名称
                 port: 
                   number: 80             #替换为您的目标服务端口
             property:
               ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
             pathType: ImplementationSpecific
       ingressClassName: cce
     ```
     **1.21及以下版本集群：**
     ```
     apiVersion: networking.k8s.io/v1beta1
     kind: Ingress 
     metadata: 
       name: ingress-test
       annotations: 
         kubernetes.io/elb.class: performance
         kubernetes.io/ingress.class: cce
         kubernetes.io/elb.port: '443'
         kubernetes.io/elb.autocreate: 
           '{
               "type": "public",
               "bandwidth_name": "cce-bandwidth-******",
               "bandwidth_chargemode": "bandwidth",
               "bandwidth_size": 5,
               "bandwidth_sharetype": "PER",
               "eip_type": "5_bgp",    # 弹性公网IP类型
               "available_zone": [
                   "cn-north-4b"
               ],   # ELB所在可用区
               "elb_virsubnet_ids":["b4bf8152-6c36-4c3b-9f74-2229f8e640c9"],   #子网的网络ID
               "l7_flavor_name": "L7_flavor.elb.s1.small"       #七层负载均衡实例规格名称
            }'
         kubernetes.io/elb.security_policy_id: 99bec42b-0dd4-4583-98e9-b05ce628d157  #自定义安全策略优先级高于系统默认安全策略
         kubernetes.io/elb.tls-ciphers-policy: tls-1-2
     spec:
       tls: 
       - secretName: ingress-test-secret   #服务器证书名称
       rules: 
       - host: ''
         http: 
           paths: 
           - path: '/'
             backend: 
               serviceName: <your_service_name>  #替换为您的目标服务名称
               servicePort: 80      #替换为您的目标服务端口
             property:
               ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
     ```
     表2关键参数说明 
     | 参数                                   | 是否必填 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
     |:---|:---|:---|:---|
     | kubernetes.io/elb.security_policy_id | 否    | String           | ELB中自定义安全组策略ID，请前往ELB控制台获取。该字段仅在HTTPS协议下生效，且优先级高于默认安全策略。 自定义安全策略的创建、更新步骤请参见[TLS安全策略](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_0022.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
     | kubernetes.io/elb.tls-ciphers-policy | 否    | String           | 默认值为"tls-1-2"，为监听器使用的默认安全策略，仅在HTTPS协议下生效。 取值范围： - tls-1-0  - tls-1-1  - tls-1-2  - tls-1-2-strict  - tls-1-0-with-1-3（独享型实例）  - tls-1-2-fs（独享型实例）  - tls-1-2-fs-with-1-3（独享型实例）   各安全策略使用的加密套件列表详细参见[表3]。 |
     | tls                                  | 否    | Array of strings | HTTPS协议时，需添加此字段用于指定密钥证书。 该字段支持添加多项独立的域名和证书，详见[为ELB Ingress配置服务器名称指示（SNI）](https://support.huaweicloud.com/usermanual-cce/cce_10_0688.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
     | secretName                           | 否    | String           | HTTPS协议时添加，配置为创建的密钥证书名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
        
      表3tls_ciphers_policy取值说明 
     | 安全策略                       | 支持的TLS版本类型                                                                                                                | 使用的加密套件列表                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
     |:---|:---|:---|
     | tls-1-0                    | TLS 1.2 TLS 1.1 TLS 1.0                                      | ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA ECDHE-ECDSA-AES256-SHA AES128-SHA AES256-SHA                                                                                                                                                                                                                                                                                 |
     | tls-1-1                    | TLS 1.2 TLS 1.1                                                                           | ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA ECDHE-ECDSA-AES256-SHA AES128-SHA AES256-SHA                                                                                                                                                                                                                                                                                 |
     | tls-1-2                    | TLS 1.2                                                                                                                   | ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA ECDHE-ECDSA-AES256-SHA AES128-SHA AES256-SHA                                                                                                                                                                                                                                                                                 |
     | tls-1-2-strict             | TLS 1.2                                                                                                                   | ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
     | tls-1-0-with-1-3（独享型实例）    | TLS 1.3 TLS 1.2 TLS 1.1 TLS 1.0 | ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 AES128-GCM-SHA256 AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 AES128-SHA256 AES256-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-RSA-AES128-SHA ECDHE-RSA-AES256-SHA ECDHE-ECDSA-AES256-SHA AES128-SHA AES256-SHA TLS_AES_128_GCM_SHA256 TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_CCM_SHA256 TLS_AES_128_CCM_8_SHA256 |
     | tls-1-2-fs（独享型实例）          | TLS 1.3 TLS 1.2                                                                             | ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 TLS_AES_128_GCM_SHA256 TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_CCM_SHA256 TLS_AES_128_CCM_8_SHA256                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
     | tls-1-2-fs-with-1-3（独享型实例） | TLS 1.3 TLS 1.2                                                                             | ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES128-SHA256 ECDHE-RSA-AES128-SHA256 ECDHE-ECDSA-AES256-SHA384 ECDHE-RSA-AES256-SHA384 TLS_AES_128_GCM_SHA256 TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_CCM_SHA256 TLS_AES_128_CCM_8_SHA256                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
        
     
     
  
  6. 创建Ingress。 
     ```
     kubectl create -f ingress-test.yaml
     ```
     回显类似如下，表示Ingress服务已创建。
     ```
     ingress.networking.k8s.io/ingress-test created
     ```
     
     
  
  7. 查看已创建的Ingress。 
     ```
     kubectl get ingress
     ```
     回显如下，表示Ingress服务创建成功。
     ```
     NAME          CLASS    HOSTS     ADDRESS          PORTS   AGE
     ingress-test  cce      *         121.**.**.**     80,443  10s
     ```
     
     
  
  8. 访问工作负载（例如[Nginx工作负载](https://support.huaweicloud.com/usermanual-cce/cce_10_0047.html#cce_10_0047__section155246177178)），在浏览器中输入安全访问地址https://121.\*\*.\*\*.\*\*:443进行验证。
     
     其中，121.\*\*.\*\*.\*\*为统一负载均衡实例的IP地址。
     
     
   
 #### 使用ELB服务中的证书
您可以使用以下方式为Ingress配置ELB服务中的证书。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
- 当同时指定ELB证书和IngressTLS证书时，Ingress将使用ELB服务中的证书。
- CCE不校验ELB服务中的证书是否有效，只校验证书是否存在。
- 仅v1.19.16-r2、v1.21.5-r0、v1.23.3-r0及以上版本的集群支持使用ELB服务中的证书。
 
- [通过控制台配置]
  1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
  
  2. 选择左侧导航栏的"服务"，在右侧选择"路由"页签，单击右上角"创建路由"。
  
  3. 设置Ingress参数。 
     ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
     本示例中展示配置HTTPS证书的关键参数，其余参数可按需配置，详情请参见[通过控制台创建ELB Ingress](https://support.huaweicloud.com/usermanual-cce/cce_10_0251.html)。
     表4关键参数说明 
     | 参数     | 配置说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 示例                                                                                                                                                                                                                                                                                                                                                                                                                                        |
     |:---|:---|:---|
     | 名称     | 自定义Ingress名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | ingress-test                                                                                                                                                                                                                                                                                                                                                                                                                              |
     | 负载均衡器  | 选择对接的ELB实例或自动创建ELB实例。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 共享型ELB                                                                                                                                                                                                                                                                                                                                                                                                                                    |
     | 监听器配置  | - 前端协议：选择"HTTPS"。  - 对外端口：ELB监听器端口，HTTPS协议的端口默认为443。  - 证书来源：选择"ELB服务器证书"。  - SSL解析方式：证书来源选择"ELB服务器证书"时支持该配置。在v1.28.15-r60、v1.29.15-r20、v1.30.14-r20、v1.31.10-r20、v1.32.6-r20、v1.33.5-r10及以上版本的集群支持。 - 单向认证：仅进行服务器端认证。如需认证客户端身份，请选择双向认证。  - 双向认证：双向认证需要负载均衡实例与访问用户互相提供身份认证，从而允许通过认证的用户访问负载均衡实例，后端服务器无需额外配置双向认证。    - 服务器证书：使用在ELB服务中创建的证书。 如果您没有可选择的ELB证书，可前往ELB服务创建，详情请参见[创建证书](https://support.huaweicloud.com/usermanual-elb/elb_ug_szs_0003.html)。    | - 前端协议："HTTPS"  - 对外端口：443  - 证书来源："ELB服务器证书"  - SSL解析方式："单向认证"  - 服务器证书：cert-test   |
     | 转发策略配置 | - 域名：实际访问的域名地址，不配置时可通过IP地址访问Ingress。请确保所填写的域名已注册并备案，一旦配置了域名规则后，必须使用域名访问。  - 路径匹配规则：支持前缀匹配、精确匹配、正则匹配，请按需选择。  - 路径：后端应用对外提供访问的路径，此处添加的访问路径要求后端应用内存在相同的路径，否则转发无法生效。  - 目标服务名称：请选择已有Service，页面列表中的查询结果已自动过滤不符合要求的Service。如果没有满足要求的Service请根据[Ingress支持的Service类型](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html#cce_10_0094__section1674954315446)新建。  - 目标服务访问端口：可选择目标Service的访问端口。                                                                                                                                                                    | - 域名：无需填写  - 路径匹配规则：前缀匹配  - 路径：/  - 目标服务名称：nginx  - 目标服务访问端口：80                            |
        
     图2使用ELB服务中的证书   
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002493600434.png "点击放大")
     
     
     
  
  4. 配置完成后，单击"确定"。
   
- [通过kubectl命令行配置]
  使用ELB服务中的证书，可以通过指定kubernetes.io/elb.tls-certificate-ids注解实现。
  1. 请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)，使用kubectl连接集群。
  
  2. 创建名为"**ingress-test.yaml** "的YAML文件，此处文件名可自定义。
     
     ```
     vi ingress-test.yaml
     ```
     以关联已有ELB为例，YAML文件配置如下：
     **1.23及以上版本集群：**
     ```
     apiVersion: networking.k8s.io/v1
     kind: Ingress
     metadata:
       name: ingress-test
       namespace: default
       annotations:
         kubernetes.io/elb.port: '443'               # 对接的ELB端口
         kubernetes.io/elb.id: 0b9a6c4d-bd8b-45cc-bfc8-ff0f9da54e95    # ELB ID
         kubernetes.io/elb.class: union                 # ELB类型
         kubernetes.io/elb.tls-ciphers-policy: tls-1-2    # 默认安全策略，默认为tls-1-2
         kubernetes.io/elb.tls-certificate-ids: 058cc023690d48a3867ad69dbe9cd6e5,b98382b1f01c473286653afd1ed9ab63  # ELB服务中的证书ID列表
     spec:
       rules:
         - host: ''
           http:
             paths:
               - path: '/'
                 backend:
                   service:
                     name: <your_service_name>  #替换为您的目标服务名称
                     port: 
                       number: 80             #替换为您的目标服务端口
                 property:
                   ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
                 pathType: ImplementationSpecific
       ingressClassName: cce
     ```
     **1.21及以下版本集群：**
     ```
     apiVersion: networking.k8s.io/v1beta1
     kind: Ingress 
     metadata: 
       name: ingress-test
       annotations: 
         kubernetes.io/ingress.class: cce   # 创建Ingress时必须增加该参数，默认值为cce，表示使用自研ELB Ingress
         kubernetes.io/elb.port: '443'    # 对接的ELB端口
         kubernetes.io/elb.id: 0b9a6c4d-bd8b-45cc-bfc8-ff0f9da54e95    # ELB ID
         kubernetes.io/elb.class: union     # ELB类型
         kubernetes.io/elb.tls-ciphers-policy: tls-1-2    # 默认安全策略，默认为tls-1-2
         kubernetes.io/elb.tls-certificate-ids: 058cc023690d48a3867ad69dbe9cd6e5,b98382b1f01c473286653afd1ed9ab63  # ELB服务中的证书ID列表
     spec:
       rules: 
       - host: ''
         http: 
           paths: 
           - path: '/'
             backend: 
               serviceName: <your_service_name>  #替换为您的目标服务名称
               servicePort: 80     #替换为您的目标服务端口
             property:
               ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
     ```
     表5关键参数说明 
     | 参数                                    | 参数类型   | 描述                                                                                                                                                                                                                                                                                         |
     |:---|:---|:---|
     | kubernetes.io/elb.tls-certificate-ids | String | ELB服务中的证书ID列表，不同ID间使用英文逗号隔开，列表长度大于等于1。列表中的首个ID为服务器证书，其余ID为SNI证书（SNI证书中必须带有域名）。独享型ELB最多支持50本SNI证书，共享型ELB最多支持30本SNI证书。 如果无法根据客户端请求的域名查找到对应的SNI证书，则默认返回服务器证书。 获取方法：在CCE控制台，单击顶部的"服务列表 \> 网络 \> 弹性负载均衡"，并选择"证书管理"。在列表中复制对应证书名称下的ID即可。 |
        
     
     
  
  3. 创建Ingress。 
     ```
     kubectl create -f ingress-test.yaml
     ```
     回显类似如下，表示Ingress服务已创建。
     ```
     ingress.networking.k8s.io/ingress-test created
     ```
     
     
  
  4. 查看已创建的Ingress。 
     ```
     kubectl get ingress
     ```
     回显如下，表示Ingress服务创建成功。
     ```
     NAME          CLASS    HOSTS     ADDRESS          PORTS   AGE
     ingress-test  cce      *         121.**.**.**     80,443  10s
     ```
     
     
   
 #### 多个Ingress配置同一端口说明
在同一个集群中，多个Ingress可以使用同一个监听器（即使用同一个负载均衡器的同一个端口）。如果两个Ingress均配置了HTTPS证书，则生效的服务器证书将以最早创建的Ingress配置为准。详情请参见[如何确认监听器配置生效的Ingress](https://support.huaweicloud.com/cce_faq/cce_faq_00460.html)。
从集群版本v1.21.15-r0、v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0、v1.29.1-r0开始，Ingress的YAML中加入了annotation: kubernetes.io/elb.listener-master-ingress，其值指向的Ingress配置的服务器证书，就是当前Ingress实际生效的服务器证书。
例如，两个Ingress配置如下：
|                   Ingress名称                   |     ingress1     |     ingress2     |
|---|---|---|
| **命名空间**                                      | default          | default          |
| **创建时间**                                      | 2024/04/01       | 2024/04/02       |
| **协议**                                        | https            | https            |
| **负载均衡器**                                     | elb1             | elb1             |
| **端口**                                        | 443              | 443              |
| **kubernetes.io/elb.listener-master-ingress** | default/ingress1 | default/ingress1 |
   
这两个Ingress的配置中，都有annotation: kubernetes.io/elb.listener-master-ingress，值为default/ingress1，表示这两个Ingress实际生效的服务器证书，都是命名空间default下ingress1配置的服务器证书。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
不同命名空间下的Ingress对接同一个监听器且使用TLS密钥类型证书时，由于命名空间隔离，后创建的Ingress可能出现无法正常显示TLS密钥对应Secret的场景。详情请参见[不同命名空间下的Ingress共用监听器时如何同步生效的证书？](https://support.huaweicloud.com/cce_faq/cce_faq_00459.html)。
当需要修改服务器证书时，需要在default命名空间下ingress1的配置中修改服务器证书，修改后ingress1和ingress2实际生效的证书都同步修改。
您可以通过执行以下命令查询实际生效的证书配置所在的Ingress：
```
kubectl get ingress -n ${namespace} ${ingress_name}  -oyaml | grep kubernetes.io/elb.listener-master-ingress
```
#### 相关文档
- 当您面临ELB Ingress的HTTPS证书即将到期或已经过期的情况，请参见[更新ELB Ingress的HTTPS证书](https://support.huaweicloud.com/usermanual-cce/cce_10_0930.html)。
- 如果您需要为ELB Ingress配置服务器名称指示（SNI），请参见[为ELB Ingress配置服务器名称指示（SNI）](https://support.huaweicloud.com/usermanual-cce/cce_10_0688.html)。
- 如果您需要使用更多ELB Ingress的高级功能，请参见[ELB Ingress注解（Annotations）配置合集](https://support.huaweicloud.com/usermanual-cce/cce_10_0695.html)。
- 如果ELB Ingress配置HTTPS证书后存在访问异常，请参见[为ELB Ingress配置了HTTPS证书后访问异常的原因有哪些？](https://support.huaweicloud.com/cce_faq/cce_faq_00455.html)排查证书配置是否正确。
 
