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

K3s集群中Ingress关联的TLS Secret未被Traefik使用问题

问题排查与解决方案

针对你在K3s集群中使用Traefik 2.6.2时,Ingress配置了自定义TLS证书但仍加载默认证书的问题,可按以下步骤排查修复:

  • 检查IngressClass匹配情况
    K3s默认部署的Traefik依赖特定IngressClass资源,需确认Ingress注解与集群内实际存在的IngressClass一致:

    1. 执行命令查看集群内IngressClass列表:
      kubectl get ingressclass
      
    2. 若输出中无名为traefik的IngressClass,或IngressClass名称不符,需修改Ingress的kubernetes.io/ingress.class注解,使其与实际IngressClass名称匹配。
  • 验证Secret有效性与读取权限
    确认Secret内容正确且Traefik有权访问:

    1. 导出证书内容,验证域名覆盖范围与有效期:
      kubectl get secret mydomain-cert -n default -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -text
      
      检查输出里的Subject Alternative Name是否包含my-app.mydomain.com,Not After字段是否符合预期有效期。
    2. 确认Traefik的ServiceAccount具备读取default命名空间Secret的权限:
      kubectl describe clusterrole traefik -n kube-system
      
      确保规则中包含secrets资源的get、list权限。
  • 调整Traefik自动TLS配置
    K3s默认Traefik可能启用了自动Let's Encrypt证书解析器,可能与手动配置的证书冲突:

    1. 查看Traefik的ConfigMap配置:
      kubectl get configmap traefik-config -n kube-system -o yaml
      
    2. 若存在certificatesResolvers配置,添加域名排除规则,让自动解析器不处理目标域名,示例如下:
      certificatesResolvers:
        default:
          acme:
            # 原有配置...
            domains:
              - exclude: "my-app.mydomain.com"
      
    3. 修改后重启Traefik部署加载新配置:
      kubectl rollout restart deployment traefik -n kube-system
      
  • 检查Ingress资源状态
    查看Ingress事件日志,确认是否存在配置错误:

    kubectl describe ingress my-app-ing -n default
    

    若事件提示无法读取Secret或TLS配置无效,针对性修复对应问题即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:55:48