【问题标题】:Stop TLS certificates to be automatically recreated by cert-manager停止 TLS 证书由 cert-manager 自动重新创建
【发布时间】:2024-04-12 08:30:02
【问题描述】:

我正在调查关于 cert-manager 的某些事情。

TLS certificates 由 cert-manager 自动重新创建。

我需要以某种方式注销域/证书,以免重新生成。我想我需要告诉 cert-manager 不要再关心给定的域了。

我现在不知道该怎么做。有人可以帮忙吗?

【问题讨论】:

  • 您是否删除了与您的域相关的Certificate 自定义资源?
  • 此库删除 kubernetes 上的 Secret 对象,其中包含有关证书的数据.. @whites11
  • TLS secret 和Certificate CR 有很大的不同。让我在答案中解释一下。

标签: kubernetes ssl-certificate google-kubernetes-engine cert-manager


【解决方案1】:

cert-manager 是使用operator pattern 实现的应用程序。

一句话,它在Kubernetes API中监视一个名为CertificateCustom Resource(简称CR)并创建和更新Secrets资源来存储证书数据。

如果您删除 Secret 资源但不删除 Certificate CR,cert-manager 将为您重新创建密钥。

“注销域”的正确方法,或者更好地说“使 cert-manager 不再为域生成证书”,您需要删除与您的域相关的 Certificate CR。

要获取集群中所有Certificate CR 的列表,您可以使用kubectl

kubectl get certificate -A

当您找到与您要删除的域相关的Certificate时,只需将其删除

kubectl -n <namespace> delete certificate <certificate name>

删除证书 CR 后,您可能还想再次删除包含 TLS 证书的 Secret。这次cert-manager 不会重新创建它。

【讨论】:

  • 这太棒了!非常感谢@whites11
  • 还有一种方法可以通过 API 调用来集成它。我在我的 PHP 项目中有一个电话,所以我正在寻找一种通过 HTTP 请求的方法? @whites11
  • 更准确地说,我想通过 HTTP 请求触发 kubectl -n delete certificate 命令? @whites11
  • 这是一个 HTTP API,只要 PHP 进程可以访问 API 服务器,就可以确定。也许看看一些客户端库kubernetes.io/docs/reference/using-api/client-libraries
  • 这是我正在使用的库:github.com/allansun/kubernetes-php-client@whites11
最近更新 更多