You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS集群Ingress Controller无法找到TLS证书Secret求助

AKS Nginx Ingress TLS配置失败排查方案

核心错误分析

日志中的两个关键错误指向两个核心问题:

  1. 证书不是有效的PEM格式:Error obtaining X.509 certificate: unexpected error creating SSL Cert: no valid PEM formatted block found
  2. Ingress Controller无法找到指定的Secret:Error getting SSL certificate "myapp-test/myapp-tls": local SSL certificate myapp-test/myapp-tls was not found

排查与解决步骤

1. 验证证书与密钥的PEM格式及Base64编码

  • 确认原始文件格式:你的证书文件必须以-----BEGIN CERTIFICATE-----开头、-----END CERTIFICATE-----结尾;私钥文件必须以-----BEGIN PRIVATE KEY-----或-----BEGIN RSA PRIVATE KEY-----开头、对应结尾语句结束。
  • 验证Base64编码正确性:将Secret中data字段的内容解码,检查是否还原为完整的PEM内容:
    # 验证tls.crt
    echo "你的BASE64编码内容" | base64 -d
    # 验证tls.key
    echo "你的BASE64编码内容" | base64 -d
    
    若解码后不是完整的PEM格式,说明编码过程出错,需重新生成。

2. 确认Secret与Ingress的命名空间一致性

  • 检查Secret是否存在于指定命名空间:
    kubectl get secret myapp-tls -n myapp-test
    
    输出需显示Secret存在,且Type为kubernetes.io/tls。
  • 查看Secret的实际内容,确认data字段不是占位符(你当前配置中的BASE64 ENCODED CRT FILE CONTENT是占位符,需替换为真实编码值):
    kubectl get secret myapp-tls -n myapp-test -o yaml
    

3. 用kubectl直接生成Secret(避免手动编码错误)

手动编写YAML容易出现格式错误,推荐用kubectl命令直接创建TLS Secret:

kubectl create secret tls myapp-tls -n myapp-test --cert=/path/to/your/test-app.myapp.io.crt --key=/path/to/your/test-app.myapp.io.key

该命令会自动完成PEM文件的Base64编码,确保格式完全符合要求。

4. 重新部署Ingress并验证

  • 删除现有Ingress和Secret:
    kubectl delete ingress myapp-test -n myapp-test
    kubectl delete secret myapp-tls -n myapp-test
    
  • 重新创建Secret(用上面的kubectl命令),再应用Ingress配置:
    kubectl apply -f myapp-ingress.yml
    

5. 检查Ingress Controller的权限

确认Nginx Ingress Controller的ServiceAccount有权限读取myapp-test命名空间的Secret:

  • 查看Controller使用的ClusterRole:
    kubectl get clusterrole | grep nginx
    
  • 检查该ClusterRole是否包含secrets资源的get权限:
    kubectl describe clusterrole <nginx-clusterrole-name>
    
    若缺少权限,需更新ClusterRole添加对应权限。

6. 查看详细日志定位问题

获取Ingress Controller的完整日志,排查更细节的错误:

kubectl logs -n kube-system $(kubectl get pods -n kube-system | grep nginx-ingress | awk '{print $1}')

内容的提问来源于stack exchange,提问作者Franck Charlier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 14:56:27