Cert Manager证书续期仍使用就地编辑Ingress问题求助
解决Cert Manager续期时仍编辑现有Ingress的问题
核心原因
Cert Manager会留存证书与Ingress的历史关联配置,即便你移除了Ingress上的相关注解,证书对象内部可能仍绑定着旧的挑战规则,导致续期时还是复用原Ingress。
具体解决步骤
1. 检查证书的挑战关联配置
先查看目标证书的YAML配置,确认是否还绑定了原Ingress:
kubectl get certificate <你的证书名称> -o yaml
重点关注spec.acme.config下的http01或tls-alpn01节点,看是否存在ingress:字段指向原Ingress资源。
2. 修改证书配置,强制生成新挑战Ingress
编辑证书对象,在ACME挑战配置中添加ingressTemplate字段,明确指定要创建新的Ingress来完成挑战:
spec: acme: config: - http01: ingressTemplate: metadata: annotations: kubernetes.io/ingress.class: "nginx" # 替换为你的Ingress类 spec: {} # 留空即可,Cert Manager会自动填充挑战规则 domains: - <你的域名>
保存配置后,Cert Manager会触发新的证书请求,此时会创建独立的临时Ingress处理挑战,不再修改原Ingress。
3. 清理残留的旧挑战资源(可选)
如果之前的临时挑战Ingress、Order或Challenge对象还存在,可以手动清理:
# 删除旧的挑战Ingress kubectl delete ingress <旧挑战Ingress名称> # 清理过期的Order和Challenge kubectl delete order --all -n <证书所在命名空间> kubectl delete challenge --all -n <证书所在命名空间>
4. 验证配置生效
手动触发一次证书续期测试,观察是否生成新的挑战Ingress:
kubectl annotate certificate <你的证书名称> cert-manager.io/renew-by=$(date +%s --date="-1 day")
查看Ingress列表,确认新的挑战Ingress被创建,且原Ingress未被修改。
内容的提问来源于stack exchange,提问作者user3224454
相关产品推荐
相关产品推荐

