
# 为NGINX Ingress控制器插件配置ELB证书
NGINX Ingress控制器插件上支持使用以下方式配置Ingress证书：
- 密钥证书：需要将证书导入至密钥（Secret）中，并为NGINX Ingress控制器插件指定服务器默认证书（default-ssl-certificate）。
- ELB服务中的证书：直接使用ELB服务中创建的证书，NGINX Ingress控制器插件无需指定密钥证书。
图1NGINX Ingress配置证书差异   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002126307101.png "点击放大")
本章节介绍如何在NGINX Ingress控制器插件上配置ELB证书，使用ELB证书管理请求使用的证书。
#### 前提条件
- 集群中安装的NGINX Ingress控制器插件需要为2.2.104、2.6.53、3.0.30及以上版本。
- 启用NGINX Ingress控制器插件时请确认对接的独享型ELB实例是否符合协议要求。例如应用型ELB实例仅支持配置HTTP和HTTPS协议，如果还需要支持TCP协议，需要ELB实例同时支持应用型和网络型。
- 启用ELB证书后，无法再使用NGINX Ingress控制器插件侧的服务器默认证书（default-ssl-certificate）。所有外部请求均需要携带配置的ELB证书才可访问内部服务。
 
#### 操作步骤
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"插件中心"，在右侧找到**NGINX Ingress控制器** 插件，单击"安装"。
   
   如果已安装该插件，则单击"管理"，并选择需要配置ELB证书的实例单击"编辑"。
   
   
3. 在"扩展参数配置"中，填写以下参数。 
   1. 配置service.annotations参数，并确认协议填写是否正确。 示例如下：
      ```
      ...
              "service": {
                 "annotations": {
                    "kubernetes.io/elb.class": "performance",
                    "kubernetes.io/elb.id": "*****",
                    "kubernetes.io/elb.protocol-port": "https:443,http:80",
                    "kubernetes.io/elb.cert-id": "*****"
              },
      ...
      ```
      
      | 参数名称                            | 值类型    | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      |:---|:---|:---|
      | kubernetes.io/elb.class         | String | 负载均衡器类型。 - union：共享型ELB。  - performance：独享型ELB。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      | kubernetes.io/elb.id            | String | ELB实例ID，可前往ELB控制台查看。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      | kubernetes.io/elb.protocol-port | String | NGINX Ingress控制器插件监听器端口配置，其中监听器协议需要与ELB实例支持的类型相匹配，例如使用HTTP/HTTPS协议需要支持应用型的独享型ELB。 - 使用HTTP/HTTPS协议：将443端口、80端口分别发布成HTTPS、HTTP协议作为示例，因此参数值为*https:443,http:80*。  - 使用TLS协议：将443端口、80端口发布成TLS协议作为示例，因此参数值为*tls:443,tls:80* 。 说明： - 配置TLS协议时集群版本要求为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上。  - 配置TLS协议依赖ELB能力，使用该功能前请确认当前区域是否支持使用TLS协议，详情请参见[添加TLS监听器（独享型）](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_0100.html)。      |
      | kubernetes.io/elb.cert-id       | String | ELB服务中的证书ID。 获取方法：在CCE控制台，单击顶部的"服务列表 \> 网络 \> 弹性负载均衡"，并选择"证书管理"。在列表中复制对应证书名称下的ID即可。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
         
      针对以上参数的详细说明请参考[为负载均衡类型的Service配置HTTP/HTTPS协议](https://support.huaweicloud.com/usermanual-cce/cce_10_0683.html)。
      ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002118704949.png "点击放大")
      
      
   
   2. 配置targetPort参数，将ELB的访问流量指向容器的HTTP端口。 示例如下：
      ```
      ...
      "targetPorts": {
      "http": "http",
      "https": "http"
      },
      ...
      ```
      ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
      启用ELB证书后，原先NGINX Ingress Controller配置的服务器默认证书（default-ssl-certificate）将不可用，配置后不生效。外部请求均需要携带配置的ELB证书，否则请求将无法解析。
      
   
   
   
   
4. 根据需求选择其他必选参数后，单击"安装"。关于参数的详细说明请参见[NGINX Ingress控制器](https://support.huaweicloud.com/usermanual-cce/cce_10_0034.html)。
5. 配置下发完成后，在左侧导航栏中选择"服务"，并切换至"kube-system"命名空间，查看插件对接的监听器端口协议，本示例中为HTTP和HTTPS，而不是TCP协议。 
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002099836296.png "点击放大")
   
   
   
 
