k8s自动化部署springcloud、springboot脚本

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 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脚本

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2月前
|
人工智能 监控 Kubernetes
77_自动化脚本:Makefile与Airflow
在当今AI大模型时代,高效的工作流管理对于模型训练、推理和部署至关重要。随着大模型规模的不断增长和复杂度的提升,传统的手动脚本管理方式已无法满足需求。自动化脚本和工作流调度系统成为构建健壮、可重复、可扩展的LLM Pipeline的关键工具。其中,Makefile作为经典的自动化构建工具,与Airflow作为现代工作流调度平台的结合,为LLM开发团队提供了强大的工作流管理能力。
|
4月前
|
传感器 人工智能 JavaScript
Playwright实战:写UI自动化脚本,速度直接起飞
简介: 测试工程师老王因UI自动化问题深夜奋战,反映出传统测试工具的局限性。微软开源的Playwright凭借智能等待、跨域操作、移动端模拟与网络拦截等强大功能,正迅速取代Selenium,成为新一代自动化测试标准。其稳定高效的设计显著降低维护成本,助力企业构建高质量测试流程。
|
6月前
|
机器学习/深度学习 Kubernetes 监控
Kubernetes 节点故障自愈方案:结合 Node Problem Detector 与自动化脚本
本文深入探讨了Kubernetes节点故障自愈方案,结合Node Problem Detector(NPD)与自动化脚本,提供技术细节、完整代码示例及实战验证。文章分析了硬件、系统和内核层面的典型故障场景,指出现有监控体系的局限性,并提出基于NPD的实时事件捕获与自动化诊断树的改进方案。通过深度集成NPD、设计自动化修复引擎以及展示内核死锁恢复的实战案例,文章详细说明了自愈流程的实现步骤与性能优势。此外,还提供了生产环境部署指南、高可用架构设计及安全防护措施,并展望了机器学习增强故障预测和混沌工程验证的进阶优化方向。全文约1.2万字,适合希望提升Kubernetes集群稳定性的技术人员阅读。
356 2
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
12月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
1018 61
自动化微信朋友圈:Python脚本实现自动发布动态
|
11月前
|
Web App开发 人工智能 JSON
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
AutoMouser是一款Chrome扩展程序,能够实时跟踪用户交互行为,并基于OpenAI的GPT模型自动生成Selenium测试代码,简化自动化测试流程。
760 17
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
|
9月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
10月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
395 2
|
10月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%

热门文章

最新文章