TDH Manager 9.4 之前的版本环境下TOS CA证书续签(Manager和TOS-Master不在同一个节点 )

  其他常见问题
内容纲要

概要描述

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证书)

详细说明

  1. 获取更新脚本
  2. 修改配置文件
  3. 更新证书
  4. 手动修改tos的metainfo文件内容
  5. 检查

检查方式

  1. 检查检查当前集群TOS证书过期时间

登录集群任意节点,执行下面的命令

openssl x509 -text -in /srv/kubernetes/ca.pem |grep Not

file

如果显示是 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"

file

2. 填写集群节点信息

bash gen-hosts.sh

file

执行此脚本会在 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

file

注意:
如果使用非root用户执行脚本,在执行tos续签脚本前,需要给该用户在对应节点上添加sudo权限,比如:
test-name245 ALL=(ALL) NOPASSWD: ALL

3. 证书更新

执行脚本

tos-master 节点 执行 ca-renewal-manager.sh 脚本进行证书更新

$ bash ca-renewal-manager.sh

脚本执行成功后会有如下显示,否则需根据提示查看脚本执行失败原因。

file

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文件内容

  1. 确认tos 版本
    docker images |grep etcd

file

  1. 找到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
  1. 修改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
        

file

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 年过期,则表示续签成功。

file

1、检查 bootstrap

head /srv/kubernetes/bootstrap.kubeconfig

输出的 certificate-authority-data 最后几位是 :RU5EIENFUlRJRklDQVRFLS0tLS0K 代表续签完成。

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。