cert-manager 是 kubernetes 原生证书控制器,非 linux 宿主机服务;通过 helm 部署于集群,配合 clusterissuer 和 certificate 资源自动申请、续期 tls 证书并存入 secret,供 ingress 或应用调用。

在 Linux 系统上部署 cert-manager,本质是将其作为 Kubernetes 集群的证书控制器运行,而非直接安装在宿主机。它不替代 OpenSSL 或系统级证书工具,而是专为容器化工作负载(如 Ingress、Service Mesh、自定义应用)自动申请、续期、注入 TLS 证书。核心目标是把证书变成 Kubernetes 原生资源——存进 Secret,由应用按名调用,无需手动挂载或更新。
确认前提:K8s 集群已就绪
cert-manager 是 Kubernetes 的扩展组件,不是独立 Linux 服务。部署前必须确保:
- Kubernetes 集群正常运行(支持 v1.22+),kubectl get nodes 返回 Ready 状态
- 集群具备公网可访问能力(HTTP-01 挑战必需)或 DNS 管理权限(DNS-01 可选)
- 已安装 kubectl(Linux 客户端),且配置了对集群的有效 kubeconfig
- 推荐使用 Helm v3+(更稳定);若不用 Helm,需确保 kubectl 版本 ≥ v1.19(支持 CRD v1)
选择安装方式:Helm 推荐用于生产
Helm 安装更可控、可复现,尤其适合多环境统一管理:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 添加官方仓库:helm repo add jetstack https://charts.jetstack.io
- 更新索引:helm repo update
- 创建专用命名空间:kubectl create namespace cert-manager
- 一键安装(含 CRD):helm install cert-manager jetstack/cert-manager --namespace cert-manager --version v1.14.4 --set installCRDs=true
- 验证:kubectl get pods -n cert-manager —— 三个 Pod(controller、cainjector、webhook)均显示 1/1 Running
配置 ClusterIssuer 对接 Let's Encrypt
仅安装不配置无法签发证书。ClusterIssuer 是集群级签发者,支持跨命名空间使用:
- 新建 cluster-issuer.yaml,指定 ACME 服务器(staging 或 production)、邮箱、私钥名和 HTTP-01 solver
- 关键点:HTTP-01 要求 Ingress 控制器(如 Nginx、Traefik)已就位,且能将
/.well-known/acme-challenge/路径正确路由到 cert-manager 提供的 acmesolver 服务 - 应用配置:kubectl apply -f cluster-issuer.yaml
- 检查状态:kubectl get clusterissuers -o wide,STATUS 应为 Ready
触发证书签发:通过 Certificate 资源声明需求
真正让证书落地的是 Certificate 自定义资源。它告诉 cert-manager:“我要为 example.com 申请证书,用刚才配好的 ClusterIssuer”:
- 定义一个 YAML,包含
spec.dnsNames(域名列表)、spec.secretName(生成的 Secret 名)、spec.issuerRef(引用 ClusterIssuer) - 应用后,cert-manager 会自动创建 CertificateRequest 和 Order,并执行 ACME 挑战
- 成功后,证书与私钥将写入指定名称的 Secret 中,Ingress 或应用即可直接引用该 Secret 启用 HTTPS
- 后续续期完全自动,无需人工干预,通常在到期前 30 天开始尝试
整个流程围绕 Kubernetes 原语展开,不侵入 Linux 宿主机系统,也不修改容器镜像。证书生命周期被收编进集群控制面,安全、透明、可审计。










