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

Kubernetes Ingress错误定位SSL证书Secret问题排查

问题分析与解决方案

从你给出的信息来看,问题的核心在于你的TLS Secret不符合Kubernetes Ingress对证书Secret的标准要求,导致Ingress Controller无法正常识别它。

问题根源

Kubernetes的nginx-ingress Controller要求TLS证书Secret必须满足两个硬性条件:

  • Secret的类型必须是 kubernetes.io/tls(而非你当前的Opaque类型)
  • Secret必须同时包含tls.crt(证书文件)和tls.key(私钥文件)两个数据项

看你kubectl describe secrets/tls-keycloak-czv9g的输出:

Type: Opaque
Data

tls.key: 1704 bytes

这个Secret不仅类型不对,还缺少了关键的tls.crt证书文件——这就是Ingress Controller报错“local SSL certificate default/tls-keycloak-czv9g was not found”的直接原因。

排查与修复步骤

  1. 检查cert-manager证书状态
    你配置了cert-manager.io/cluster-issuer自动签发证书,先确认对应的证书资源是否正常就绪:

    kubectl get certificates
    

    如果证书状态不是Ready,说明cert-manager在签发过程中出了问题,需要查看cert-manager的日志定位原因:

    kubectl logs -n cert-manager -l app=cert-manager
    

    常见问题包括:HTTP-01挑战的临时Ingress无法访问、DNS-01挑战的域名解析失败、ClusterIssuer配置错误(比如ACME服务器地址或邮箱设置有误)等。

  2. 重新生成标准TLS Secret
    如果证书状态已经是Ready,但Secret仍异常,可以手动删除现有Secret,让cert-manager自动重新生成符合标准的Secret:

    kubectl delete secret tls-keycloak-czv9g
    

    cert-manager会重新创建一个类型为kubernetes.io/tls、同时包含tls.crt和tls.key的标准TLS Secret。

  3. 验证修复结果
    重新生成Secret后,用以下命令确认它的类型和数据项:

    kubectl describe secrets/tls-keycloak-czv9g
    

    正常情况下应该看到:

    Type: kubernetes.io/tls
    Data

    tls.crt: XXXX bytes
    tls.key: XXXX bytes

    这时再查看Ingress Controller的日志,证书找不到的报错应该就消失了。

额外提示

你的Keycloak Helm Chart配置整体没问题,但要确保cert-manager已正确安装,且keycloak-issuer这个ClusterIssuer配置正确——比如使用Let's Encrypt时,测试环境要指定 staging 服务器地址,生产环境用正式地址,同时邮箱信息要准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:47:29