目录
1. 背景
1.1 背景
1.2 影响版本
2. 续签 tranwarp-warpdrive-ca 证书
2.1 备份节点上原有证书目录
2.2 续签 transwarp-warpdrive-ca.pem
2.4 拷贝新的 ca 证书
3. 续签其他证书
3.1 依赖 transwarp-warpdrive-ca.pem 相关证书
3.1.1 transwarp-warpdrive 证书
4. 重启服务
4.1 重启 warpdrive 服务
4.2 重启 kubelet 服务
4.3 重启 controller-manager
1. 背景
transwarp-warpdrive 证书每个节点只需要填写自己节点的 hostname,所以集群有多少节点,transwarp-warpdrive 证书就需要生成多少次。
1.1 背景
tos 1.9.x 2.0.x 2.1.x(2.1.x 版本 2020/12 之后部署的在安装包里面已经更新,不需要再次更新)环境上 ca 系统证书都即将到期,etcd-ca.pem 及 transwarp-warpdrive-ca.pem 将于 2023 年到期,ca.pem 将于 2025 年到期,可以进入到 /srv/kubernetes/ (tdc环境)目录下,使用下面命令查看过期时间:
# openssl x509 -text -in ca.pem | grep "Not"
Not Before: Dec 10 05:07:35 2015 GMT
Not After : Dec 7 05:07:35 2025 GMT
# openssl x509 -text -in etcd-ca.pem | grep "Not"
Not Before: Mar 11 10:30:00 2018 GMT
Not After : Mar 10 10:30:00 2023 GMT
# openssl x509 -text -in transwarp-warpdrive-ca.pem | grep "Not"
Not Before: Aug 14 09:05:00 2018 GMT
Not After : Aug 13 09:05:00 2023 GMT
另外依赖于上述 ca 证书的其他证书也都在对应时间到期,针对这种情况,本文主要讲解 etcd-ca 及依赖证书的续期。其他ca证书的续签后续会更新,具体的操作步骤如下:
续签CA证书 续签CA证书签发的所有证书 更新secret token 保证CA续签完成后,业务重启正常运行
1.2 影响版本
TDC:
TDH 没有使用 warpdrive 组件,不受影响
2. 续签 tranwarp-warpdrive-ca 证书
续签 ca 证书需要对应的 ca-key 文件,默认环境部署完成 etcd-ca.key 及 transwarp-warpdrive-ca-key.pem 会不存在,需要从安装包拷贝 gencerts 目录,没有安装包的可以从本文最后下载,上传到第一台 master 节点上,后续续签及生成证书的操作默认都在第一台 master 节点。
gencerts 目录见,直接解压即可(tar -zxvf gencerts.tar.gz):gencerts.tar.gz
arm64 环境 安装包见:ftp://tosftp.transwarp.io/pub/tools/arm64/gencerts-arm64.tar.gz
2.1 备份节点上原有证书目录
集群的所有节点都可以备份下证书目录
# cp -r /srv/kubernetes /srv/kubernetes-20221116
2.2 续签 transwarp-warpdrive-ca.pem
# cd market-web-installer/ansible-deploy/util/gencerts
# openssl x509 -in transwarp-warpdrive-ca.pem -days 36500 -out transwarp-warpdrive-ca-new.pem -signkey transwarp-warpdrive-ca-key.pem ## 依赖于原 transwarp-warpdrive-ca.pem 和 transwarp-warpdrive-ca-key.pem 生成 transwarp-warpdrive-ca-new.pem
Getting Private key
# openssl x509 -text -in transwarp-warpdrive-ca-new.pem | grep "Not" ## 查看新 transwarp-warpdrive-ca 证书过期时间
Not Before: Nov 16 07:29:44 2022 GMT
Not After : Oct 23 07:29:44 2122 GMT
# openssl verify -CAfile transwarp-warpdrive-ca-new.pem /srv/kubernetes/transwarp-warpdrive-crt.pem ## 使用任一个依赖于 transwarp-warpdrive-ca.pem 生成的证书进行证书比对,这边使用的是 transwarp-warpdrive-crt.pem
/srv/kubernetes/transwarp-warpdrive-crt
.pem: OK
到此 transwarp-warpdrive-ca.pem 证书续期完毕,此时依赖于 transwarp-warpdrive-ca.pem 的其他证书(transwarp-warpdrive-crt.pem)的有效期即为使用 openssl 命令查看的有效期。
2.4 拷贝新的 ca 证书
新生成的 transwarp-warpdrive-ca.pem 需要拷贝到集群所有节点的 /srv/kubernetes/ 目录下。
# cd market-web-installer/ansible-deploy/util/gencerts
# cp transwarp-warpdrive-ca-new.pem /srv/kubernetes/transwarp-warpdrive-ca.pem
# cd /srv/kubernetes ## 拷贝 transwarp-warpdrive-ca.pem 到集群所有节点的 /srv/kubernetes/ 目录下
# scp transwarp-warpdrive-ca.pem tos156:/srv/kubernetes/
# scp transwarp-warpdrive-ca.pem tos157:/srv/kubernetes/
3. 续签其他证书
续签证书也依赖于 gencerts 目录,下面有相关的 config 文件及 cfssl 工具,安装包下有这个目录,没有安装包的可以从本文最后下载,上传到第一台 master 节点上,后续续签及生成证书的操作默认都在第一台 master 节点。
3.1 依赖 transwarp-warpdrive-ca.pem 相关证书
目前只有 transwarp-warpdrive 证书依赖于 transwarp-warpdrive-ca.pem,所以 transwarp-warpdrive-ca.pem 证书更新,我们只需重新生成 transwarp-warpdrive 相关证书就可以了。在生成 transwarp-warpdrive 证书之前,首先确认下 config.json 文件,expiry 为 876000h,表示过期时间为 100 年,不是 876000h 记得修改下。
3.1.1 transwarp-warpdrive 证书
transwarp-warpdrive 证书每个节点只需要填写自己节点的 hostname,所以集群有多少节点,transwarp-warpdrive 证书就需要生成多少次。
# cd market-web-installer/ansible-deploy/util/gencerts
# ./cfssl gencert -ca=/srv/kubernetes/transwarp-warpdrive-ca.pem -ca-key=transwarp-warpdrive-ca-key.pem -config=config.json -profile=warpdrive -hostname=
127.0
.
0.1
,
0.0
.
0.0
,tos155 transwarp-warpdrive-csr.json | ./cfssljson -bare transwarp-warpdrive ## hostname 根据情况自行修改,生成 transwarp-warpdrive.pem transwarp-warpdrive-key.pem transwarp-warpdrive.csr
# mv transwarp-warpdrive.pem transwarp-warpdrive-crt.pem
# openssl x509 -text -in transwarp-warpdrive-crt.pem | grep Not
Not Before: Feb
8
02
:
54
:
00
2023
GMT
Not After : Feb
5
02
:
54
:
00
2133
GMT
# cp transwarp-warpdrive-crt.pem transwarp-warpdrive-key.pem /srv/kubernetes/ ## tos155节点是本机,拷贝新生成的证书覆盖掉原来旧的
# ./cfssl gencert -ca=/srv/kubernetes/transwarp-warpdrive-ca.pem -ca-key=transwarp-warpdrive-ca-key.pem -config=config.json -profile=warpdrive -hostname=
127.0
.
0.1
,
0.0
.
0.0
,tos156 transwarp-warpdrive-csr.json | ./cfssljson -bare transwarp-warpdrive ## hostname 根据情况自行修改,生成 transwarp-warpdrive.pem transwarp-warpdrive-key.pem transwarp-warpdrive.csr
# mv transwarp-warpdrive.pem transwarp-warpdrive-crt.pem
# scp transwarp-warpdrive-crt.pem transwarp-warpdrive-key.pem tos156:/srv/kubernetes/ #在第一个节点生成相关证书,然后拷贝到其他节点
# ./cfssl gencert -ca=/srv/kubernetes/transwarp-warpdrive-ca.pem -ca-key=transwarp-warpdrive-ca-key.pem -config=config.json -profile=warpdrive -hostname=
127.0
.
0.1
,
0.0
.
0.0
,tos157 transwarp-warpdrive-csr.json | ./cfssljson -bare transwarp-warpdrive ## hostname 根据情况自行修改,生成 transwarp-warpdrive.pem transwarp-warpdrive-key.pem transwarp-warpdrive.csr
# mv transwarp-warpdrive.pem transwarp-warpdrive-crt.pem
# scp transwarp-warpdrive-crt.pem transwarp-warpdrive-key.pem tos157:/srv/kubernetes/ #在第一个节点生成相关证书,然后拷贝到其他节点
4. 重启服务
4.1 重启 warpdrive 服务
所有节点都要操作
# systemctl restart warpdrive
4.2 重启 kubelet 服务
# systemctl restart kubelet
4.3 重启 controller-manager
3 台 master 节点依次操作
# docker ps | grep controller-manager
c0699744f40b a216e801e5bd
"sh -c 'kube-control…"
27
hours ago Up
27
hours k8s_controller-manager_k8s-controller-manager-tos155_kube-system_625d6c6e994d5db32e10e7d092b3fa22_0
58a25697bddf google_containers/pause:
3.0
"/pause"
27
hours ago Up
27
hours k8s_POD_k8s-controller-manager-tos155_kube-system_625d6c6e994d5db32e10e7d092b3fa22_0
# cd /opt/kubernetes/manifests-multi/
# mv kube-controller-manager.manifest ../
# docker ps | grep controller-manager ## 确认container 不存在后,等待30s,继续后面步骤
# mv ../kube-controller-manager.manifest .
# docker ps | grep controller-manager ## 确保 container 正常运行