首页
/ cert-manager Helm 部署与配置完全指南

cert-manager Helm 部署与配置完全指南

2025-07-06 03:38:51作者:秋阔奎Evelyn

概述

cert-manager 是一个 Kubernetes 原生证书管理工具,能够自动为集群中的工作负载创建、续订和管理 TLS 证书。本文将详细介绍如何使用 Helm 在 Kubernetes 集群中部署和配置 cert-manager。

核心功能

cert-manager 提供以下核心能力:

  1. 自动化证书管理:自动创建和续订 TLS 证书,确保证书不会过期

  2. 多证书源支持:支持从多种证书颁发机构获取证书,包括:

    • Let's Encrypt(免费公共 CA)
    • HashiCorp Vault(企业级私钥管理)
    • Venafi(企业级证书管理平台)
    • 私有 PKI(企业自建 CA)
  3. Kubernetes 原生集成:通过自定义资源(CRD)定义证书需求

  4. 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 时需要注意:

  1. 检查升级指南中的特殊注意事项
  2. 考虑 CRD 的兼容性问题
  3. 测试新版本在非生产环境的表现

卸载步骤

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 垃圾回收器删除。

最佳实践

  1. 高可用性:生产环境应部署多个副本
  2. 资源限制:为控制器设置合理的资源限制
  3. 监控告警:监控证书到期时间和控制器健康状况
  4. 备份策略:定期备份关键证书和私钥
  5. 命名空间隔离:考虑将不同环境的证书资源隔离到不同命名空间

通过合理配置 cert-manager,可以大大简化 Kubernetes 集群中的证书管理流程,提高安全性并减少人为错误。