RKE/Rancher自定义证书续期方法及私有CA证书续期流程咨询
RKE/Rancher自定义证书续期操作指南
一、自定义证书正确续期操作步骤
RKE集群侧自定义证书续期
- 提前准备好续期后的全套证书文件:包括CA根证书+中间证书链(如果CA本身未到期可直接复用原CA文件,CA续期则需提供完整的新信任链)、etcd对等/服务端证书、kube-apiserver/kube-controller-manager/kube-scheduler/kubelet/kube-proxy对应的服务端证书与私钥,逐份校验证书SAN列表,确保覆盖所有集群节点IP、主机名、内网域名、负载均衡VIP/域名等所有访问入口,确认证书有效期、密钥用法符合Kubernetes组件要求。
- 把校验完成的证书文件按RKE固定命名规则,放到
cluster.yml同级目录下的cluster_certs文件夹中,文件名必须严格匹配:比如CA证书命名为kube-ca.pem、etcd服务端证书为kube-etcd.pem、etcd对等证书为kube-etcd-peer.pem、apiserver证书为kube-apiserver.pem、对应私钥统一加-key后缀(比如kube-apiserver-key.pem),文件名错误会导致RKE识别不到自定义证书,自动生成自签名证书覆盖。 - 逐台登录集群节点,停掉所有运行中的Kubernetes组件容器,避免旧证书被进程缓存导致更新不生效,Docker运行时环境可直接执行
docker ps | grep kube_ | awk '{print $1}' | xargs docker stop批量停,containerd运行时替换为对应crictl命令即可。 - 回到
cluster.yml所在的运维节点,执行rke up --update-only,该命令不会升级集群版本,只会把你提前放好的自定义证书分发到所有节点的/etc/kubernetes/ssl目录,自动拉起所有控制平面、数据平面组件。 - 验证操作结果:等命令执行完成后,首先通过
kubectl get nodes确认所有节点状态为Ready,再用openssl s_client -connect <APISERVER负载地址>:6443 -showcerts < /dev/null | openssl x509 -noout -dates -issuer -subject校验APIServer证书的有效期、签发者是否符合预期,最后抽查etcd、kubelet组件日志,确认没有x509类证书报错即可。
Rancher服务端自定义证书续期
- 高可用RKE部署的Rancher:提前准备好续期后的Rancher服务端证书、私钥、完整CA信任链,把证书内容更新到Rancher对应的Helm Values配置中,执行
helm upgrade -n cattle-system rancher rancher-stable/rancher -f your-values.yaml完成滚动更新,等待所有Rancher Pod重启完成后,访问Web UI校验证书有效期即可。 - 单节点Docker部署的Rancher:先执行
docker stop rancher && docker rm rancher删除旧容器,重新执行docker run命令启动时,通过-v参数将新的证书、私钥、CA链文件挂载到容器内/etc/rancher/ssl/对应的路径下,启动后直接访问前端页面验证证书状态。
二、私有CA签发自定义证书与RKE自生成证书的续期流程差异
两者流程完全不一致,绝对不能直接用rke cert-rotate命令处理私有CA签发的自定义证书
rke cert-rotate的设计逻辑是针对RKE自身初始化时自动生成CA、自动签发的集群证书场景:执行命令时RKE会用本地存储的内置CA重新签发全套组件证书,直接覆盖节点上现存的所有证书文件,如果你用的是私有CA签发的自定义证书,执行这个命令会直接把你的自定义证书、私有CA文件全部替换成RKE自签名的证书,直接导致集群组件证书链断裂,API调用全部失败。- 私有CA签发的自定义证书,RKE本身没有权限对接你的私有CA完成证书签发流程,所有新证书的生成、SAN校验、有效期配置都需要你在证书管理侧提前完成,续期只能走「手动替换cluster_certs目录文件 +
rke up --update-only分发」的流程,没有捷径。
踩坑提示:如果你的私有CA本身也完成了续期,新证书的信任链变更后,除了替换集群组件目录下的CA文件,还要同步更新所有运维节点、业务Pod中使用的kubeconfig文件里的
certificate-authority-data字段,替换为新CA的base64编码值,否则会出现kubectl、Pod内服务调用APIServer时提示x509: certificate signed by unknown authority的报错。
内容的提问来源于stack exchange,提问作者ITPRO85
相关产品推荐
相关产品推荐

