Cert Manager 是 Kubernetes 中用于管理证书的工具,它可以自动化证书的颁发、更新和续期。以下是使用 Cert Manager 实现证书续期的基本步骤:
步骤概述
- 安装 Cert Manager
在 Kubernetes 集群中安装 Cert Manager。可以使用 Helm 或 YAML 文件进行安装。
使用 Helm 安装 Cert Manager:
helm repo add jetstack https://charts.jetstack.io
helm install cert-manager jetstack/cert-manager
- 创建 Issuer 或 ClusterIssuer
- 创建 Issuer 或 ClusterIssuer 对象以连接到证书颁发机构(CA)。ClusterIssuer 是一个全局对象,而 Issuer 是命名空间相关的。
下面是一个示例 ClusterIssuer YAML 文件:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# 使用 Let's Encrypt ACME 服务器
server: https://acme-v02.api.letsencrypt.org/directory
email: your-email@example.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
- 创建证书资源
- 创建证书资源定义。这会告诉 Cert Manager 为特定的域名颁发证书。
以下是一个证书资源的示例 YAML 文件:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: example-com
spec:
secretName: example-com-tls
duration: 2160h # 证书有效期限(时间)
renewBefore: 360h # 在过期之前多久开始续订证书
issuerRef:
kind: ClusterIssuer
name: letsencrypt-prod
dnsNames:
- example.com
- 部署证书到需要使用的资源
- 将证书部署到需要使用 TLS 的资源(如 Ingress、Service 等)中。
例如,在 Ingress 中使用证书:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
tls:
- hosts:
- example.com
secretName: example-com-tls
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
结论
上述步骤是一个基本示例,展示了如何设置 Cert Manager 以自动管理证书的续期。您可以根据实际需求和使用的 CA 进行调整和扩展,确保证书得到有效续期和更新。 Cert Manager 将会自动处理证书的续期过程,您只需要配置好相关的资源。