You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Kubernetes中永久删除SSL证书或强制重新签发?

解决cert-manager证书删除后自动重建及强制重新签发问题

为什么删除证书/Secret后会自动重建?

这是因为你只删除了最终生成的certsecret资源,但cert-manager的核心管理对象是Certificate自定义资源(CRD)——它会持续监控并确保对应的证书和Secret存在,所以只要Certificate资源还在,删了下属的资源就会被自动重建。


一、永久删除证书的步骤

要彻底删掉证书,必须先删除对应的Certificate资源,步骤如下:

  1. 先确认目标Certificate资源存在:
    kubectl get certificates
    
    找到名为mywebsite-tls的条目。
  2. 删除Certificate资源(这是关键!):
    kubectl delete certificate mywebsite-tls
    
  3. 清理残留的Secret(如果Certificate删除后Secret还没自动消失):
    kubectl delete secret mywebsite-tls
    
  4. (可选)如果你的Ingress资源还在引用这个Secret,记得同步更新Ingress配置,避免后续出现错误。

二、强制重新签发证书的方法

如果只是想重新签发证书而不是删除,有几种可靠的方式:

方法1:通过注解触发强制更新

给Certificate资源添加一个强制更新的注解,cert-manager会立刻触发重新签发流程:

kubectl annotate certificate mywebsite-tls cert-manager.io/force-renewal=true

签发完成后,你可以选择移除这个注解(可选操作):

kubectl annotate certificate mywebsite-tls cert-manager.io/force-renewal-

方法2:删除签发过程中的临时资源

cert-manager签发证书时会生成OrderChallenge临时资源,删除这些资源会触发重新签发:

  1. 找到与mywebsite-tls关联的Order:
    kubectl get orders
    
    通常名称会包含证书的前缀,比如mywebsite-tls-xxxx
  2. 删除对应的Order:
    kubectl delete order <你的order名称>
    
  3. (可选)如果需要,再删除对应的Challenge资源:
    kubectl get challenges
    kubectl delete challenge <你的challenge名称>
    

方法3:直接删除Secret(适合快速触发)

直接删除证书对应的Secret,cert-manager会自动检测到Secret缺失,进而重新签发证书:

kubectl delete secret mywebsite-tls

不过要注意,这种方式下如果证书状态一直是False,可能需要检查Issuer/ClusterIssuer的配置是否正常,或者域名的DNS解析、ACME挑战是否能正常完成。


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

火山引擎 最新活动