首页
/ Apache DevLake Kubernetes 部署指南

Apache DevLake Kubernetes 部署指南

2025-07-10 07:01:01作者:鲍丁臣Ursa

概述

Apache DevLake 是一个开源的数据湖平台,专为开发者指标分析而设计。本文将详细介绍如何使用 Kubernetes 部署 Apache DevLake 及其相关组件。

部署架构

该 Kubernetes 部署方案包含以下核心组件:

  1. MySQL:作为数据存储后端
  2. Grafana:用于数据可视化
  3. Config UI:配置界面
  4. DevLake 核心服务:数据处理和分析引擎

详细部署步骤

1. 创建命名空间

首先创建一个专用的命名空间 devlake,用于隔离 DevLake 相关资源:

apiVersion: v1
kind: Namespace
metadata:
  name: devlake

2. 配置管理

使用 ConfigMap 集中管理环境变量配置:

apiVersion: v1
kind: ConfigMap
metadata:
  name: devlake-config
  namespace: devlake
data:
  # 数据库相关配置
  MYSQL_USER: merico
  MYSQL_PASSWORD: merico
  MYSQL_DATABASE: lake
  MYSQL_ROOT_PASSWORD: admin
  MYSQL_URL: mysql:3306
  
  # Grafana 配置
  GF_SERVER_ROOT_URL: http://YOURDOMAIN:30002/grafana
  GF_USERS_DEFAULT_THEME: "light"
  
  # DevLake 核心配置
  DB_URL: mysql://merico:merico@mysql:3306/lake?charset=utf8mb4&parseTime=True
  DEVLAKE_ENDPOINT: devlake.devlake.svc.cluster.local:8080
  GRAFANA_ENDPOINT: grafana.devlake.svc.cluster.local:3000
  LOGGING_DIR: /app/logs

3. MySQL 部署

MySQL 作为数据存储后端,使用官方 MySQL 8 镜像:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: devlake
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: mysql
          image: mysql:8
          ports:
            - containerPort: 3306
          volumeMounts:
            - mountPath: /var/lib/mysql
              name: data
      volumes:
        - name: data
          hostPath:
            path: /var/lib/mysql

创建对应的 Service 以便其他组件访问:

apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: devlake
spec:
  ports:
    - protocol: TCP
      port: 3306
      targetPort: 3306

4. Grafana 部署

Grafana 用于数据可视化,使用 DevLake 提供的定制仪表盘镜像:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: grafana
  namespace: devlake
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: grafana
          image: apache/devlake-dashboard:latest
          ports:
            - containerPort: 3000

创建 NodePort 类型的 Service 以便外部访问:

apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: devlake
spec:
  type: NodePort
  ports:
    - protocol: TCP
      port: 3000
      targetPort: 3000
      nodePort: 30002

5. 配置界面部署

配置界面使用专用镜像:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: config-ui
  namespace: devlake
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: config-ui
          image: apache/devlake-config-ui:latest
          ports:
            - containerPort: 4000

同样创建 NodePort Service:

apiVersion: v1
kind: Service
metadata:
  name: config-ui
  namespace: devlake
spec:
  type: NodePort
  ports:
    - protocol: TCP
      port: 4000
      targetPort: 4000
      nodePort: 30004

6. DevLake 核心服务部署

核心服务部署配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: devlake
  namespace: devlake
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: devlake
          image: apache/devlake:latest
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: config
              mountPath: "/app/.env"
      volumes:
        - name: configdir
          hostPath:
            path: /var/lib/devlake
            type: DirectoryOrCreate
        - name: config
          hostPath:
            path: /var/lib/devlake/env
            type: FileOrCreate

创建对应的 Service:

apiVersion: v1
kind: Service
metadata:
  name: devlake
  namespace: devlake
spec:
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080

部署后验证

  1. 检查所有 Pod 是否正常运行:

    kubectl get pods -n devlake
    
  2. 访问各服务:

    • Grafana: http://<节点IP>:30002
    • 配置界面: http://<节点IP>:30004
    • DevLake API: http://<节点IP>:<NodePort>

注意事项

  1. 生产环境建议使用持久化存储卷(PV/PVC)替代 hostPath
  2. 可根据需求调整资源配置(CPU/内存)
  3. 安全考虑应修改默认密码
  4. 高可用环境可增加副本数

通过以上步骤,您已成功在 Kubernetes 集群中部署了 Apache DevLake 平台,可以开始收集和分析开发者指标数据了。