qdata数据中台K8S安装修复
·
qdata是一个很全面的国产数据中台治理系统,但很可惜,网上的支持很少,而且,系统也有很多问题,我折腾了两天,终于基本可以用了,现分享给大家。
我们是用K8S平台安装的,所以先要构建docker镜像。但直接构建会有很多问题,我修正了不少,代码在这里:
https://gitee.com/johnnyzhou/qData/tree/1.1.2-fix/
用1.1.2-fix分支
原版有几个问题:
1、直接依赖spring-boot-starter-test,会导致打包时找不到一个json-smart-2.3.0-SNAPSHOT的包,我改成 test scope了,修复了代码中直接使用test的类
2、增加了actuator,以便k8s健康检查
3、原系统异常处理混乱,很多异常被吃掉了,找不到问题根源,我作了大量修改
4、原系统根本没使用到es, 但引入了es包,导致出错,我清理了
5、服务管理模块的apiId属性错误,导致无法修改和新增,我修复了。
6、增加了Dockerfile及构建镜像的脚本
下面是k8s部署文档:
apiVersion: v1
kind: ConfigMap
metadata:
name: qdata-config
namespace: qdata
data:
application-prod.yml: |
datasource:
type: mysql
# Spring配置
spring:
# redis 配置
redis:
# 地址
host: 10.16.10.103
# 端口,默认为6379
port: 6379
# 数据库索引
database: 2
# 密码
password: risk@tmp
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
rabbitmq:
host: 10.16.10.103
port: 5672
username: guest
password: guest
listener:
simple:
acknowledge-mode: manual
concurrency: 1
max-concurrency: 10
datasource:
druid:
stat-view-servlet:
# 是否启用Druid的监控统计功能
enabled: false
# 访问Druid监控页面的用户名
loginUsername: qdata
# 访问Druid监控页面的密码
loginPassword: 123456
dynamic:
druid:
# 连接池初始化时创建的连接数量
initial-size: 5
# 连接池中最小空闲连接数
min-idle: 5
# 连接池中最大活动连接数
maxActive: 20
# 连接池等待连接的最长时间(毫秒)
maxWait: 60000
# 数据库连接超时时间(毫秒)
connectTimeout: 30000
# Socket超时时间(毫秒)
socketTimeout: 60000
# 空闲连接的检测周期(毫秒)
timeBetweenEvictionRunsMillis: 60000
# 最小空闲连接的存活时间(毫秒)
minEvictableIdleTimeMillis: 300000
# 用于检测连接是否有效的SQL语句
validationQuery: SELECT 1 FROM DUAL
# 是否在空闲时检测连接的有效性
testWhileIdle: true
# 借用连接时是否测试连接的有效性
testOnBorrow: false
# 归还连接时是否测试连接的有效性
testOnReturn: false
# 是否打开连接池的PreparedStatement缓存
poolPreparedStatements: true
# 每个连接池的PreparedStatement缓存上限
maxPoolPreparedStatementPerConnectionSize: 20
# 配置Druid的过滤器
filters: stat,slf4j
# Druid连接属性配置
connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
datasource:
# 主库数据源配置
master:
# 动态加载的配置属性
driver-class-name: ${${datasource.type}.driver-class-name}
url: ${${datasource.type}.url}
username: ${${datasource.type}.username}
password: ${${datasource.type}.password}
# test:
# driver-class-name: dm.jdbc.driver.DmDriver
# url: jdbc:dm://127.0.0.1:5236/MOON?STU&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&schema=MOON&serverTimezone=Asia/Shanghai
# username: MOON
# password: 1234567890
# 达梦配置文件
dm8:
# JDBC驱动类名
driver-class-name: dm.jdbc.driver.DmDriver
# 主库JDBC连接URL
url: jdbc:dm://127.0.0.1:5236/QDATA?STU&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&schema=QDATA&serverTimezone=Asia/Shanghai
# 主库用户名
username: QDATA
# 主库密码
password: 密码
# 人大金仓配置文件
kingbase8:
# JDBC驱动类名
driver-class-name: com.kingbase8.Driver
# 主库JDBC连接URL
url: jdbc:kingbase8://127.0.0.1:54321/qdata_dev?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC¤tSchema=qdata
# 主库用户名
username: kingbase
# 主库密码
password: 123456
# Oracle12c 配置文件
oracle:
# JDBC驱动类名
driver-class-name: oracle.jdbc.OracleDriver
# 主库JDBC连接URL
url: jdbc:oracle:thin:@127.0.0.1:1521:xe?oracle.jdbc.timezoneAsRegion=true&oracle.jdbc.defaultTimezone=Asia/Shanghai¤tSchema=ANIVIA
# 主库用户名
username: ANIVIA
# 主库密码
password: ANIVIA
# 调度器相关配置
ds:
# 调度器api前缀
base_url: http://10.16.10.102:12345/dolphinscheduler
# 数据质量服务组件HTTP地址
quality_url: http://127.0.0.1:8083/quality/qualityTaskExecutor/runExecuteTask
# 数据质量任务dolphinscheduler项目编码
http_quality_projectCode: 134799536571008
# 调度器令牌(可以自行修改)
token: 93011f9ab90a5e14bb448fad57582c51
# 资源中心路径
resource_url: /dolphinscheduler/
# spark相关配置
spark:
#spark-master的地址
master_url: spark://127.0.0.1:7077
#jar包在ds的路径
main_jar: file:/dolphinscheduler/default/resources/spark-jar/qdata-etl-3.8.8.jar
#jar main入口
main_class: tech.qiantong.qdata.spark.etl.EtlApplication
# hdfs相关配置
hdfs:
#NameNode RPC地址(客户端连接 HDFS 的入口地址)
url: hdfs://127.0.0.1:8020
# 调度器 Redis 配置(用于获取最新数据源信息,保障任务执行)
redis:
# 地址
host: 127.0.0.1
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
path:
# 数据质量服务前缀
quality_url: http://127.0.0.1:8083/quality/qualityTaskExecutor
mysql:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://10.16.10.103:3307/qdata?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: qdata
password: Qd123#@!
# Redis配置
redis:
host: 10.16.10.103
port: 6379
database: 2
# Spark配置(如果用到数据汇聚模块)
spark:
master_url: spark://<Spark Master IP>:7077
# 日志级别
logging:
level:
tech.qiantong: INFO
application.yml: |
qdata:
# 名称
name: qData
# 版本
version: 3.8.8
# 版权年份
copyrightYear: 2024
# 文件路径 示例( Windows配置D:/qdata/uploadPath,Linux配置 /home/qdata/uploadPath) -- 需要和 file 模块保持一致
profile: ${user.dir}/upload/
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
captchaType: math
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
port: 8080
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# 连接数满后的排队数,默认为100
accept-count: 1000
threads:
# tomcat最大线程数,默认为200
max: 800
# Tomcat启动初始化的线程数,默认值10
min-spare: 100
# 日志配置
logging:
level:
tech.qiantong: debug
org.springframework: warn
# 用户配置
user:
password:
# 密码最大错误次数
maxRetryCount: 5
# 密码锁定时间(默认10分钟)
lockTime: 10
#万能密码 配置为空则不生效
universalPassword: gfh78h23789#$gfdy845
# Spring配置
spring:
cache:
type: jcache
jcache:
config: classpath:ehcache.xml
thymeleaf:
prefix: classpath:/dist/
mode: HTML
encoding: utf-8
cache: false
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: dev # 默认激活的环境,可以在启动时覆盖
config:
import:
- "application-${spring.profiles.active}.yml"
- "classpath:application-auth-${spring.profiles.active}.yml"
- "classpath:application-file-${spring.profiles.active}.yml"
# 示意:引入业务模块配置文件(请按照项目情况调整)
- "classpath:application-system-${spring.profiles.active}.yml"
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 3000MB
# 设置总上传的文件大小
max-request-size: 3000MB
elasticsearch:
uris: http://10.16.10.96:9200,http://10.16.10.97:9200,http://10.16.10.98:9200
# 服务模块
devtools:
restart:
# 热部署开关
enabled: false
# token配置
token:
# 令牌自定义标识
header: Authorization
# 令牌自定义标识
rpHeader: token
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期(默认30分钟)
expireTime: 600
# MyBatis配置
# mybatis:
# 搜索指定包别名
# typeAliasesPackage: tech.qiantong.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
# mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
# configLocation: classpath:mybatis/mybatis-config.xml
# MyBatis Plus配置
mybatis-plus:
# 搜索指定包别名
typeAliasesPackage: tech.qiantong.**.dataobject,tech.qiantong.**.dataobject.assetchild, tech.qiantong.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
global-config:
# 关闭 MyBatis-Plus 的 Banner
banner: false
db-config:
# 主键类型 AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID
idType: AUTO
# 全局逻辑删除字段名
logic-delete-field: delFlag
# 逻辑已删除值(默认为1)
logic-delete-value: 1
# 逻辑未删除值(默认为0)
logic-not-delete-value: 0
# 字段验证策略之 insert,在 insert 的时候的字段验证策略 IGNORED 忽略 NOT_NULL 非NULL NOT_EMPTY 非空 DEFAULT 默认 NEVER 不加入 SQL
insertStrategy: NOT_NULL
# 字段验证策略之 update,在 update 的时候的字段验证策略
updateStrategy: NOT_NULL
# 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
where-strategy: NOT_NULL
mybatis-plus-join:
# 是否打印 mybatis plus join banner,默认true
banner: false
# 全局启用副表逻辑删除,默认true。关闭后关联查询不会加副表逻辑删除
sub-table-logic: true
# 拦截器MappedStatement缓存,默认 true
ms-cache: true
# 表别名(默认 t)
table-alias: t
# 副表逻辑删除条件的位置,支持 WHERE、ON,默认 ON
logic-del-type: on
# PageHelper分页插件
pagehelper:
helperDialect: mysql
supportMethodsArguments: true
params: count=countSql
# 防止XSS攻击
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
# Swagger 分组配置
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs
group-configs:
- group: 'system'
paths-to-match: '/**'
packages-to-scan: tech.qiantong.qdata.module.system.controller
- group: 'example'
paths-to-match: '/**'
packages-to-scan: tech.qiantong.qdata.module.example.controller
- group: 'ai'
paths-to-match: '/**'
packages-to-scan: tech.qiantong.qdata.module.ai.controller
# Swagger 增强配置
knife4j:
enable: true
documents:
-
group: 2.X版本
name: 接口签名
locations: classpath:sign/*
setting:
language: zh-CN
enable-swagger-models: true
enable-document-manage: true
swagger-model-name: 实体类列表
enable-version: false
enable-reload-cache-parameter: false
enable-after-script: true
enable-filter-multipart-api-method-type: POST
enable-filter-multipart-apis: false
enable-request-cache: true
enable-host: false
enable-host-text: 127.0.0.1:8080
enable-home-custom: true
home-custom-path: classpath:markdown/home.md
enable-search: false
enable-footer: false
enable-footer-custom: true
footer-custom-content: Apache License 2.0 | Copyright 2025-[江苏千桐科技有限公司])
enable-dynamic-parameter: false
enable-debug: true
enable-open-api: true
enable-group: true
cors: false
production: false
basic:
enable: true
username: test
password: 12313
## 工作流模块的访问地址
flyflow:
url: http://127.0.0.1:26859/
#ID生成器使用 为以后分布式不重复ID做应用
#工作机器ID(0~31)
id.workerId: 1
#数据中心ID(0~31)
id.datacenterId: 1
management:
endpoint:
health:
enabled: true
env:
enabled: true
health:
elasticsearch:
enabled: false
qdata-server.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: qdata-server
namespace: qdata
labels:
app: qdata-server
spec:
replicas: 1
selector:
matchLabels:
app: qdata-server
template:
metadata:
labels:
app: qdata-server
spec:
containers:
- name: qdata-server
image: 10.16.10.28:8088/qdata/qdata-server:1.1.2.1 # 替换为你的镜像地址
imagePullPolicy: Always
ports:
- containerPort: 8080
name: http
env:
- name: SPRING_PROFILES_ACTIVE
value: "prod"
- name: SPRING_CONFIG_LOCATION
value: "file:/app/config/" # 显式指定路径
volumeMounts:
- name: config
mountPath: /app/config # 挂载配置文件
resources:
requests:
memory: "2Gi"
cpu: "200m"
limits:
memory: "4Gi"
cpu: "2000m"
readinessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 10
livenessProbe:
httpGet:
path: /actuator/health
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 20
volumes:
- name: config
configMap:
name: qdata-config
---
apiVersion: v1
kind: Service
metadata:
name: qdata-server-service
namespace: qdata
spec:
selector:
app: qdata-server
ports:
- protocol: TCP
port: 8080
targetPort: 8080
name: http
type: ClusterIP
更多推荐


所有评论(0)