概要描述
TOS CA 证书会在2025年12月7号过期,本文提供一种通过脚本续签证书的方式。
本文只适用于 TDH 集群 Manager5.x 版本
详细说明
- 获取更新脚本
- 修改配置文件
- 更新证书
- 手动修改tos的metainfo文件内容
- 检查
检查方式
- 检查检查当前集群TOS证书过期时间
登录集群任意节点,执行下面的命令
openssl x509 -text -in /srv/kubernetes/ca.crt |grep Not

如果显示是 2025/12/7 号过期,则表示受影响。
请按照如下连接的方式完成证书续签。
1. 获取更新脚本并解压
点击下载X86架构CA证书更新工具 ca-renewal-v11.tar.gz
点击下载ARM64架构CA证书更新工具 ca-renewal-v11-arm64.tar.gz
上传到集群的 Manager master 节点上,解压安装包。如果开启了高可用,则在既有 TOS Master 角色,也有 Manager 角色的节点后台。
注意:如果 Manager 的 master 节点不是 Tos Master 节点,需要联系售后技术支持处理。
# 解压
tar -zxvf ca-renewal-v11.tar.gz
cd ca-renewal/
# 安装 sshpass
rpm -ivh sshpass-1.06-2.el7.x86_64.rpm
2. 填写集群节点信息
bash gen-hosts-tdh5.sh

执行此脚本会在 ca-renewal 目录下生成 hosts.txt,里面仅包含集群节点的 hostname、ip。
hosts.txt文件不能有多余的空行
执行上述脚本后,需要手动检查hosts.txt;
- 第三列加上 master 或者 worker;
- 第四列补充节点的ssh端口;
- 第五列对应ssh的用户名;
- 第六列对应ssh用户的密码;
host.txt 里面为集群所有节点的信息,需要将内容更改为安装集群的节点 hostname、ip、角色、ssh用户名、ssh密码,中间以空格隔开。
master 指 tos master 角色的
worker 指集群中不是 tos master 的节点
$ cat hosts.txt
gts-131040 172.18.131.40 master 22 root 123456
gts-131041 172.18.131.41 master 22 root 123456
gts-131042 172.18.131.42 master 22 root 123456

注意:
如果使用非root用户执行脚本,在执行tos续签脚本前,需要给该用户在对应节点上添加sudo权限,比如:
test-name245 ALL=(ALL) NOPASSWD: ALL
3. 证书更新
- 执行脚本,续签 CA 证书
manager(tos master)主节点 执行 ca-renewal-manager.sh 脚本进行证书更新
$ bash ca-renewal-manager5.sh
脚本执行成功后会有如下显示,否则需根据提示查看脚本执行失败原因。

完成以上步骤,就代表 TOS ca 证书续签完成了。
后续步骤是修改 TOS metainfo,为扩容新节点时生成新证书。
4.手动修改tos的metainfo文件内容
- 确认tos 版本
docker images |grep etcd

- 找到tos的metainfo文件:
比如上图中,对应的 tos 版本为 transwarp-5.2.2-final
2、拷贝更新过的ca.crt 及 kubecfg 相关文件到 第一步 metainfo 路径下的 templates 目录下:
cp /srv/kubernetes/ca.crt /var/lib/transwarp-manager/master/content/meta/services/TOS/transwarp-5.2.2-final/templates
cp /srv/kubernetes/kubecfg.* /var/lib/transwarp-manager/master/content/meta/services/TOS/transwarp-5.2.2-final/templates
cp /srv/kubernetes/server.* /var/lib/transwarp-manager/master/content/meta/services/TOS/transwarp-5.2.2-final/templates

- 修改metainfo.yaml
PS:一定要注意yaml 文件的格式和内容,复制粘贴修改 metainfo 时,一定要确认修改后的内容和缩进必须符合 yaml 要求。
如果修改后出现,未使用 TOS,需要安装一个TOS服务,则需要检查一下 metainfo.yaml 内容和格式。
vi metainfo.yaml
找到 TOS_SLAVE 下的 type: Scaleout,在最后面加上以下内容,注意跟其他的directive并列,注意缩进保持一致
3、修改metainfo.yaml,找到 TOS_SLAVE 下的 type: Scaleout,在最后面加上以下内容,注意跟其他的directive并列,注意缩进保持一致
判断扩容节点是什么操作系统。
如果在这个列表里:["BCLINUX4EULER21", "EULER20", "EULER22", "KYLIN10", "NEOKYLIN7", "RHEL7", "RHEL8", "ROCKY8", "ROCKY9", "UOS1050A", "UOS1050E", "UOS1060E"],用以下的脚本:
- directive: !
templateType: FreeMarker
templatePath: "ca.crt"
targetPath: "/srv/kubernetes/ca.crt"
mode: "600"
- directive: !
templateType: FreeMarker
templatePath: "kubecfg.crt"
targetPath: "/srv/kubernetes/kubecfg.crt"
mode: "600"
- directive: !
templateType: FreeMarker
templatePath: "kubecfg.key"
targetPath: "/srv/kubernetes/kubecfg.key"
mode: "600"
- directive: !
templateType: FreeMarker
templatePath: "kubecfg.pem"
targetPath: "/srv/kubernetes/kubecfg.pem"
mode: "600"
- directive: !
templateType: FreeMarker
templatePath: "server.pem"
targetPath: "/srv/kubernetes/server.pem"
mode: "600"
- directive: !
templateType: FreeMarker
templatePath: "kubeconfig"
targetPath: "/srv/kubernetes/kubeconfig"
mode: "600"
- directive: !
script: |
systemctl daemon-reload && systemctl restart haproxy && systemctl restart kubelet
- directive: !
script: |
(/bin/cp -f /srv/kubernetes/ca.crt /etc/pki/ca-trust/source/anchors/) && update-ca-trust

如果是其他操作系统,将以下脚本最后一行中的 /etc/pki/ca-trust/source/anchors/ 替换成
/usr/local/share/ca-certificates/

3、最后执行:/etc/init.d/transwarp-manager restart 生效;
6. 检查
0、检查当前集群TOS证书过期时间,登录集群任意节点,执行下面的命令
openssl x509 -text -in /srv/kubernetes/ca.crt |grep Not
如果显示是 2120 年过期,则表示续签成功。

附录:使用其他方式续签
证书续签,也可以通过升级 Manager 解决证书过期的问题。