cert-manager更新多域名Ingress时重复签发过多证书问题求助
解决方案:独立证书隔离域名签发流程
问题根源分析
你当前的Ingress配置将所有域名放在同一个tls条目中,对应同一个Secret。cert-manager会为该条目生成一张包含所有域名的SAN(Subject Alternative Name)证书:
- 当任意一个域名变更时,cert-manager会认为整个证书需要更新,触发全域名的重新签发,直接导致Let's Encrypt的签发限额被快速耗尽。
- 一旦某个域名的验证或签发失败,整个SAN证书的生成都会失败,牵连其他正常域名。
最佳解决方案
方案1:拆分Ingress,每个域名对应独立Ingress资源
为每个可变更的域名创建单独的Ingress,每个Ingress只包含一个域名的tls配置和路由规则。这种方式完全隔离每个域名的证书生命周期,最适合多租户场景。
示例配置(以客户域名为例):
kind: Ingress apiVersion: extensions/v1beta1 metadata: name: server-ingress-customer-test1 namespace: {hidden} annotations: cert-manager.io/issuer: letsencrypt-prod spec: ingressClassName: nginx tls: - hosts: - test1.customer-domain.fr secretName: server-tls-customer-test1 rules: - host: test1.customer-domain.fr http: paths: - path: / pathType: Prefix backend: serviceName: server-v3-24-5 servicePort: 8080
同理,为test1.our-company.com和test2.our-company.com分别创建独立的Ingress,只需修改name、hosts和secretName字段即可。
方案2:同一Ingress内拆分多个tls条目
如果不想维护过多Ingress资源,可以在同一个Ingress中为每个域名创建独立的tls条目,每个条目对应唯一的Secret。cert-manager会为每个tls条目生成独立的证书,互不影响。
修改后的Ingress配置:
kind: Ingress apiVersion: extensions/v1beta1 metadata: name: server-ingress namespace: {hidden} annotations: cert-manager.io/issuer: letsencrypt-prod spec: ingressClassName: nginx tls: - hosts: - test1.customer-domain.fr secretName: server-tls-customer-test1 - hosts: - test1.our-company.com secretName: server-tls-our-test1 - hosts: - test2.our-company.com secretName: server-tls-our-test2 rules: - host: test1.customer-domain.fr http: paths: - path: / pathType: Prefix backend: serviceName: server-v3-24-5 servicePort: 8080 - host: test1.our-company.com http: paths: - path: / pathType: Prefix backend: serviceName: server-v3-24-5 servicePort: 8080 - host: test2.our-company.com http: paths: - path: / pathType: Prefix backend: serviceName: server-v3-24-5 servicePort: 8080
方案效果验证
两种方案都能解决你的核心问题:
- 避免批量重签:只有被修改的域名对应的证书会触发重新签发,其他域名的证书保持不变,不会触碰Let's Encrypt的签发限额。
- 隔离失败影响:单个域名的签发失败只会影响自身的证书,其他域名的证书生成流程不受干扰。
关键注意事项
- 确保每个
tls条目的secretName唯一,避免证书资源冲突。 - 你的cert-manager v1.9.1版本完全支持上述两种配置,无需额外升级。
- 多租户场景下,方案1的Ingress隔离方式更便于权限管控(比如给租户仅开放其域名对应的Ingress操作权限)。
内容的提问来源于stack exchange,提问作者Corentin
相关产品推荐
相关产品推荐

