ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

LeaderWorkerSet 证书管理指南:内置证书与 cert-manager 两种方案对比选择

LeaderWorkerSet 证书管理指南:内置证书与 cert-manager 两种方案对比选择 LeaderWorkerSet 证书管理指南内置证书与 cert-manager 两种方案对比选择【免费下载链接】lwsLeaderWorkerSet: An API for deploying a group of pods as a unit of replication项目地址: https://gitcode.com/gh_mirrors/lws2/lwsLeaderWorkerSet 证书管理是部署 LeaderWorkerSetLWS时绕不开的一环LWS 控制器自带的 Admission Webhook 必须通过 TLS 与 kube-apiserver 安全通信而证书的签发、注入与轮换正是最容易踩坑的地方。本文面向新手与普通使用者用最通俗的方式对比 LeaderWorkerSet 证书管理的两种主流方案——默认开箱即用的内置证书与集群统一管理的cert-manager帮你快速理解原理并做出正确选择。为什么 LeaderWorkerSet 需要证书管理在理解两种方案之前先搞清 LWS 为什么需要证书。LeaderWorkerSet 部署时会自动注册两个准入控制器 Webhook校验型 WebhookValidatingWebhookConfiguration变更型 WebhookMutatingWebhookConfiguration它们以 HTTPS 方式与 kube-apiserver 通信因此必须有服务端证书tls.crt / tls.key同时 kube-apiserver 还要信任签发它的CA 证书。证书不是一劳永逸的它有有效期过期后 Webhook 会静默失效导致 LeaderWorkerSet 资源无法正常创建或更新。所以一套可靠的证书管理方案至少要解决三件事自动签发、自动注入、自动轮换。上图是 LWS 的整体架构一个 LeaderWorkerSet 由 Leader StatefulSet 与多个 Worker StatefulSet 组成每组 Pod 作为一个复制单元统一管理而 Webhook 则是守护这一切的安检门。方案一LWS 内置证书管理开箱即用的默认选择如果你不想关心证书细节内置方案是最省心的起点——它是 LWS 的默认开启配置。内置证书的工作原理LWS 在pkg/cert/cert.go中通过 cert-controller 的 CertRotator 完成整套证书流程自动生成一个自签名的根 CA名称固定为lws-ca为 Webhook 服务签发服务端证书域名格式为service.namespace.svc将 CA 与证书写入 Secret默认名为lws-webhook-server-cert把证书文件挂载到 Webhook 服务目录默认/tmp/k8s-webhook-server/serving-certs自动把 CA 注入两个 Webhook 配置并在证书即将过期时自动轮换。整个过程无需人工干预控制器启动时先等待证书就绪再启动业务控制器从根本上避免证书还没好、Webhook 先挂了的竞态问题。内置证书管理的配置参数内置方案的开关与细节都在api/config/v1alpha1/configuration_types.go中定义的internalCertManagement字段里默认值见api/config/v1alpha1/defaults.go配置项作用默认值internalCertManagement.enable是否启用内置证书管理truewebhookServiceName证书 DNS 对应的 Service 名lws-webhook-servicewebhookSecretName存放证书的 Secret 名lws-webhook-server-cert 对大多数快速部署、测试或中小规模场景保持默认配置即可无需任何额外操作。方案二cert-manager 统一管理企业级证书治理如果你的集群已经全面采用 cert-manager 做证书治理比如对接 Vault、Lets Encrypt 等外部 CA或出于合规要求希望所有证书纳入统一管理那么可以关掉内置方案改用 cert-manager 为 LWS Webhook 签发证书。前提先关闭 LWS 内置证书官方文档site/content/en/docs/manage/cert_manager.md明确指出使用 cert-manager 前必须关闭内置证书管理否则两套系统会互相冲突。具体做法是把配置中的internalCertManagement.enable设为false。Kustomize 安装方式的切换步骤使用 Kustomize 部署时证书方案的切换点在config/default/kustomization.yaml在资源配置列表中注释掉../internalcert一行取消注释../certmanager一行按文件中的注释提示取消CERTMANAGER相关 patch、replacement 段的注释它们负责把 cert-manager 的 CA 注入到 Webhook 与 CRD 中执行kubectl apply --server-side -k config/default应用配置。cert-manager 侧的资源定义在config/certmanager/certificate.yaml中核心是两个对象一个自签名的Issuerselfsigned-issuer和一份Certificateserving-cert证书会写入webhook-server-cert这个 Secret 中。Helm 安装方式的最快配置方法如果使用 Helm Chart 安装切换更加简单在配置中关闭internalCertManager在charts/lws/values.yaml中把enableCertManager设为true即可。启用后Deployment 模板charts/lws/templates/manager/deployment.yaml会自动挂载 cert-manager 签发的证书目录并把指标端点也纳入 TLS 保护。内置证书 vs cert-manager一张表看懂差异对比维度LWS 内置证书cert-manager默认状态默认开启零配置需手动启用证书签发方LWS 自签名 CAlws-cacert-manager Issuer证书存储 Secretlws-webhook-server-certwebhook-server-cert证书轮换自动轮换自动轮换CA 注入 Webhook自动完成通过inject-ca-from注解自动完成配置复杂度⭐ 极低⭐⭐⭐ 需安装并配置 cert-manager外部 CA 集成Vault、Lets Encrypt❌ 不支持✅ 支持适合场景快速上手、测试、中小规模企业统一证书治理、合规审计要求如何选择适合你的 LeaderWorkerSet 证书方案给一个简单直接的选型建议想要快速跑通 LWS直接用默认的内置证书五分钟内完成部署后续可平滑迁移集群已有 cert-manager 规范优先统一到 cert-manager避免一套集群、两套证书体系的割裂有外部 CA / 合规要求必须选 cert-manager内置方案无法对接外部签发机构需要精细控制 TLS 参数无论哪种方案都可在配置的tls字段中指定minVersion如VersionTLS13与cipherSuites解析逻辑见pkg/config/tls.go。证书相关源码与配置速查内置证书签发与轮换实现pkg/cert/cert.go证书配置类型定义api/config/v1alpha1/configuration_types.go证书相关默认值api/config/v1alpha1/defaults.goTLS 参数解析与校验pkg/config/tls.gocert-manager 资源清单config/certmanager/certificate.yamlKustomize 方案切换入口config/default/kustomization.yamlHelm values 开关charts/lws/values.yaml官方证书管理文档site/content/en/docs/manage/cert_manager.md最后总结LeaderWorkerSet 证书管理其实并不复杂——追求省心就选默认内置证书追求统一治理就切 cert-manager。只要记住启用 cert-manager 前必须先关闭内置证书管理这一条铁律再配合本文的切换步骤你就能轻松搞定 LWS 的证书配置让 Webhook 稳定可靠地守护你的 LeaderWorkerSet 集群。【免费下载链接】lwsLeaderWorkerSet: An API for deploying a group of pods as a unit of replication项目地址: https://gitcode.com/gh_mirrors/lws2/lws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表