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

升级ingress-nginx 1.0.3后cert-manager证书自动续期失败如何解决?

问题根因

  • ingress-nginx 从1.0版本开始默认关闭了对旧版kubernetes.io/ingress.class注解的兼容,仅识别spec.ingressClassName字段绑定的IngressClass资源
  • cert-manager v1.4.0默认生成的ACME HTTP01挑战Ingress仅配置旧注解,未填充spec.ingressClassName字段,因此无法被升级后的ingress-nginx识别

方案1:配置cert-manager生成挑战Ingress时使用spec.ingressClassName字段

  • 版本适配说明:该问题已经在cert-manager v1.5.0及以上版本原生支持,无需额外配置模板,直接在Solver中指定对应参数即可。
  • 具体配置方法:
    1. 若你使用cert-manager v1.5.0+,直接修改你的Issuer/ClusterIssuer配置,在HTTP01 solver中添加ingressClassName参数:
    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer # 或Issuer
    spec:
      acme:
        # 其余配置保持不变
        solvers:
        - http01:
            ingress:
              # 替换为你实际使用的IngressClass的名称
              ingressClassName: nginx
    
    1. 若你暂时不想升级cert-manager,仍使用v1.4.0版本,可以通过ingressTemplate字段强制注入spec.ingressClassName配置:
    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer # 或Issuer
    spec:
      acme:
        # 其余配置保持不变
        solvers:
        - http01:
            ingress:
              class: nginx
              ingressTemplate:
                spec:
                  # 替换为你实际使用的IngressClass的名称
                  ingressClassName: nginx
    
    配置更新后,cert-manager新生成的挑战Ingress会自动填充spec.ingressClassName字段,无需手动修改。

方案2:配置ingress-nginx兼容旧版kubernetes.io/ingress.class注解

ingress-nginx 1.0+只是默认关闭了旧注解兼容能力,并非完全不支持,可通过修改控制器启动参数开启兼容:

  • 如果使用helm安装ingress-nginx,直接更新values.yaml配置:
    controller:
      # 开启对未指定ingressClassName、仅带旧注解的Ingress的监听
      watchIngressWithoutClass: true
      # 你的控制器对应的ingressClass名称
      ingressClass: nginx
      ingressClassResource:
        name: nginx
        enabled: true
        default: false # 若需要设置为默认IngressClass可改为true
        controllerValue: "k8s.io/ingress-nginx"
    
  • 如果是直接部署的yaml,给ingress-nginx控制器的容器启动参数添加以下配置:
    args:
    - /nginx-ingress-controller
    - --watch-ingress-without-class=true
    - --ingress-class=nginx # 替换为你的IngressClass名称
    # 其余原有参数保持不变
    

配置更新后,控制器就可以正常识别仅带kubernetes.io/ingress.class注解的Ingress资源,包括cert-manager生成的挑战Ingress。

内容的提问来源于stack exchange,提问作者e.dan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:57:01