rancher每隔一年证书会到期,如何自动化处理证书到期的问题呢?

手工处理步骤:

cd  ..Smartbi_All/rancher_data/management-state/tls     //到证书目录
openssl x509 -enddate -noout -in localhost.crt //查看到期时间
mv localhost.crt localhost.crt_bak
mv localhost.key localhost.key_bak
mv token-node.crt token-node.crt_bak
mv token-node.key token-node.key_bak
docker restart smartbi-rancher //重启rancher容器,他会自动续签证书


使用脚本配置系统定时计划任务,让系统自动执行更新证书,在证书到期前2天处理,脚本如下:

#!/bin/bash
#create by chenzm , 2022-06-09 ,969113439@qq.com
SMARTBI_RANCHER_HOME=/data/soft/Smartbi_All
CurrentDay=`date '+%Y-%m-%d'`
SMARTBI_RANCHER_TLS_HOME=$SMARTBI_RANCHER_HOME/rancher_data/management-state/tls
CRTTIME=`openssl x509 -enddate -noout -in ${SMARTBI_RANCHER_TLS_HOME}/localhost.crt | awk -F'=' '{print$2}' | awk '{print $1,$2,$3,$4}'`
NOWTIME=`date +%F" "%T`
#将证书到期时间转换为秒
CRTTIMETOS=`date -d "${CRTTIME}" +%s`
#将NOWTIME时间也就是系统当前时间转换为秒
NOWTIMETOS=`date -d "${NOWTIME}" +%s`
MINUSTIME=$((CRTTIMETOS-NOWTIMETOS))
echo ${MINUSTIME}
#2天=172800秒,在到期前2天处理证书到期
if [ ${MINUSTIME} -lt 172800 ];then
echo "证书时间:${CRTTIME} , 当系统时间:${NOWTIME} , 到期时间<=2天" >> /opt/update_rancher_tls.log
mv $SMARTBI_RANCHER_TLS_HOME/localhost.crt $SMARTBI_RANCHER_TLS_HOME/localhost.crt_$CurrentDay
mv $SMARTBI_RANCHER_TLS_HOME/localhost.key $SMARTBI_RANCHER_TLS_HOME/localhost.key_$CurrentDay
mv $SMARTBI_RANCHER_TLS_HOME/token-node.crt $SMARTBI_RANCHER_TLS_HOME/token-node.crt_$CurrentDay
mv $SMARTBI_RANCHER_TLS_HOME/token-node.key $SMARTBI_RANCHER_TLS_HOME/token-node.key_$CurrentDay
docker restart smartbi-rancher
else
echo "证书时间:${CRTTIME} , 当系统时间:${NOWTIME} , 到期时间>2天" >> /opt/update_rancher_tls.log
fi

编辑定时任务,比如每天晚上11点执行任务:

0 23 * * * /bin/bash /opt/update_rancher_tls.sh &> /dev/null

打印出的时间日志:

# cat update_rancher_tls.log 
证书时间:Jun 8 06:58:13 2023 , 当系统时间:2022-06-09 15:19:10 , 到期时间>2天

大家在写脚本的时候,建议所有脚本功能,要有日志输出,方便问题跟踪。