thingsboard 打包镜像微服部署 分布式部署

一、准备条件

maven3.8.1

docker 20.10.9

二、源码打包

tb目录结构

 微服务打包在 msa 目录里面,我们先cd进去查看目录结构

 这里面就是tb的各个目录,会按照这些模块各自打成一个镜像

black-box-tests 这个是测试模块
js-executor js执行器模块
monitoring 监控模块3.5以后才有的
tb 这个打包之后,会把tb所有的模块直接打包到一个镜像里面,直接启动即可
tb-node tb的后端核心服务,主要代码是源码中的 application模块
transport 传输协议模块,这里包括了之前说的,coap、http、mqtt 等等模块
vc-executor 这个应该是版本控制的
web-ui 这个是前端模块,对应源码中ui-ngx
我们cd进入tb-node模块cat pom.xml,看一下打包的原理

 这里引入了application模块的依赖,所以这里是tb的核心服务

 这里复制application的deb文件过来,然后进入pom.xml的同目录的docker目录,看到有一个

 cat  Dockerfile 可以看到如下

 复制start-tb-node.sh 启动文件和对应的 deb 进去打包为容器 然后在启动即可,哪么打包逻辑就很清晰了,镜像打包就是去对应模块的target编译文件里面复制deb文件过来打包即可,

我们看一下application模块的deb文件

 可以看到这里有个thingsbaord.deb文件,还有jar、rpm、zip等文件分别部署到相关的平台,那么这几个文件是怎么来的呢,其实很简单,只要我们把源码编译一次就会生成上面的文件,如果不了解源码编译,可以查看我们上一篇博客,有详细的介绍,接下来我们分别进入 msa 目录下各个模块的目录分别执行 mvn clean install -Ddockerfile.skip=false 命令就可以打包镜像了

以进入web-ui模块为例

 开始执行打包,执行还是比较快的,因为之前已经编译过来,一段时间之后可以看到

 在下载node基础镜像,这就是到了运行DockerFile的阶段了,下载相关的镜像了

 到了一步是打包成功了

 生成了这两个镜像,他们的镜像id是一样的,tag不一样,这时候我们可以通过docker把tb-web-ui推送到私有仓,然后使用分布式部署,接下来其他的模块也是一样的原理,就不重复操作了

三、部署

要使用k8s部署,这里我们只有镜像,还是不够的,因为还有很多配置我们没有配,也不知道怎么配置,所以

https://github.com/thingsboard/thingsboard-ce-k8s 我们去thingsboard的github上面找,可以找到k8s部署方式的源码

 我们把源码下载下来,minikube里面就是我们想要的部署脚本,可以看到还有helm部署的方式,我们进入minikube目录

 主要是上面圈出来的几个文件,我们只需要操作 sh 扩展名即可,可以看到都是启动和删除脚本,

先执行 k8s-install-tb.sh 出先装pgsql以及进行数据库的初始化

然后执行 k8s-deploy-thirdparty.sh 安装第三方程序,zk、kafka、redis,这里可以改为自己的中间件部署

最后执行 k8s-deploy-resources.sh 安装 mqtt 、http 、coap 、 node 等模块

接下来看下下面的yml文件,

tb-node.yml 主要是部署上面的tb-node镜像的

thirdparty.yml 是部署zk、kafka、redis 镜像的,因为这几个都是有状态的需要无头服务,所以自己自行修改部署即可

thingsboard。yml 这里面就是包括了 mqtt、http 等几种协议的

我们只需要把上面三个文件里面的image镜像地址改为我们的私有镜像地址即可,部署完成各个服务大概如下,都是根据msa里面的服务打包的镜像部署的,transport 里面有多种协议,可以分别打包

上面还有相关的 configmap 一会一并的部署,至此,我们的tb自行打包镜像,微服务部署就已经完成了,下一次说一下tb-gateway的网关以及设备接入

 

posted @ 2023-06-13 14:31  Vayne_Chen  阅读(2635)  评论(1)    收藏  举报