在开发阶段,我们如何将SpringBoot应用快速部署到K8S
作者:互联网
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
背景
对于生产环境,我们一般会用CI&&CD工具完成整个构建和部署,因此本文不适合生产环境;
对于学习和开发环境,我们频繁修改代码,又想快速见到效果,本文就是针对这种场景的;
内容简介
如果您正在开发SpringBoot应用,并且应用部署在K8S环境,可以参考本文将应用快速部署到K8S环境;
文中SpringBoot的版本是2.3.0.RELEASE,从该版本起,SpringBoot官方推荐了一种新的docker镜像构建方案,如果您是之前的版本,请自行修改文中构建镜像的部分;
环境信息
本次实战有两个环境:开发和运行环境,其中开发环境信息如下:
操作系统:Ubuntu 20.04 LTS 桌面版(同样验证过的还有:MacBook pro 13寸,macOS Catalina 10.15.4)
CPU :2.30GHz × 4,内存:32G,硬盘:1T NVMe
JDK:1.8.0_231
MAVEN:3.6.3
SpringBoot:2.3.0.RELEASE
Docker:19.03.10
开发工具:IDEA 2020.1.1 (Ultimate Edition)
运行环境信息如下:
操作系统:CentOS Linux release 7.8.2003
Kubernetes:1.15
另外,请在开发环境安装sshpass;
SpringBoot工程源码
本次实战用到了一个普通的SpringBoot工程,源码可在GitHub下载到,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
名称 链接 备注
项目主页 https://github.com/zq2599/blog_demos 该项目在GitHub上的主页
git仓库地址(https) https://github.com/zq2599/blog_demos.git 该项目源码的仓库地址,https协议
git仓库地址(ssh) git@github.com:zq2599/blog_demos.git 该项目源码的仓库地址,ssh协议
这个git项目中有多个文件夹,本章的应用在probedemo文件夹下,如下图红框所示:
在这里插入图片描述
必要的内容
整个工程是普通SpringBoot工程,除了常见的pom.xml和源码,还多了以下三个文件:
在这里插入图片描述
Dockerfile文件用来构建docker镜像,如果您的SpringBoot版本为2.3.0.RELEASE或者更高,建议使用SpringBoot官方推荐的镜像构建方式,此Dockerfile可以用来参考;
和probedemo.yaml文件和您的具体项目有关,请自行修改,确保可以用来部署deployment和service;
auto_deploy.sh是可以快速部署的关键,接下来详细说明;
作者:程序员欣宸
链接:https://www.jianshu.com/p/1c2e3e06861a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。>学一分退让,讨一分便宜。增一分享受,减一分福泽。
>平无一事可瞒人,此是大快。
>一笔一画关乎成绩,一字一句决定人生。
>考试十分钟,平时十年功。
>不要等待机会,而要创造机会。
>态度决定命运。
>量变引起质变,知识重在积累。
>有怎样的开始,就有怎样的结束。
>行动是通往知识的唯一道路。
>当你能梦的时候就不要放弃梦。
>快乐要懂得分享,才能加倍地快乐。
>良好的习惯永远是一个人成功的法宝。
>总结,就是为了在高考中不留下任何遗憾。
>良好的生活习惯对人的一生都至关重要。
>一个今天胜过两个明天。
>把你的脸迎向阳光,那就不会有阴影。
>经验是由痛苦中萃取出来的。
>闲事闲话闲思是学习的大敌。
>不要被失败吓到,不要被胜利冲昏头脑。
>一个成功者只知抱定理想,向前行进。
>乐观地对待失败,成功就会向你招手。
>你不能左右天气,但你能转变你的心情。
>始终保持积极向上的精神状态,就会创造出惊人的成绩。
>积极的人在每一次失败中都看到机会。
>含累播种的人一定能含笑收获。
>一个人最大的破产是绝望,最大的资产是希望。
>做对的事情比把事情做对重要。
>平时和考试一样,考试方和平时一样。
>每天告诉自己一次:我真的很不错。
>生活中若没有明天,就像生活中没有阳光一样。
>发光并非太阳的专利,你也可以发光。
>人只要不失去方向,就不会失去自己。
>嫉妒别人,仇视异己,就等于把生命交给别人。
>平生不做皱眉事,世上应无切齿人。
>嫉妒别人,仇视异己,就等于把生命交给别人。
>平生不做皱眉事,世上应无切齿人。
>智者顺时而谋,愚者逆时而动。
>心量狭小,则多烦恼,心量广大,智慧丰饶。
>人若勇敢就是自己最好的朋友
>不可能』只存在于蠢人的字典里
>抱最大的希望,为最大的努力,做最坏的打算
>家!甜蜜的家!天下最美好的莫过于家
>游手好闲会使人心智生锈
>每一件事都要用多方面的角度来看它
>有理想在的地方,地狱就是天堂
>有希望在的地方,痛苦也成欢乐
>所有的胜利,与征服自己的胜利比起来,都是微不足道
>所有的失败,与失去自己的失败比起来,更是微不足道
>上帝从不埋怨人们的愚昧,人们却埋怨上帝的不公平
>美好的生命应该充满期待、惊喜和感激
>世上最累人的事,莫过于虚伪的过日子
>.觉得自己做的到和不做的到,其实只在一念之间
>第一个青春是上帝给的;第二个的青春是靠自己努力的
>少一点预设的期待,那份对人的关怀会更自在
>思想如钻子,必须集中在一点钻下去才有力量
>人只要不失去方向,就不会失去自己
>如果你曾歌颂黎明,那么也请你拥抱黑夜
>问候不一定要慎重其事,但一定要真诚感人
>人生重要的不是所站的位置,而是所朝的方向
>当你能飞的时候就不要放弃飞
>当你能梦的时候就不要放弃梦
>当你能爱的时候就不要放弃爱
>生命太过短暂,今天放弃了明天不一定能得到
>天才是百分之一的灵感加上百分之九十九的努力
>人总是珍惜未得到的,而遗忘了所拥有的
>快乐要懂得分享,才能加倍的快乐
>自己要先看得起自己,别人才会看得起你
>一个今天胜过两个明天
>要铭记在心;每天都是一年中最美好的日子
>乐观者在灾祸中看到机会;悲观者在机会中看到灾祸
>有勇气并不表示恐惧不存在,而是敢面对恐惧、克服恐惧
>肯承认错误则错已改了一半
>明天是世上增值最快的一块土地,因它充满了希望
>理想的路总是为有信心的人预备着
>所有欺骗中,自欺是最为严重的
>人生最大的错误是不断担心会犯错
>把你的脸迎向阳光,那就不会有阴影
>.经验是由痛苦中粹取出来的
>用最少的悔恨面对过去
>用最少的浪费面对现在
>用最多的梦面对未来
>快乐不是因为拥有的多而是计较的少
>你的选择是做或不做,但不做就永远不会有机会
>如你想要拥有完美无暇的友谊,可能一辈子找不到朋友
>不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧
>把自己当傻瓜,不懂就问,你会学的更多
>要纠正别人之前,先反省自己有没有犯错
>因害怕失败而不敢放手一搏,永远不会成功
>.要克服生活的焦虑和沮丧,得先学会做自己的主人
>你不能左右天气,但你能转变你的心情
>孤单寂寞与被遗弃感是最可怕的贫穷
>想象力比知识更重要
>漫无目的的生活就像出海航行而没有指南针
>好好扮演自己的角色,做自己该做的事
>一切伟大的行动和思想,都有一个微不足道的开始
>得意时应善待他人,因为你失意时会需要他们
>学做任何事得按部就班,急不得。
>3.让孩子快乐起来
>你聋了?听见没有?
>哎你怎么这么懒呀!
>你跟你爸一个德性!
>示范作用
>抓住时机
>感受读书乐趣
>创造环境
>这里再举个例子
>这是一个很有名的故事
>下面就是一个很好例子
>先来看一位母亲的经历
>君临渊微微蹙眉嗯?
>常三快要被吓死了!
>常三啊?
>她长得有那么可怕吗?
>我自己过去。
>第535章一巴掌!
>凤舞惊呆了!
>她给气坏了!
>清脆的巴掌声!
>君、临、渊、啊!
>舞小姐这回怕是
>然而双方实力相差太大
>第536章星辰碎片
>温泉池?
>报名时间截止了?
>陆院长不给通融?
>星辰碎片!
auto_deploy.sh详述
auto_deploy.sh的作用如下:
调用maven命令编辑构建工程;
将构建好的jar文件制作成docker镜像;
将docker镜像导出为tar文件;
将tar文件上传到K8S服务器;
将probedemo.yaml文件发送到K8S服务器;
通过sshpass远程执行命令,将docker镜像导入K8S服务器的本地docker仓库;
通过sshpass远程执行命令,部署deployment和service;
auto_deploy.sh的完整内容如下:
#!/bin/bash
判断是否安装了sshpass
if ! [ -x “$(command -v sshpass)” ]; then
echo ‘请安装sshpass后再使用此脚本!’
exit 1
fi
镜像名
IMAGE_NAME=‘bolingcavalry/probedemo’
TAG名
TAG_NAME=‘0.0.1’
配置了deployment和service的yaml文件名
DEPLOY_SERVICE_YAML=‘probedemo.yaml’
K8S环境的IP地址
K8S_IP_ADDRESS=‘192.168.50.135’
K8S环境的SSH账号
K8S_SSH_ACCOUNT=‘root’
8S环境的SSH密码
K8S_SSH_PSWD=‘888888’
K8S上存放tar和yaml文件的位置
K8S_FILE_PATH=’~/deploy_temp’
当前名目录
CURRENT_DIR=pwd
echo ‘开始自动构建和部署,当前目录是:’${CURRENT_DIR}
执行maven命令构建项目
mvn clean package -U -DskipTests
echo “构建镜像文件:”
I
M
A
G
E
N
A
M
E
/
{IMAGE_NAME}/
IMAGENAME/{TAG_NAME}
docker build -t
I
M
A
G
E
N
A
M
E
/
{IMAGE_NAME}/
IMAGENAME/{TAG_NAME} .
echo “将镜像导出为tar文件:”
I
M
A
G
E
N
A
M
E
/
{IMAGE_NAME}/
IMAGENAME/{TAG_NAME}
docker save
I
M
A
G
E
N
A
M
E
/
{IMAGE_NAME}/
IMAGENAME/{TAG_NAME} > ${CURRENT_DIR}/image.tar
echo “在K8S服务器创建存放文件的目录:”${K8S_FILE_PATH}
sshpass -p ${K8S_SSH_PSWD} ssh
K
8
S
S
S
H
A
C
C
O
U
N
T
@
{K8S_SSH_ACCOUNT}@
K8SSSHACCOUNT@{K8S_IP_ADDRESS} “mkdir -p ${K8S_FILE_PATH}”
echo “将yaml文件发送到K8S服务器:”
I
M
A
G
E
N
A
M
E
/
{IMAGE_NAME}/
IMAGENAME/{TAG_NAME}
sshpass -p ${K8S_SSH_PSWD} scp
C
U
R
R
E
N
T
D
I
R
/
{CURRENT_DIR}/
CURRENTDIR/{DEPLOY_SERVICE_YAML}
K
8
S
S
S
H
A
C
C
O
U
N
T
@
{K8S_SSH_ACCOUNT}@
K8SSSHACCOUNT@{K8S_IP_ADDRESS}
标签:NAME,模拟器,小鸡,SSH,K8S,英语,开发阶段,SpringBoot 来源: https://blog.csdn.net/XJS_1980/article/details/111303948