欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及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.
Dockerfile文件用来构建docker镜像,如果您的SpringBoot版本为2.3.0.RELEASE或者更高,建议使用SpringBoot官方推荐的镜像构建方式,此Dockerfile可以用来参考;
和probedemo.yaml文件和您的具体项目有关,请自行修改,确保可以用来部署deployment和service;
auto_deploy.sh是可以快速部署的关键,接下来详细说明;
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# 判断是否安装了sshpassif ! [ -x "$(command -v sshpass)" ]; then echo '请安装sshpass后再使用此脚本!' exit 1fi# 镜像名IMAGE_NAME='bolingcavalry/probedemo'# TAG名TAG_NAME='0.0.1'# 配置了deployment和s.........