
# HTTPS类型负载均衡证书一致性检查异常处理
#### 检查项内容
检查HTTPS类型负载均衡所使用的证书，是否在ELB服务侧被修改。
#### 解决方案
该问题的出现，一般是由于用户在CCE中创建HTTPS类型Ingress后，直接在ELB证书管理功能中修改了Ingress引用的证书，导致CCE集群中存储的证书内容与ELB侧不一致，进而导致升级后ELB侧证书被覆盖。
1. 请登录[ELB控制台](https://console.huaweicloud.com/vpc/#/elb/list/grid)，在"弹性负载均衡 \> 证书管理"界面找到该证书，在证书描述字段中找到对应的secret_id。
   
   图1查询证书   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001562570752.png "点击放大")
   该secret_id即为集群中对应Secret的metadata.uid字段，可以根据该uid查询集群中Secret的名称。
   您可以通过以下kubectl命令进行查询，其中*\<secret_id\>* 请自行替换。
   ```
   kubectl get secret --all-namespaces -o jsonpath='{range .items[*]}{"uid:"}{.metadata.uid}{" namespace:"}{.metadata.namespace}{" name:"}{.metadata.name}{"\n"}{end}' | grep <secret_id>
   ```
   
   
2. 仅v1.19.16-r2、v1.21.5-r0、v1.23.3-r0及以上版本的集群支持使用ELB服务中的证书，上述版本集群请参考[方案一]处理，其他版本集群请参考[方案二]处理。
   
   - 方案一：您可以将Ingress使用的证书替换为ELB服务器证书，即可通过ELB控制台创建或编辑该证书。
     1. 请登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，前往"服务"页面并选择"路由"页签，找到使用该证书的路由，单击"更多 \> 更新"。注意，这里可能有多个Ingress引用该证书，所涉及的Ingress都需要进行更新，可以根据Ingress的yaml文件的spec.tls中secretName字段判断是否引用该Secret中的证书。
        您可以通过以下kubectl命令进行查询引用该证书的Ingress，其中*\<secret_name\>*请自行替换。
        ```
        kubectl get ingress --all-namespaces -o jsonpath='{range .items[*]}{"namespace:"}{.metadata.namespace}{" name:"}{.metadata.name}{" tls:"}{.spec.tls[*]}{"\n"}{end}' | grep <secret_name>
        ```
        
     
     2. 在监听器配置中，选择服务器证书来源为"ELB服务器证书"，该证书可通过ELB控制台创建或编辑，单击"确定"。
     
     3. 在"配置与密钥"界面删除对应的Secret，删除前建议先备份。
      
   
   - 方案二：您可以将Ingress使用的证书，覆写到集群对应的Secret资源中，避免在升级时出现ELB侧证书被更新。
     请登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，前往"配置与密钥"页面找到该Secret并编辑，填入您正在使用的证书并保存。
     图2修改Secret   
     ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002484783850.png "点击放大")
     
     
   
   
   
   
 
