Apache DevLake Kubernetes 部署指南
2025-07-10 07:01:01作者:鲍丁臣Ursa
概述
Apache DevLake 是一个开源的数据湖平台,专为开发者指标分析而设计。本文将详细介绍如何使用 Kubernetes 部署 Apache DevLake 及其相关组件。
部署架构
该 Kubernetes 部署方案包含以下核心组件:
- MySQL:作为数据存储后端
- Grafana:用于数据可视化
- Config UI:配置界面
- 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
部署后验证
-
检查所有 Pod 是否正常运行:
kubectl get pods -n devlake
-
访问各服务:
- Grafana:
http://<节点IP>:30002
- 配置界面:
http://<节点IP>:30004
- DevLake API:
http://<节点IP>:<NodePort>
- Grafana:
注意事项
- 生产环境建议使用持久化存储卷(PV/PVC)替代 hostPath
- 可根据需求调整资源配置(CPU/内存)
- 安全考虑应修改默认密码
- 高可用环境可增加副本数
通过以上步骤,您已成功在 Kubernetes 集群中部署了 Apache DevLake 平台,可以开始收集和分析开发者指标数据了。