概要描述
TOS CA 证书会在2025年12月7号过期,本文提供一种续签的方式。
主要影响tos 2.x的产品,包括:
TDH 5.0 ~ 9.4 (包含Manager ~ 9.4.0.2)
TDC < 2.5.0 (不包含250)
TDC 5.0系列 纳管了受影响版本的 TDH (如TDC5.0.3纳管了TDH6.2.2,则需要更新CA证书)
详细说明
- 获取更新脚本
- 修改配置文件
- 更新证书
- 手动修改tos的metainfo文件内容
- 检查
检查方式
- 检查检查当前集群TOS证书过期时间
登录集群任意节点,执行下面的命令
openssl x509 -text -in /srv/kubernetes/ca.pem |grep Not

如果显示是 2025/12/7 号过期,则表示受影响。
请按照如下连接的方式完成证书续签。
1. 获取更新脚本并解压
点击链接,根据 TOS Master 服务器架构,下载对应的CA证书更新工具 ca-renewal-v13.tar.gz
上传到集群的 TOS master 节点上,解压安装包。
# 解压
tar -zxvf ca-renewal-v13.tar.gz
cd ca-renewal/
# 安装 sshpass
rpm -ivh sshpass-1.06-2.el7.x86_64.rpm
修改 ca-renewal-manager.sh 脚本,注释掉最后6行。
$ vi ca-renewal-manager.sh
## 注释掉或者删除下面6行
# echo "INFO: Start Update Manager db with new ca"
# bash $basedir/09-update-manager-db.sh || exit 1
# echo "INFO: Update Manager db with new ca Succeeded"
# echo "INFO: Start Update Manager metainfo with new ca"
# bash $basedir/09-update-manager-metainfo.sh || exit 1
# echo "INFO: Update Manager metainfo with new ca Succeeded"

2. 填写集群节点信息
bash gen-hosts.sh

执行此脚本会在 ca-renewal 目录下生成 hosts.txt,里面仅包含集群节点的 hostname、ip 及 tos角色。
hosts.txt文件不能有多余的空行
执行上述脚本后,需要手动检查hosts.txt,在第四列补充节点的ssh端口,第5列对应ssh的用户名,第6列对应密码
host.txt 里面为集群所有节点的信息,需要将内容更改为安装集群的节点 hostname、ip、角色、ssh用户名、ssh密码,中间以空格隔开。
master 指 tos master 角色的
worker 指集群中不是 tos master 的节点
$ cat hosts.txt
gts-131086 172.18.131.86 master 22 root pwd123456
gts-131087 172.18.131.87 master 22 root pwd123456
gts-131088 172.18.131.88 master 22 root pwd123456
gts-131089 172.18.131.89 worker 22 root pwd123456
gts-131090 172.18.131.90 worker 22 root pwd123456

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

4. 更新至 Manager 数据库
最后,拷贝 整个 ca-renewal 目录到 Manager 节点,然后执行这两个脚本即可。
$ bash 09-update-manager-db.sh
$ bash 09-update-manager-metainfo.sh
若 Manager 开启了高可用,可以将 ca-renewal 目录拷贝到 2 个 Manager 节点,先后执行这个脚本。
完成以上步骤,就代表 TOS CA 证书续签完成了。
后续步骤是修改 TOS metainfo,为扩容新节点时生成新证书。
5.手动修改tos的metainfo文件内容
- 确认tos 版本
docker images |grep etcd

- 找到tos的metainfo文件:
比如tos-2.1.5版本。
cd /var/lib/transwarp-manager/master/content/meta/services/TOS/tos-2.1.5
# 或者
cd /var/lib/transwarp-manager/master/content/meta/services_imported/TOS/tos-2.1.5
- 修改metainfo.yaml
vi metainfo.yaml
找到 TOS_SLAVE 下的 type: Scaleout,在最后面加上以下内容,注意跟其他的directive并列,注意缩进保持一致
1)如果Manager版本在8.0及以后,直接使用下面的metainfo
- directive: !
script: |
<#assign distros = ["BCLINUX4EULER21", "EULER20", "EULER22", "KYLIN10", "NEOKYLIN7", "RHEL7", "RHEL8", "ROCKY8", "ROCKY9", "UOS1050A", "UOS1050E", "UOS1060E"]>
<#if distros?seq_contains(.data_model['node.distro'])>
(/bin/cp -f /srv/kubernetes/ca.pem /etc/pki/ca-trust/source/anchors/) && update-ca-trust
<#else>
(/bin/cp -f /srv/kubernetes/ca.pem /usr/local/share/ca-certificates/) && update-ca-certificates
#if>

2)如果是8.0以前的版本,判断扩容节点是什么操作系统
uname -a
cat /etc/os-release
如果在这个列表里:["BCLINUX4EULER21", "EULER20", "EULER22", "KYLIN10", "NEOKYLIN7", "RHEL7", "RHEL8", "ROCKY8", "ROCKY9", "UOS1050A", "UOS1050E", "UOS1060E"],用以下的脚本
- directive: !
script: |
(/bin/cp -f /srv/kubernetes/ca.pem /etc/pki/ca-trust/source/anchors/) && update-ca-trust
如果不在,用以下脚本
- directive: !
script: |
(/bin/cp -f /srv/kubernetes/ca.pem /usr/local/share/ca-certificates/) && update-ca-certificates
如果集群是 Manager9.3.3.0 + tos330,组需要更新 bootstrap.kubeconfig 文件,并更新 TOS metainfo
bash 13-update-bootstrap.sh
bash 09-update-manager-metainfo.sh
3、执行:systemctl restart transwarp-manager生效;
如果扩容的节点是混部的,那么根据节点不同的操作系统,在执行扩容角色,tos slave启动失败后,手动将主节点下的/srv/kubernetes/ca.pem拷贝到对应目录,执行指令,后重启docker
6. 检查
0、检查当前集群TOS证书过期时间,登录集群任意节点,执行下面的命令
openssl x509 -text -in /srv/kubernetes/ca.pem |grep Not
如果显示是 2120 年过期,则表示续签成功。

1、检查 bootstrap
head /srv/kubernetes/bootstrap.kubeconfig
输出的 certificate-authority-data 最后几位是 :RU5EIENFUlRJRklDQVRFLS0tLS0K 代表续签完成。
