Skip to content

04应用部署

上一章,我们大概了解了下,一个应用需要如何经过改造,才能够符合构建流水线的标准。同时呢,上一章,还有 cd部署没有讲完,所以这章咱们接着整

  • 首先,为了在不同的运行时(docker/containerd)之间无差别的切换,我们需要一个自建/阿里云的容器镜像仓库,最好是自建哦,毕竟到时候涉及到网络传输效率、代码安全等问题。

其次是,我们还需要定义一些后端应用标准,比如eladmin-plus它的输出端口是8001,那我们默认所有后端的服务端口都是8001。除此以外,还需要一个检测后端服务是否已经能够提供服务的接口。由于eladmin-plus自带了这种类型的接口,所以这里我们就不需要再定义了。如果没有这种匿名接口,一定要提供一个,这是为k8s健康就绪探测器准备的。

222.png

  • 这里为了演示,咱就浅浅的安装一个docker提供的容器镜像仓库registry,如果有就不用安装了哈。
shell
docker pull registry:latest

# 由于我这5000端被占用了, 所以这里用5555端口
docker run -d -p 5555:5000 --name registry registry:latest

223.png 可以通过访问"http://localhost:5555/v2/_catalog"测试,容器镜像仓库registry是否安装成功。 224.png 出现以上画面,咱就迈进一小步了啊。

  • 镜像需要被不同的运行时拉取的前提,是得镜像仓库中有这个镜像才行。那我们要怎么把镜像存到镜像仓库里面呢?
shell
docker tag <image-name> localhost:5555/<image-name>
docker push localhost:5555/<image-name>

# docker拉镜像
docker pull localhost:5555/<image-name>

# containerd拉镜像
crictl pull localhost:5555/<image-name>
  • 由上可得,两个字:简单。

接着,咱们本地搞个mysql,搞个redis,再把eladmin-plus的数据倒进数据库,修改application.yml中的redis配置,application-dev.yml中的数据库配置,这里由于我的docker和k8s都安装在本地了,为了k8s容器内部的能够无差别的访问外部的服务,这里我们最好用主机ip,ifconfig看一下,我的是192.168.169.185

  • 这个是mysql的配置

225.png226.png

  • 这个是redis的配置

227.png

  • 他项目里的sql,navicat根本导不进,你们用这个调整好了的

下载 eladmin.sql

  • 接下来,咱们只需要简单的手搓一个cd工具,就可以了。
  • 很快啊,一个简单的支持cicd的工具就写完了。
  • 首先,咱实现了打包推镜像的功能。

228.png

  • 然后,咱实现了部署到k8s的功能。
shell
# 这些命令是我测试的时候用的,仅供参考
# 查看镜像版本api
http://localhost:5555/v2/eladmin-system/tags/list

# 删除相关的镜像
docker images| grep eladmin-system| grep -v grep| awk '{print $3}'| xargs docker rmi -f

229.png230.png

  • 命令行工具使用方式
shell
./deploy-tool -language=java -output=eladmin-system/target/eladmin-system.jar -branch=master -env=dev -registry=localhost:5555
  • 参数介绍与解释
text
language: 这个项目使用的语言,目前这个1.1.0,仅支持maven管理下的springboot项目。必传
output: jar包输出的文件所在根目录的相对路径,构建镜像的时候,会用上。必传
branch: 要发布的分支名称,在eladmin-plus这个项目里,由于不是自己的项目,所以可用分支只有一个master分支。必传
env: 这个是用来区分不同环境的一个标记,比如env=dev,我在脚本里面,还是k8s yaml里面,我就知道现在部署的是哪个环境,好去拉取哪个环境的配置。必传
registry: 构建好的镜像包,上传到哪个容器镜像仓库,目前还不支持带密码的哈。必传
  • 工具下载

下载 Linux 版

下载 Mac 版