首页 > 其他分享 >k8s自动升级脚本

k8s自动升级脚本

时间:2023-03-27 10:03:17浏览次数:37  
标签:脚本 服务 32m jar echo 升级 033 k8s dockerfile

该脚本实现的功能是通过输入(服务名称)以及(版本号)匹配开发给的jar包,放到指定的服务目录下后通过Dockerfile打包镜像,然后自动修改yaml文件版本号进行更新升级。弊端是在服务名相同且更长的时候,需要先升级服务名更长的,不然会将相同服务名的包全都拉过去。

使用该脚本需要满足的条件是

1,有yaml文件启动的服务

2,使用dockerfile进行打jar包的服务

各位可自行更改,最后调用的查看服务启动状态脚本也附上了

#!/bin/bash
#服务路径
servicen="/home/bxyd"
new1="/home/newfile"

#查询/home/usert下所有jar包
echo -e    "\033[32m #################################################################################################### \033[0m"
echo -e    "\033[32m #                         注意:多个服务名多字段相同的情况下先升级包名更长的                        # \033[0m"
echo -e    "\033[32m #                         注意:打包中途ctrl+C会导致dockerfile文件未注释                            # \033[0m"
echo -e    "\033[32m #################################################################################################### \033[0m"
echo -e    "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>所有已上传的包名<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
find /home/usert/ -name '*.jar'

#请输入服务名称
#read -p "请输入服务名称:" name
read -p "请输入需要升级的服务名:" name1
echo $name1 > /root/file/files5
find1=`find /home/usert/ -name $name1'*.jar'`


#移动jar包到升级目录
echo -e    "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>jar包正在拼命移动中请稍等<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
mv $find1 $new1

#获取新包名称
dl=$(ls /home/newfile/)
path=$(find  /home/bxyd/ -name  ${dl} | awk -F"/" '{print $4}')
new3="/home/bxyd/$path/$dl"
new2="/home/newfile/$dl"


#设置yaml路径变量
path4=/root/service-pod/

#判断是否有对应yaml
if [ -f  "$path$name1.yaml" ];then
    echo -e "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>修改服务版本号<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
else
	mv $new2 /home/usert/baaa
    echo -e "\033[31m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>修改dockerfile失败<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
    exit 255
fi

#获取版本号-版本号自动+1
version=`cat $path4$name1.yaml  | grep image: | awk -F "-" '{print $NF}'`
a=$((1+${version//$'\r'}))



#替换dockerfile包
if [ -f  "$new2" ];then
    sed -i "s/#ADD $dl/ADD $dl/" /$servicen/$path/Dockerfile
    sed -i "s/#$dl/$dl/" /$servicen/$path/Dockerfile
    echo -e "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>修改dockerfile成功<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
else
    mv $new2 /home/usert/baaa
    echo -e "\033[31m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>修改dockerfile失败<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
    exit 255
fi

#删除旧包
if [ -f  "$new3" ];then
    rm -rf $new3
    echo -e "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>删除旧包成功<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
else
    mv $new2 /home/usert/baaa
    echo -e "\033[31m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>删除旧包失败<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
    exit 255
fi

##移动新包
if [ -f "$new2" ]; then
    cp /$new1/$dl /$servicen/$path/
    echo -e "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>复制新包成功<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
else
    mv $new2 /home/usert/baaa
    echo -e "\033[31m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>文件不存在,已退出脚本<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
    exit 255
fi

#打包上传
cd  /$servicen/$path/
docker build  -t cr.registry.sd-1.res.sgmc.sgcc.com.cn/dwzyywzt-nari/dwzyywzt-nari:$name1-$a .
if [ $? -eq 0 ];then
    echo -e "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>docker build打包成功<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
else
    mv $new2 /home/usert/baaa
    echo -e "\033[31m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>docker build打包失败,已退出 脚本<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
    exit 255
fi
docker push  cr.registry.sd-1.res.sgmc.sgcc.com.cn/dwzyywzt-nari/dwzyywzt-nari:$name1-$a
if [ $? -eq 0 ];then
    echo -e "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>上传仓库成功<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
else
    mv $new2 /home/usert/baaa
    echo -e "\033[31m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>上传失败,已退出脚本<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
    exit 255
fi

#注释dockerfile
if [ -f  "$new3" ];then
    sed -i "s/ADD $dl/#ADD $dl/" /$servicen/$path/Dockerfile
    sed -i -z "s/$dl/#$dl/3" /$servicen/$path/Dockerfile
    echo -e "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>修改dockerfile成功<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
else
    mv $new2 /home/usert/baaa
    echo -e "\033[31m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>修改dockerfile失败<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"
    exit 255
fi

echo -e     "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>修改版本号<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"

rm -f  /$new1/$dl

sed -i "22s/${version}/${a}/g" $path4$name1.yaml

#开始升级
kubectl -n dwzy apply -f $path4$name1.yaml
echo -e     "\033[32m >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$name1升级完成<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \033[0m"

sh ~/select/pod-status5.sh



#!/bin/bash
name=`cat /root/file/files5`
           echo -e "--------------------------------------------------开始检查pod启动状态------------------------------------------"
n=0
    while(($n<=100))
        do kubectl -n dwzy  get  pods | grep  ${name} 
           echo -e "---------------------------------------------------------------------------------------------------------------"
        n=$((n + 1))
    sleep 6
done

标签:脚本,服务,32m,jar,echo,升级,033,k8s,dockerfile
From: https://blog.51cto.com/u_13555423/6151260

相关文章

  • CMD窗口中运行python脚本(虚拟环境下运行py文件)
    项目文件夹创建虚拟环境参考博文:WIN10系统下的Python3.7安装虚拟环境virtualenv和创建Web网站下面以Python_advanced_learning项目文件中的005_MiniWeb_Web服务器_实现模......
  • java实现“数据平滑升级”
    文章目录一、摘要二、前提场景说明:三、项目用到的脚本和代码1.项目目录长这样2.java代码、配置文件、部分脚本3.升级包中的部分文件一、摘要所谓的数据平滑升级:指的是比如旧......
  • 项目实战典型案例4——生产环境app打包导致不能自动升级的问题
    生产环境app打包导致不能自动升级的问题一:背景介绍问题背景:二:思路&方案产生的影响规避方案:三:正确的打包和配置自动升级的流程1.注册uniCloud云服务空间2.创建admin项目3.创......
  • K8S学习笔记之卸载K8S集群
    阅读目录0x00概述0x01 操作0x00概述有时候需要卸载已安装在本机的K8S服务和服务,本文卸载的K8S面向使用kubeadm或者二进制方法安装的,不涉及使用rpm包安装的集群;......
  • 升级Mac OS X Lion 后不能运行Parallels Desktop6 解决方法
     parallelsdesktop是MACOS下最棒的虚拟机软件。 这绝对不是我吹的,parallelsdesktop6可以很好的跑StarCraftIIImac27 HD4650可以在2560*1440分辨率跑Low画质......
  • K8s CrashLoopBackOff 如何排障?
    什么是CrashLoopBackOff CrashLoopBackOff是在k8s中较常见的一种Pod异常状态,最直接的表述,集群中的Pod在不断的重启挂掉,一直循环,往往Pod运行几秒钟因为程序异......
  • abp(net core)+easyui+efcore实现仓储管理系统——ABP升级7.3(五十八)
    Abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解......
  • 解决mac升级之后不可以ssh
    很多同学更新系统之后,使用这两者都会遇到一条报错,类似于:SSH(ssh:connecttohostlocalhostport22:Connectionrefused)我们之前出过一篇文章但是现在也不好用了怎......
  • k8s集群安装nginx-ingress报错解决
    可能是因为之前集群内安装过nginx-ingress,没有删除彻底,再次安装nginx-ingress的时候就提示有资源存在。报错如下:Error:INSTALLATIONFAILED:renderedmanifestscontaina......
  • 支持10倍订单增长,携程数据库架构升级实践
    一、背景 随着机票订单业务的不断增长,当前订单处理系统的架构已经不能满足日益增长的业务需求,系统性能捉襟见肘,主要体现在以下方面: 数据库CPU资源在业......