k8s自动化部署springcloud、springboot脚本

       为了自动化部署jar包到k8s容器云上边而写的脚本。

懒惰才是第一生产力,为了避免繁杂的发包操作。复制粘贴的喋喋不休,jar包升版的版本控制而写的脚本。

一、 脚本功能

把jar包放到指定目录,执行shell脚本,脚本先自动根据文件夹的环境把jar包中的配置文件替换掉。这样可以很方便的打生产环境和测试环境的jar包。只需要把jar放上去,配置文件无需关系,自动放到jar包里。然后脚本会自动把jar打成镜像,给镜像打成镜像名称加时间日期的标签,然后把镜像推送到镜像仓库。然后自动替换k8s的yaml脚本停止旧容器,启动新容器。

二、 脚本所需

1. springboot的jar包

2. 构建springboot镜像的Dockerfile

3. k8s启动yaml文件

三、 脚本定义

appname:所打包的name

dockersrc:用来放置Dockerfile文件。把jar包打成docker镜像。

k8ssrc:用来防止k8s的yaml文件,启动pod,停止pod

bmc:jar包的名字

file1:jar包种要替换的配置文件的名字,这个文件放置在dockersrc目录下。如bootstrap.properties

【替换jar包配置文件真的很方便,这样打成的jar包直接放进来就能用,无需关心配置文件,一键shell即可打包更新环境】

四、 脚本流程

1.  获取当前时间的年月日时分秒,生成当前jar包的版本号

2.  把jar包中的配置文件替换为dockersrc中的配置文件。

3. 把jar包打成docker镜像

4. 清除替换配置文件的残余

5. 给镜像打标签带上我们的版本号

6. 把这个镜像推送到远程镜像仓库

7. 替换yaml文件中的版本号

8. 重启pod,更新完成

五、 脚本详情

#!/bin/bash
#auth eric
#date 2020-11-25


#*********脚本入参#*********
appname=base
#Docker脚本位置
dockersrc=/home/springcloud/DockerBuilder/$appname
#K8s脚本位置
k8ssrc=/home/springcloud/k8s/$appname
#需要替换的包名称
bmc=$appname-server-web-1.0.jar
#需要替换的文件名称
file1=bootstrap.properties
#*********脚本入参#*********



#当前镜像版本
source /etc/profile
version="`date +%Y%m%d%H%M%S`"
echo '当前版本为'$version
echo '第一步:替换JAR包配置文件'
#找到替换文件路径
cd $dockersrc
if [ ! -d "$dockersrc"]; then
  echo "$dockersrc文件夹不存在";
  exit 1;
fi
if [ ! -f  "$jarsrc/$bmc" ];then
  echo  "$jarsrc/$bmc更新包不存在"
fi
#清除上一次的残余
rm -f *.tar *.jar
cp $jarsrc/$bmc $dockersrc
filesrc1=`jar -tvf \$bmc|grep \$file1|awk '{print \$NF}'`
echo $bmc
echo $file1
echo $filesrc1
#把要替换的文件解压出来
jar -xvf $bmc $filesrc1
if [ $? != 0 ]; then
    echo "java命令不存在,请安装JDK"
    exit 1;
fi
#删掉原文件
rm -f $filesrc1
#换掉文件
cp $file1 $filesrc1
#重新将文件加入到jar包中
jar -uvf $bmc $filesrc1
#删除解压文件
rm -rf BOOT-INF
rm -f *.tmp
echo '替换完成'
echo '第二步:构建Docker镜像'
docker build -t springcloud-$appname:1.1 .
if [ $? != 0 ]; then
    echo "docker构建失败,请检查Docker"
    exit 1;
fi
docker save springcloud-$appname:1.1 -o springcloud-$appname.tar
docker load < springcloud-$appname.tar
docker tag springcloud-$appname:1.1 192.168.1.6:15000/springcloud/springcloud-$appname:v$version
docker push  192.168.1.6:15000/springcloud/springcloud-$appname:v$version
if [ $? != 0 ]; then
    echo "远程仓库推送失败,请检查远程镜像仓库"
    exit 1;
fi
echo '第三步:升级K8s容器'
#替换k8s容器镜像版本
cd $k8ssrc
if [ ! -d "$k8ssrc"]; then
  echo "$k8ssrc文件夹不存在";
  exit 1;
fi
sed  -i  "s|springcloud/springcloud-$appname:.*|springcloud/springcloud-$appname:v$version |g"  04.application-deployments.yaml
kubectl delete -f 04.application-deployments.yaml
kubectl apply -f 04.application-deployments.yaml
echo '升级完成,当前版本为:'$version

六、 Dockerfile实例

首先要先安装openjdk

docker  pull  openjdk

然后注意修改时区保证docker容器内的时间和外部时间同步 

FROM openjdk:8
MAINTAINER ERIC-BASE
LABEL app="eric-base" version="1.1" by="eric"
COPY ./base-server-web-1.0.jar base-server-web-1.0.jar
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
CMD java -Xms256m -Xmx512m -jar base-server-web-1.0.jar

七、 K8s脚本

这个篇幅较长,放到下一篇吧 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Jenkins是一款开源的持续集成工具,它可以帮助开发团队自动化地构建、测试和部署软件项目。在Jenkins中配置Docker插件后,我们可以结合Docker技术来进行自动化部署Docker是一种轻量级的容器化技术,它可以将应用程序和其依赖的环境打包成一个可移植的容器,方便在不同的环境中部署和运行。 而Kubernetes(简称K8s)是一个开源的容器编排平台,它可以管理和调度Docker容器集群。通过在K8s中创建Pod、Service等资源对象,我们可以实现Spring Cloud项目的自动化部署。 首先,我们可以使用Jenkins的Pipeline功能来编写自动化部署的流水线脚本。流水线脚本可以定义一系列的步骤,包括构建、测试和部署等。在流水线脚本中,我们可以使用Docker插件来创建Docker镜像,并将其推送到Docker仓库。接着,我们可以使用K8s插件来在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。 在自动化部署过程中,我们可以将Spring Cloud项目的源代码与Dockerfile放在一个Git仓库中,并通过Jenkins的Webhook功能来触发自动化部署流水线。当有新的代码提交时,Jenkins会自动拉取最新的代码,并执行流水线脚本。在流水线脚本中,我们可以使用Maven或Gradle等工具来构建和打包Spring Cloud项目。然后,通过Docker插件创建可运行的Docker镜像,并将其推送到Docker仓库。 最后,使用K8s插件在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。通过创建Deployment对象,我们可以定义应用程序的副本数和容器的镜像。通过创建Service对象,我们可以定义应用程序可以访问的网络端口和负载均衡规则。 通过Jenkins、DockerKubernetes自动化部署,我们可以实现Spring Cloud项目的快速、可靠和可重复部署。这种自动化部署的方式可以提高开发效率和部署质量,同时也降低了运维成本和风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RedEric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值