thingsboard 打包镜像微服部署 分布式部署
一、准备条件
maven3.8.1
docker 20.10.9
二、源码打包
tb目录结构

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

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

这里引入了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的网关以及设备接入

浙公网安备 33010602011771号