一些背景: 我们的应用程序在 Kubernetes(GCP)中运行。 Ingress 是通过 Nginx Ingress 控制器\Cert-manager 配置的。
问题: 已应用 ssl 证书且处于有效状态。 我需要向证书添加新的 DNS。所以我下载了ssl机密。 使用 certbot 我手动生成了新的证书和私钥(使用现有的和新的 dns)。我删除了当前的 ssl 证书以开始续订过程。这一步也导致了秘密的删除。
当我在 nginx ns 中应用 sll 密钥时,该密钥会立即被删除。
GCP 日志显示“kube-system:generic-garbage-collector”正在删除机密。
我停止了证书管理器只是为了确保它不会删除证书。尝试应用秘密,但它仍然被删除。
我希望创建秘密并且证书生效。
出现此问题的原因是 Cert-Manager 正在管理 SSL 证书机密,并在该机密与其应管理的
Certificate
资源不一致时将其删除。
重新创建
Certificate
资源:
Certificate
资源来管理 SSL 密钥。您需要使用更新的 DNS 名称重新创建 Certificate
资源并引用密钥。这将触发 Cert-Manager 生成正确的证书和私钥并将其存储在密钥中。apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-app-cert
namespace: <your-namespace>
spec:
secretName: my-app-tls-secret
dnsNames:
- existing.example.com
- new.example.com
issuerRef:
name: <your-issuer-name>
kind: ClusterIssuer
避免手动更改秘密:
使用证书管理器验证:
kubectl logs -n cert-manager deploy/cert-manager
Certificate
资源的状态以查看是否正在颁发新证书:
kubectl describe certificate <certificate-name>
验证垃圾收集:
Certificate
资源)。确保 Certificate
链接到正确的秘密名称和命名空间。通过确保应用
Certificate
资源,Cert-Manager 将正确管理机密,并且应正确更新证书。