求助:Azure Key Vault中SSL证书与AKS应用路由附加组件密钥不符
AKS Ingress TLS证书与Key Vault不一致问题的排查与修复
以下是针对性的排查和解决步骤:
1. 确认证书同步链路的健康状态
如果使用了AKS的Key Vault集成组件(比如CSI驱动或App Routing的证书自动同步),先检查同步组件的日志:
- 对于CSI驱动:
kubectl logs -n kube-system -l app=csi-secrets-store-provider-azure,查看是否存在证书拉取失败、权限不足或同步延迟的报错。 - 对于App Routing控制器:
kubectl logs -n app-routing-system -l app=app-routing-controller,排查证书同步相关的日志输出。
2. 验证Secret的有效性与来源
执行kubectl get secret <secretname> -o yaml,重点关注:
- 查看
annotations字段是否包含Key Vault的关联信息(比如azure.keyvault.secret.url),如果没有,说明该Secret是手动创建的旧版本,需要重新从Key Vault导出证书进行更新:- 从Key Vault导出包含私钥和完整证书链的PEM格式文件
- 用命令覆盖更新Secret:
kubectl create secret tls <secretname> --cert=./full-chain.pem --key=./private-key.pem --dry-run=client -o yaml | kubectl apply -f -
- 确认
data.tls.crt的更新时间,检查是否与Key Vault中证书的更新时间匹配。
3. 检查Ingress配置与控制器状态
- 确认Ingress资源的
tls段中secretName与目标Secret完全匹配,且没有跨命名空间的同名Secret产生干扰。 - 重启Ingress控制器强制刷新配置:
kubectl rollout restart deployment -n <ingress-namespace> <ingress-controller-deployment>(替换对应命名空间和部署名,比如NGINX Ingress通常在ingress-nginx命名空间)
4. 分析证书链细节
解码后的tls.crt出现两个证书属于正常情况(服务器证书+中间证书),但如果这些证书过期或与Key Vault不符:
- 使用
openssl x509 -in <解码后的证书文件> -text -noout分别解析两个证书,查看Not Before/Not After有效期和颁发者信息,与Key Vault中的证书详情做对比。 - 如果中间证书过期,需要从CA重新获取完整的证书链,更新到Key Vault后再同步至AKS。
5. 清除缓存干扰
测试前清除浏览器缓存,或使用无痕模式访问,避免本地缓存的旧证书影响结果。
内容的提问来源于stack exchange,提问作者OwendB
相关产品推荐
相关产品推荐

