cert-manager Helm 部署与配置完全指南
2025-07-06 03:38:51作者:秋阔奎Evelyn
概述
cert-manager 是一个 Kubernetes 原生证书管理工具,能够自动为集群中的工作负载创建、续订和管理 TLS 证书。本文将详细介绍如何使用 Helm 在 Kubernetes 集群中部署和配置 cert-manager。
核心功能
cert-manager 提供以下核心能力:
-
自动化证书管理:自动创建和续订 TLS 证书,确保证书不会过期
-
多证书源支持:支持从多种证书颁发机构获取证书,包括:
- Let's Encrypt(免费公共 CA)
- HashiCorp Vault(企业级私钥管理)
- Venafi(企业级证书管理平台)
- 私有 PKI(企业自建 CA)
-
Kubernetes 原生集成:通过自定义资源(CRD)定义证书需求
-
Ingress 集成:自动为 Ingress 资源提供 TLS 证书
部署要求
- Kubernetes 1.22 或更高版本
- Helm 3.x
安装步骤
1. 添加 Helm 仓库
helm repo add jetstack https://charts.jetstack.io --force-update
2. 安装 cert-manager
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version {{RELEASE_VERSION}} \
--set crds.enabled=true
安装完成后,需要配置 Issuer 或 ClusterIssuer 资源才能开始签发证书。
关键配置选项
全局配置
- imagePullSecrets:私有镜像仓库的访问凭证
- nodeSelector:控制 Pod 调度到特定节点
- logLevel:日志详细级别(0-6)
- leaderElection:领导者选举相关配置
CRD 管理
- crds.enabled:是否通过 Helm 安装 CRD
- crds.keep:卸载 Helm 时是否保留 CRD(警告:删除 CRD 会导致所有相关自定义资源被删除)
控制器配置
- replicaCount:控制器副本数(生产环境建议 2-3)
- strategy:部署更新策略
- podDisruptionBudget:Pod 中断预算配置
- maxConcurrentChallenges:并发处理的最大挑战数
镜像配置
- image.repository:控制器镜像仓库
- image.tag:镜像标签
- image.pullPolicy:镜像拉取策略
高级配置
- featureGates:特性开关
- config:控制器详细配置
- extraArgs:额外命令行参数
- extraEnv:额外环境变量
- resources:资源请求和限制
- securityContext:安全上下文配置
典型配置示例
生产环境配置
replicaCount: 3
podDisruptionBudget:
enabled: true
minAvailable: 2
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
Let's Encrypt 集成配置
config:
apiVersion: controller.config.cert-manager.io/v1alpha1
kind: ControllerConfiguration
featureGates:
ExperimentalGatewayAPISupport: true
升级注意事项
升级 cert-manager 时需要注意:
- 检查升级指南中的特殊注意事项
- 考虑 CRD 的兼容性问题
- 测试新版本在非生产环境的表现
卸载步骤
1. 删除 Helm 发布
helm delete cert-manager --namespace cert-manager
2. 删除 CRD(谨慎操作)
kubectl delete crd \
issuers.cert-manager.io \
clusterissuers.cert-manager.io \
certificates.cert-manager.io \
certificaterequests.cert-manager.io \
orders.acme.cert-manager.io \
challenges.acme.cert-manager.io
注意:删除 CRD 会导致所有相关自定义资源被 Kubernetes 垃圾回收器删除。
最佳实践
- 高可用性:生产环境应部署多个副本
- 资源限制:为控制器设置合理的资源限制
- 监控告警:监控证书到期时间和控制器健康状况
- 备份策略:定期备份关键证书和私钥
- 命名空间隔离:考虑将不同环境的证书资源隔离到不同命名空间
通过合理配置 cert-manager,可以大大简化 Kubernetes 集群中的证书管理流程,提高安全性并减少人为错误。