k8s自动化部署springcloud、springboot脚本

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 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脚本

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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6天前
|
Kubernetes 监控 安全
Kubernetes实战:集群管理与自动化技术详解
【6月更文挑战第27天】Kubernetes实战聚焦集群自动化管理,涵盖核心概念如主从架构、API Server及工作节点,强调自动扩缩容、RBAC安全控制与日志监控。通过IaC工具如Helm实现配置自动化,结合Prometheus等进行持续监控,强调安全策略与资源优化,展现K8s在现代应用管理中的威力。
|
2天前
|
人工智能 运维 物联网
自动化运维的演进之路:从脚本到AI
【6月更文挑战第30天】自动化运维,作为提升IT效率和稳定性的关键手段,经历了从简单的脚本编写到集成复杂人工智能技术的跨越。本文将探讨自动化运维的发展历程,分析当前技术趋势,并展望未来可能的变革。
|
4天前
|
数据管理 测试技术 持续交付
自动化测试的进阶之路:从脚本到框架
【6月更文挑战第28天】在软件开发的生命周期中,自动化测试是确保产品质量和提升开发效率的关键步骤。本文深入探讨了自动化测试的演变历程,从简单的脚本编写到构建复杂的测试框架,揭示了如何通过持续集成和持续部署(CI/CD)实现自动化测试的高效执行。文章不仅介绍了自动化测试的基本概念和工具,还提供了实用的策略和技巧,帮助读者理解如何在现代软件工程实践中有效地应用自动化测试,以及如何克服常见的挑战。
|
7天前
|
Java API 数据格式
Spring三兄弟:Spring、Spring Boot、Spring Cloud的100个常用注解大盘点
Spring三兄弟:Spring、Spring Boot、Spring Cloud的100个常用注解大盘点
|
12天前
|
运维 监控 应用服务中间件
自动化脚本:提升运维效率的秘诀
**自动化脚本提升服务器管理效率:** - 数据库备份脚本自动执行mysqldump,保证数据安全。 - DoS防护脚本监测Nginx日志,异常IP自动屏蔽。 - 实时网卡流量监控脚本展示网络流量,辅助异常检测。 - 配置邮件发送环境,利用mailx发送告警通知。 - Nginx日志按天切割脚本优化存储,日志分析脚本提供访问洞察。 这些脚本简化运维工作,增强系统安全与响应能力。
21 6
|
8天前
|
SpringCloudAlibaba Cloud Native Dubbo
SpringBoot和SpringCloud,SpringCloudAlibaba版本依赖关系
由于 Spring Boot 3.0,Spring Boot 2.7~2.4 和 2.4 以下版本之间变化较大,目前企业级客户老项目相关 Spring Boot 版本仍停留在 Spring Boot 2.4 以下,为了同时满足存量用户和新用户不同需求,社区以 Spring Boot 3.0 和 2.4 分别为分界线,同时维护 2022.x、2021.x、2.2.x 三个分支迭代。如果不想跨分支升级,如需使用新特性,请升级为对应分支的新版本。 为了规避相关构建过程中的依赖冲突问题,我们建议可以通过 云原生应用脚手架 进行项目创建。
47 0
SpringBoot和SpringCloud,SpringCloudAlibaba版本依赖关系
|
12天前
|
机器学习/深度学习 人工智能 运维
自动化运维的崛起:从脚本到智能
【6月更文挑战第20天】在数字化时代,自动化运维不再是一个选择,而是企业追求效率和稳定性的必要条件。本文将探讨自动化运维的发展轨迹,从最初的脚本编写到现今的智能化工具应用,揭示自动化技术如何重塑IT运维领域,提升业务连续性和敏捷性。
|
17天前
|
运维 监控 API
自动化运维实践指南:Python脚本优化服务器管理任务
本文探讨了Python在自动化运维中的应用,介绍了使用Python脚本优化服务器管理的四个关键步骤:1) 安装必备库如paramiko、psutil和requests;2) 使用paramiko进行远程命令执行;3) 利用psutil监控系统资源;4) 结合requests自动化软件部署。这些示例展示了Python如何提升运维效率和系统稳定性。
33 8
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的演进之路:从脚本到智能
【6月更文挑战第18天】自动化测试作为软件质量保证的重要手段,其发展历程映射了技术进步和行业需求的变化。本文旨在探讨自动化测试技术从简单的脚本编写逐步演变为集成化、智能化的测试解决方案的过程。文章将分析自动化测试面临的挑战,介绍当前流行的框架和工具,并展望自动化测试的未来趋势,特别是人工智能如何重塑测试实践,提升测试效率和有效性。
25 2
|
1天前
|
Java API 网络架构
Spring Boot与Spring Cloud Gateway的集成
Spring Boot与Spring Cloud Gateway的集成