开发阶段,将SpringBoot应用快速部署到K8S,java中级程序员面试
本次实战有两个环境:开发和运行环境,其中开发环境信息如下:操作系统:Ubuntu 20.04 LTS 桌面版(同样验证过的还有:MacBook pro 13寸,macOS Catalina 10.15.4)CPU :2.30GHz × 4,内存:32G,硬盘:1T NVMe开发工具:IDEA 2020.1.1 (Ultimate Edition)运行环境信息如下:操作系统:CentOS Linux
环境信息
本次实战有两个环境:开发和运行环境,其中开发环境信息如下:
-
操作系统: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是可以快速部署的关键,接下来详细说明;
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文件的位置
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
言尽于此,完结
无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。
- 第一,设计模式能让专业人之间交流方便,如下:
程序员A:这里我用了XXX设计模式
程序员B:那我大致了解你程序的设计思路了
- 第二,易维护
项目经理:今天客户有这样一个需求…
程序员:明白了,这里我使用了XXX设计模式,所以改起来很快
- 第三,设计模式是编程经验的总结
程序员A:B,你怎么想到要这样去构建你的代码
程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题
- 第四,学习设计模式并不是必须的
程序员A:B,你这段代码使用的是XXX设计模式对吗?
程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
搜集费时费力,能看到此处的都是真爱!
[外链图片转存中…(img-LXE48smZ-1711034697477)]
从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!
[外链图片转存中…(img-zIFLljme-1711034697478)]
搜集费时费力,能看到此处的都是真爱!
更多推荐
所有评论(0)