【课程2.4】开发环境搭建:K8s集群部署、芋道框架集成、ThingsBoard对接
严格基于指定文件(核心为《01智慧城市一网统管平台-系统总体架构及其功能要点-20251018修订.docx》,简称《01总体架构》),结合《03系统数据库表》《04我的工作台》《05数据中枢》等,拆解开发环境"基础设施部署→业务框架集成→物联网平台对接"全流程,所有技术选型、版本参数均来自指定文件,不涉及外部信息。
一、前置说明:开发环境的"文件依据"与核心目标
《01总体架构》"(二)核心部署架构""(三)集群规划与组件选型"明确:一网统管开发环境需基于Kubernetes+KubeSphere构建容器化底座,集成芋道框架实现业务开发,对接ThingsBoard完成物联网设备数据接入(《05数据中枢》20.7节"设备管理"需物联网平台支撑)。
核心目标:搭建"容器化底座(K8s)+业务框架(芋道)+物联网接入(ThingsBoard)"的一体化开发环境,支撑后续"功能设计、代码开发"(如城管设施监测、水利水质数据采集),适配《03系统数据库表》的表结构与《06行业文件》的业务需求。
二、第一步:K8s集群部署(基于KubeSphere,《01总体架构》核心参考)
《01总体架构》"(二)核心部署架构""(五)集群部署资源规划"详细规定了K8s集群的部署环境、组件版本、节点配置,需严格按文件参数执行,避免版本兼容性问题。
2.1 部署环境准备(文件参数)
| 环境要素 | 配置要求(《01总体架构》P83、P88) | 说明 |
|---|---|---|
| 操作系统 | openEuler 24.03 LTS SP1 x86_64 | 国产化适配,保障政务场景合规性,文件明确为推荐操作系统(《01总体架构》P83) |
| 部署工具 | KubeKey v3.1.7 | 快速部署Kubernetes+KubeSphere,支持集群扩容/缩容(《01总体架构》P83) |
| 硬件要求 | 控制节点(Control):16核CPU+16GB内存+500GB数据盘;Worker节点:8核CPU+32GB内存+500GB数据盘(《01总体架构》P88) | 按"3 Control+3 Worker+3 GPU Worker"最小高可用规模部署,支撑基础开发 |
| 网络要求 | 核心网络(192.168.9.0/24)、存储平面(192.168.10.0/24)、运维域(192.168.11.0/24)(《01总体架构》P82) | 分层网段隔离,避免网络冲突,适配多平面高可用架构 |
2.2 核心组件部署(文件指定版本)
严格按《01总体架构》P83"关键组件及部署版本"表部署,确保与平台后续功能兼容(如芋道框架需适配KubeSphere v4.1.2):
# 1. 下载KubeKey(文件指定v3.1.7)
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.1.7 sh -
# 2. 创建集群配置文件(参考文件网络规划,指定openEuler系统、组件版本)
./kk create config --name=urban-mgmt-cluster \
--hosts=192.168.9.10,192.168.9.11,192.168.9.12,192.168.9.13,192.168.9.14,192.168.9.15 \
--operating-system=openEuler \
--container-manager=containerd:1.7.13 \
--kubernetes-version=v1.30.6 \
--kubesphere-version=v4.1.2
# 3. 部署集群(包含K8s+KubeSphere,文件推荐自建核心组件)
./kk install cluster -f config.yaml
文件依据:《01总体架构》P80"部署方式:核心组件优先自建",P83"关键组件及部署版本"明确Kubernetes v1.30.6、Containerd 1.7.13。
2.3 存储方案部署(OpenEBS+Ceph,《01总体架构》P80)
文件取消传统GlusterFS,采用"OpenEBS(本地存储)+Ceph(共享存储)"组合方案,需在K8s集群内部署:
-
OpenEBS部署
:用于LocalPV(如K8s节点配置文件、临时数据),通过KubeSphere应用市场一键安装(《01总体架构》P84);
-
Ceph部署
:用于共享存储(如《03系统数据库表》的sys_area、biz_event等核心表数据),参考文件"存储平面节点配置"(192.168.10.0/24网段),部署3节点Ceph集群;
-
验证存储
:创建测试PVC,挂载至Pod,确保数据持久化(如创建MySQL数据库Pod,使用Ceph存储,验证《03系统数据库表》的表结构可正常创建)。
2.4 集群验证(文件合规性检查)
部署完成后,需验证以下内容(符合《01总体架构》"高可用架构"要求):
-
访问KubeSphere控制台(默认端口30880),确认Control节点、Worker节点均为"Ready"状态;
-
检查核心组件(ETCD、API Server、Ceph)运行正常,无CrashLoopBackOff;
-
验证网络连通性:跨节点Pod可正常通信,存储平面可正常读写数据。
三、第二步:芋道框架集成(对接K8s与数据库,《04工作台》核心参考)
《04我的工作台-系统功能设计.docx》(简称《04工作台》)2.2节"基础设施"明确芋道框架为业务开发核心,需集成其"系统管理、表单构建、代码生成"等模块,对接K8s集群与《03系统数据库表》。
3.1 芋道框架部署(K8s内部署)
-
环境依赖
:确保K8s集群内已部署MySQL(8.0版本,《01总体架构》P83)、Redis(用于缓存,《04工作台》1.6节"个人中心"需缓存用户权限);
-
数据库初始化
:执行《03系统数据库表》的初始化SQL脚本,创建基础层(sys_user、sys_area)、业务层(biz_event)、关联层(rel_event_device)表结构,确保表名、字段符合《02命名规范》(sys_前缀、snake_case格式);
-
框架部署
:
-
下载芋道源码(适配KubeSphere的Spring Boot 2.7.x版本),修改配置文件(数据库连接、Redis地址、K8s服务发现);
-
打包为Docker镜像,推送至K8s集群的私有镜像仓库;
-
通过KubeSphere控制台创建Deployment,挂载Ceph存储(存储配置文件、日志),暴露Service(NodePort或Ingress)。
-
3.2 核心模块集成(《04工作台》功能适配)
需集成芋道以下模块,支撑后续业务开发(如"我的待办""快捷入口"):
| 芋道模块 | 集成目标(《04 工作台》功能对应) | 配置要点 |
|---|---|---|
| 系统管理(sys_) | 对接《03 系统数据库表》的 sys_user、sys_role、sys_menu,实现用户登录、权限控制(对应《04 工作台》1.6 节 "账号安全") | 配置用户角色与菜单关联,确保 "我的工作台" 菜单仅对有权限用户可见 |
| 表单构建 | 支撑《04 工作台》1.1 节 "我的待办" 表单、1.2 节 "我的预警" 表单,快速生成前端表单组件 | 导入《03 系统数据库表》的表结构,自动生成表单(如 biz_evt_wo 工单表表单) |
| 代码生成 | 基于《03 系统数据库表》生成实体类、Mapper、Service 代码,减少重复开发(如 sys_device 设备表代码) | 按《02 命名规范》配置代码生成规则(实体类名对应表名,如 SysDevice 对应 sys_device) |
| 消息中心(sys_notice) | 支撑《04 工作台》1.4 节 "消息中心",实现系统通知、业务消息推送 | 配置 WebSocket 服务(《04 工作台》1.4 节技术细节),确保消息实时推送 |
3.3 框架验证(功能与数据对接)
-
接口验证
:访问芋道框架的Swagger文档(默认端口8080/swagger-ui.html),测试"用户查询"(/sys/user/getById)、"待办列表查询"(/biz/wo/list)接口,确保返回《03系统数据库表》的真实数据;
-
权限验证
:使用不同角色用户登录,确认权限控制生效(如普通用户仅能查看自己的待办,管理员可查看全域待办);
-
K8s适配验证
:通过KubeSphere查看芋道Pod运行状态,验证配置文件挂载、日志输出正常。
四、第三步:ThingsBoard对接(物联网数据接入,《05数据中枢》核心参考)
《05数据中枢-系统功能设计.docx》(简称《05数据中枢》)20.7节"设备管理"、20.8节"运行监测"明确需对接ThingsBoard接收物联网设备数据(如传感器、摄像头数据),需完成"设备注册、数据同步、接口对接"。
4.1 ThingsBoard部署(K8s内部署)
-
版本选择
:部署ThingsBoard CE版(兼容开源生态,《05数据中枢》20.7节"设备遥测数据"需开源接口);
-
部署方式
:通过KubeSphere应用市场搜索"ThingsBoard",选择对应版本部署,或使用Helm Chart部署(指定MySQL、PostgreSQL存储);
-
初始化配置
:访问ThingsBoard控制台(默认端口8080),创建租户(如"城管住建租户""水利水务租户")、用户(对接芋道sys_user表的用户)。
4.2 设备对接(关联《03系统数据库表》)
需将ThingsBoard的设备与《03系统数据库表》的sys_device表关联,确保数据归属一致:
-
设备模板创建
:在ThingsBoard创建设备模板(如"城管摄像头模板""水利水质传感器模板"),定义遥测字段(如摄像头的"抓拍次数"、传感器的"pH值"),字段名需与《03系统数据库表》的biz_device_telemetry_data表字段一致(如ph_value、snap_count);
-
设备注册
:
-
从芋道sys_device表导出设备列表(含device_code、device_type);
-
在ThingsBoard批量创建设备,将device_code设为ThingsBoard的"设备标识",关联对应设备模板;
-
记录ThingsBoard的"设备ID",回写至sys_device表的tb_device_id字段,建立关联。
-
4.3 数据同步(对接芋道与《05数据中枢》)
实现ThingsBoard的设备遥测数据同步至芋道框架与《03系统数据库表》,支撑《05数据中枢》的"运行监测":
-
规则链配置(ThingsBoard内)
:
-
创建规则链"设备数据同步",添加"消息源"(遥测数据)、"转换节点"(将JSON数据转换为《03系统数据库表》字段格式)、"REST API调用节点"(调用芋道接口);
-
配置数据过滤:仅同步需要的遥测字段(如水质传感器的pH值、温度,过滤无效字段);
-
-
芋道接口开发(接收数据)
:
-
开发数据接收接口(/api/v1/device/telemetry/save),参数对应biz_device_telemetry_data表字段(device_code、telemetry_time、ph_value等);
-
接口逻辑:验证设备合法性(查询sys_device表)、存储数据至biz_device_telemetry_data表、触发《05数据中枢》的"运行监测"数据更新;
-
-
数据验证
:
-
在ThingsBoard模拟设备发送遥测数据(如pH值=7.2);
-
检查芋道接口是否接收成功,biz_device_telemetry_data表是否新增记录,《05数据中枢》20.8节"基础监测数据管理"是否显示该数据。
-
五、开发环境验证(全链路验证)
完成以上步骤后,需进行全链路验证,确保环境可支撑后续行业开发(如城管住建、水利水务):
-
设备数据链路
:ThingsBoard设备→遥测数据→芋道接口→biz_device_telemetry_data表→《05数据中枢》运行监测,数据流转无断点;
-
业务功能链路
:芋道"我的待办"→调用biz_evt_wo表→K8s内MySQL→Ceph存储,功能正常且数据持久化;
-
权限控制链路
:芋道用户登录→K8s内Redis缓存权限→访问ThingsBoard设备数据,权限隔离生效(如水利用户仅能查看水利设备)。
六、总结:环境搭建的"文件合规性"
开发环境搭建的核心是严格遵循《01总体架构》的技术选型、《02命名规范》的数据库格式、《03-05文件》的功能依赖,确保:
-
K8s集群符合"3节点高可用、OpenEBS+Ceph存储"的文件要求;
-
芋道框架对接《03系统数据库表》,模块适配《04工作台》功能;
-
ThingsBoard对接《05数据中枢》的设备管理,数据同步至业务表。
该环境将作为后续"行业实战"(如城管设施监测、水利水质预警)的开发基础,所有配置均与指定文件保持一致,避免后期功能适配问题。