HTTPS类型负载均衡证书一致性检查异常处理
检查项内容
检查HTTPS类型负载均衡所使用的证书,是否在ELB服务侧被修改。
解决方案
该问题的出现,一般是由于用户在CCE中创建HTTPS类型Ingress后,直接在ELB证书管理功能中修改了Ingress引用的证书,导致CCE集群中存储的证书内容与ELB侧不一致,进而导致升级后ELB侧证书被覆盖。
- 请登录ELB服务控制台,在“弹性负载均衡 > 证书管理”界面找到该证书,在证书描述字段中找到对应的secret_id。
图1 查询证书
该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>
- 您可以将Ingress使用的证书替换为ELB服务器证书,即可通过ELB控制台创建或编辑该证书。
- 请登录CCE控制台,前往“服务”页面并选择“路由”页签,找到使用该证书的路由,单击“更多 > 更新”。注意,这里可能有多个Ingess引用该证书,所涉及的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>
- 在监听器配置中,选择服务器证书来源为“ELB服务器证书”,该证书可通过ELB控制台创建或编辑,单击“确定”。
- 在“配置与密钥”界面删除对应的Secret,删除前建议先备份。
- 请登录CCE控制台,前往“服务”页面并选择“路由”页签,找到使用该证书的路由,单击“更多 > 更新”。注意,这里可能有多个Ingess引用该证书,所涉及的Ingress都需要进行更新,可以根据Ingress的yaml文件的spec.tls中secretName字段判断是否引用该Secret中的证书。