Bootstrap

可视化bi工具datart部署到k8s

目录

1. 前言

 2. 安装

2.1 mysql初始化

 2.2 datart配置文件持久化

2.3 文件挂载

2.4 部署

3. 登录及创建管理帐号


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

部署完成后首次登录需要注册一个帐号,做为组织的拥有者,自行配置即可完成后效果如下

;