目录
1. 前言
datart 是新一代数据可视化开放平台,支持各类企业数据可视化场景需求,如创建和使用报表、仪表板和大屏,进行可视化数据分析,构建可视化数据应用等。
官方部署文档可参考:部署 | datart (running-elephant.github.io)
官方有源码安装和docker部署两种方式,这里通过k8s进行部署,需要准备mysql(外置环境),pvc存储(这里用nfs)
2. 安装
2.1 mysql初始化
支持mysql 5.7+以上,这里使用mysql 8.0,1.0.0-beta.2 版本以前,需要手动执行bin/datart.sql来初始化数据库。此版本及以上版本,创建好数据库即可,在初次连接时会自动初始化数据库
# datart 目前支持配置 MySQL 作为应用数据库;需要 MySQL 5.7 及以上版本。配置步骤如下:
# 创建数据库,指定数据库编码为 utf8
mysql> CREATE DATABASE `datart` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
创建帐号并授权
CREATE USER 'datart'@'%' IDENTIFIED BY 'password';
GRANT privileges ON datart.* TO 'datart'@'%';
flush privileges;
2.2 datart配置文件持久化
将配置文件datart.conf通过configmap进行管理,配置文件示例如下
# datart.conf
# ====== 应用数据库配置 ======
# 数据库IP或域名
datasource.ip=***
# 数据库端口
datasource.port=3306
# 数据库名称
datasource.database=datart
# 用户名
datasource.username=datart
# 密码
datasource.password=***
# ====== 应用服务器配置 ======
# 服务器端口
server.port=8080
# 服务器地址
# Web 服务所绑定的本机网卡地址,一般为内网地址
server.address=0.0.0.0
# ====== datart 全局配置 ======
# 应用主页地址
# 浏览器访问应用主页输入的地址,一般为公网地址
datart.address=http://127.0.0.1:8080
# Chrome WebDriver 地址
datart.webdriver-path=http://127.0.0.1:4444/wd/hub
# 是否允许注册账户
datart.user.register=true
# 注册账户时,是否需要邮件激活
datart.send-mail=false
# 注册邮件有效期/小时, 默认48小时
datart.register.expire-hours=
# 邀请邮件有效期/小时, 默认48小时
datart.invite.expire-hours=
# 租户管理模式:platform-平台(默认),team-团队
datart.tenant-management-mode=team
# redis缓存
redis.port=6379
redis.host=**
redis.password=***
保存以上配置文件为:datart.conf,然后通过命令创建configmap
kubectl create configmap datart-conf-cm --from-file=datart.conf
2.3 文件挂载
在默认情况下,用户在应用中生成文件(头像、文件数据源等)保存在 files 路径下。为保证在应用升级时这些文件得以保留,可以将这个路径挂载到pvc存储;容器中挂载路径:/datart/files 即可。
这里使用nfs存储创建pvc: datart-files-pvc,yaml文件如下
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/bound-by-controller: 'yes'
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 20Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: datart-files-pvc
csi:
driver: nasplugin.csi.alibabacloud.com
volumeAttributes:
path: /datart-files
server: ****.nas.aliyuncs.com
vers: '3'
volumeHandle: datart-pv
persistentVolumeReclaimPolicy: Retain
storageClassName: nas
volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: 'yes'
pv.kubernetes.io/bound-by-controller: 'yes'
name: datart-files-pvc
namespace: bigdata-prod
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 20Gi
selector:
matchLabels:
alicloud-pvname: datart-pv
storageClassName: nas
volumeMode: Filesystem
volumeName: datart-pv
2.4 部署
镜像使用官方最新版本:datart/datart
服务端口:8080
通过ingress配置域名访问
部署文件deployment.yaml如下
apiVersion: v1
kind: Service
metadata:
name: datart
spec:
selector:
app: datart
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: datart
labels:
app: datart
spec:
replicas: 1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
selector:
matchLabels:
app: datart
template:
metadata:
labels:
app: datart
spec:
restartPolicy: "Always"
containers:
- name: datart
image: datart/datart
imagePullPolicy: "Always"
resources:
limits:
cpu: "4000m"
memory: "2Gi"
requests:
cpu: "50m"
memory: "1Gi"
ports:
- containerPort: 8080
name: http
protocol: TCP
volumeMounts:
- name: datart-conf
mountPath: /datart/config/datart.conf
subPath: datart.conf
- name: datart-files
mountPath: /datart/files
readinessProbe:
failureThreshold: 3
periodSeconds: 5
initialDelaySeconds: 30
successThreshold: 1
tcpSocket:
port: 8080
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
volumes:
- name: datart-conf
configMap:
name: datart-conf-cm
- name: datart-files
persistentVolumeClaim:
claimName: datart-files-pvc
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: datart-ingress
spec:
ingressClassName: nginx
rules:
- host: datart.test.cn
http:
paths:
- backend:
service:
name: datart
port:
number: 8080
path: /
pathType: Prefix
部署命令
kubectl apply -f deployment.yaml
3. 登录及创建管理帐号
打开ingress配置的域名: http://datart.test.cn
部署完成后首次登录需要注册一个帐号,做为组织的拥有者,自行配置即可完成后效果如下