cert-manager 完整指南在 Kubernetes 中自动签发、续签 TLS 证书【免费下载链接】cert-managerAutomatically provision and manage TLS certificates in Kubernetes项目地址: https://gitcode.com/gh_mirrors/ce/cert-managercert-manager 是一个运行在 Kubernetes 集群里的开源证书管理控制器把「证书」和「证书颁发者」变成和Deployment一样可以声明、可以版本管理的资源。它负责自动获取、自动续签、自动使用证书支持从 Lets EncryptACME、HashiCorp Vault、Venafi / CyberArk Certificate Manager 等来源签发也能在集群内部本地签发。对于运维、SRE 和平台工程师来说它能把「证书快过期了」这种最容易踩坑、也最费工的事情变成一条自动流水线显著降低服务中断风险。cert-manager 解决什么问题告别手工换证书在传统做法里运维人员常常要手动申请证书、把 PEM 文件塞进Secret、到期前再手工续一次忘了就出事。cert-manager 的核心价值是把这条链路彻底声明化、自动化过期前自动续签控制器持续观察每个证书根据duration和renewBefore在到期前主动触发重新签发而不是等它真的失效。来源可插拔同一个Certificate资源背后可以指向公网的 ACME 颁发机构也可以指向企业内部的 CA、Vault 或 Venafi业务侧不需要改配置。与集群资源联动能自动为 Ingress、Gateway API 的Gateway等流量入口生成证书让「域名 → 证书」的对应关系跟着资源走。简单说cert-manager 把「证书生命周期」从一个靠人记日期的脏活变成了一个控制器持续对账reconcile的声明式过程。它是 CNCF 项目采用 Apache-2.0 许可社区活跃、长期维护。快速理解 cert-manager 的工作原理cert-manager 的本质是一组 Kubernetes 控制器你提交声明式的资源对象它负责让集群的真实状态「追平」你的声明。要理解它抓住三类核心资源就够了。三类核心资源Certificate、Issuer 与其余 CRDCertificate描述「我想要一张覆盖哪些域名、有效期多长、私钥用什么算法」的证书。证书和私钥会被写进一个指定名字的Secret并在到期前自动更新。Issuer/ClusterIssuer描述「证书从哪里来」。Issuer是命名空间级别的ClusterIssuer是跨命名空间的。它承载了 ACME 账号、CA 凭据、Vault 路径等签发细节。其余 CRDOrder、ChallengeACME 挑战流程、CertificateRequest更底层的签发请求等是控制器与签发源之间协作的中间产物用户通常无需直接关心。这些资源的 API 定义可以在仓库的 deploy/crds/ 目录找到类型声明见 internal/apis/。从证书请求到自动续签的闭环控制器的工作可以拆成一条清晰的流水线观测watch 集群里的Certificate算出它的续签时间点renewalTime。请求临近续签时向对应Issuer发起一次签发请求内部会生成CertificateRequest。挑战与签发以 ACME 为例完成 HTTP-01 或 DNS-01 挑战以证明域名归属然后由颁发机构签发。落盘把新的证书和私钥写回Secret并更新Certificate的状态Ready等条件。循环回到第 1 步持续对账直到下一个续签点。整个过程由控制器、准入 Webhook校验资源合法性、cainjector把集群 CA 证书注入到需要它的资源里等组件协作完成源码入口在 cmd/controller/ 与 cmd/cainjector/。如何选择合适的证书签发来源cert-manager 的设计里「从哪里拿证书」被抽象成可注册的 Issuer。仓库内置了几类源码见 pkg/issuer/acme、ca、selfsigned、vault、venafi。选哪个取决于你的域名归属和网络环境。ACME 与 Lets Encrypt免费的公网证书对接任意符合 RFC 8555 的 ACME 服务器最常用的就是 Lets Encrypt。你在Issuer里指定 ACME 的server、email和solvers它就能自动注册账号、完成挑战、持续续签。HTTP-01适合普通域名控制器会动态创建 Ingress或 Gateway API 的HTTPRoute把验证请求引到专门的 solver Pod。DNS-01适合通配符域名。内置了 AWS Route53、Google Cloud DNS、Cloudflare、Azure DNS、DigitalOcean、Akamai、ACME-DNS、RFC 2136还支持自定义 webhook选择见 pkg/issuer/acme/dns/。企业内部 CA、Vault 与 Venafi如果证书应该由内部体系签发cert-manager 同样支持ca指向集群内的一个 CASecret做本地签发私钥由 cert-manager 管理。selfsigned自签名适合测试或内部不受外部信任的场景。vault/venafi对接 HashiCorp Vault 或 Venafi TPP / TLS Protect Cloud 等企业级证书系统。关键能力一览下面是 cert-manager 在「把证书管好」这件事上最值得了解的几个能力点。ACME DNS-01 与 HTTP-01 两种验证路径ACME 的核心是「证明你拥有这个域名」。cert-manager 把两种主流验证方式都做成了声明式配置HTTP-01 走入口流量验证DNS-01 直接在权威 DNS 写入 TXT 记录。你可以用selector按域名、按标签为不同域名指定不同的 solver让一个Issuer灵活覆盖多个 DNS 区。Ingress 与 Gateway API 的自动接管除了手动写Certificatecert-manager 的「shim」还能自动为Ingress和 Gateway API 的Gateway派生证书域名跟随入口资源变化。对 Gateway API它甚至会从关联的路由资源里推断 TLS 主机名减少重复配置相关源码在 pkg/controller/certificate-shim/。自动续签、续签窗口与过期前刷新续签默认按renewBefore提前触发。项目还在演进更细的续签控制支持定义允许续签的时间窗口cron 时长 时区、可选择性禁用自动续签以及通过 ACME ARIRFC 9773让颁发机构建议续签时间兼顾「CA 的建议」和「运维的窗口」。相关设计见 design/20250920.certificate-renewal-control.md 与 design/20260304.certificate-acme-ari.md。私钥轮换、算法与输出格式Certificate支持 RSA、ECDSA、Ed25519 等私钥算法PKCS1 / PKCS8 两种编码并支持把私钥轮换策略默认设为「每次续签都换私钥」避免密钥长期不变带来的风险。此外可输出多种附加格式方便对接不同中间件。集群内 CA 注入cainjector很多内部服务需要把集群 CA 的公钥注入到 ConfigMap、CRD 等对象里。cainjector组件负责这件事源码见 pkg/controller/cainjector/让「谁需要信任哪个 CA」也能声明化管理。典型使用场景与实践为 Ingress / Gateway 自动配 HTTPS最常见也最受欢迎的用法。声明一个 ACMEClusterIssuer再让入口资源引用证书域名加进来就自动出证书、到期自动续。通配符与多域名用 DNS-01 配一个*.example.com的证书覆盖所有子域名省去逐个申请。内部服务间 mTLS用ca或selfsigned在集群内本地签发配合cainjector把 CA 注入到需要的客户端打通服务网格或内部 RPC 的互信。对接企业证书体系已有 Vault 或 Venafi 的团队用对应Issuer把 cert-manager 接到现有签发流程统一用 K8s 资源管理。续签窗口治理生产环境把续签限制在低峰期避免在业务高峰集中触发 ACME 请求缓解限流和网络压力。安装部署与日常维护用 Helm 快速部署cert-manager 官方维护了一个 Helm chart见 deploy/charts/cert-manager/也是推荐的部署方式。它会带上 CRD、控制器、Webhook、cainjector等所需的全部组件并要求 Kubernetes ≥ 1.22。基本流程是helm repo add后helm install再按需覆盖values.yaml默认值在 deploy/charts/cert-manager/values.yaml。完整的多种安装方法都在官方文档中给出。文档、社区与提问渠道官方文档入门指南、ACME 配置、Ingress 快速上手等都在 cert-manager 官网仓库内 docs/ 指向同一处。社区项目有公开的 Google Group 用于公告和开发协调也有面向 Kubernetes 社区的 Slack 频道是提问最快的地方定期还有公开的公开会议任何人都可以旁听。参与贡献开发环境支持 Linux 与 macOSmacOS 有额外依赖要求贡献指南和编码规范见 CONTRIBUTING.md。如需本地拉取源码参与开发可使用镜像仓库地址https://gitcode.com/gh_mirrors/ce/cert-manager进行 clone。版本更新、变更日志与安全报告发布节奏与变更日志每次发布都附带 changelog发布说明也在官网发布。产物包括各组件的容器镜像、Helm chart 与二进制。安全报告安全是项目第一优先级发现漏洞请按 SECURITY.md 的指引提交。特性开关feature gate部分新能力如 Gateway API、ARI、私钥轮换默认策略等通过 feature gate 灰度默认状态可在 internal/controller/feature/features.go 查看便于按版本逐步启用。总的来说cert-manager 用「声明式资源 控制器对账」这套 Kubernetes 原生的思路把证书的申请、续签、分发和注入都自动化了。无论你要的是 Lets Encrypt 的免费公网证书还是企业内部 CA 的统一管理它都能用同一套资源模型串起来让证书始终处于有效状态把最容易被遗忘的「换证书」从运维日常里彻底移除。【免费下载链接】cert-managerAutomatically provision and manage TLS certificates in Kubernetes项目地址: https://gitcode.com/gh_mirrors/ce/cert-manager创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考