Dataflow 部署指南
📘 概述
CSGHUB Dataflow 是 CSGHub 平台中的数据流管理与标注子系统,用于处理模型训练数据、标注任务、数据预处理与分发等流程。
通过 Helm Chart 部署,可以快速在 Kubernetes 环境中运行 Dataflow 及其依赖的 Label Studio、Redis、PostgreSQL、MongoDB 等组件。
本 Chart 既支持 一键安装全部依赖(内置模式),也支持 连接外部托管资源。
⚙️ 环境要求
| 项目 | 说明 |
|---|---|
| Kubernetes 版本 | v1.28+ |
| Helm 版本 | v3.12+ |
| 网络要求 | 集群节点需能访问 CSGHub 主服务(externalUrl) |
| 权限要求 | 具备创建命名空间、Service、PVC、Ingress 等资源的权限 |
| 集群要求 | 需要支持 ReadWriteMany 的存储卷 |
🧩 1. 准备工作
添加 CSGHub Chart 仓库
helm repo add csghub https://charts.opencsg.com/repository/csghub
helm repo update
创建命名空间(可选)
kubectl create namespace csghub
🏗️ 2. 部署 Dataflow
基础安装(内置数据库与缓存)
如果你仅用于测试或开发环境,可直接使用默认配置:
-
externalUrlhelm get notes csghub -n csghub | grep -A 6 'Access your CSGHub'通过以上命令获取 CSGHub 访问地址。
-
执行部署操作
helm install dataflow csghub/dataflow \
--namespace csghub \
--create-namespace \
--set global.ingress.domain="example.com" \
--set externalUrl="<csghub externalUrl>" \
--set dataflow.postgresql.database="csghub_dataflow" \
--set labelStudio.postgresql.database="csghub_label_studio"
此方式会自动启动:
- Dataflow 主服务
- Label Studio 标注服务
- 内置 PostgreSQL、Redis、MongoDB
- 内置 NGINX Ingress 控制器
使用外部资源
建议在生产环境中使用外部托管数据库与缓存服务:
helm install dataflow csghub/dataflow \
--namespace csghub \
--create-namespace \
--set dataflow.postgresql.database="csghub_dataflow" \
--set labelStudio.postgresql.database="csghub_label_studio" \
-f custom-values.yaml
示例 custom-values.yaml:
global:
ingress:
domain: "csghub.company.com"
tls:
enabled: true
secretName: "csghub-tls"
postgresql:
enabled: false
external:
host: "pg.company.com"
port: 5432
user: "csghub"
password: "******"
sslmode: "require"
redis:
enabled: false
external:
host: "redis.company.com"
port: 6379
password: "******"
mongo:
enabled: false
external:
host: "mongo.company.com"
port: 27017
user: "admin"
password: "******"
externalUrl: "https://csghub.company.com"
⚙️ 3. 主要配置说明
全局配置(global)
| 参数 | 默认值 | 说明 |
|---|---|---|
| global.edition | ee | 部署版本:社区版(ce) / 企业版(ee) |
| global.ingress.domain | example.com | 访问域名基础地址 |
| global.image.tag | v1.12.0 | 镜像版本号 |
| global.persistence.size | 10Gi | 默认持久化卷大小 |
| global.postgresql.enabled | true | 启用内置 PostgreSQL |
| global.redis.enabled | true | 启用内置 Redis |
| global.mongo.enabled | true | 启用内置 MongoDB |
Dataflow 服务配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| externalUrl | https://csghub.example.com | CSGHub 主系统访问地址 |
| dataflow.image.repository | opencsghq/dataflow | Dataflow 镜像 |
| dataflow.image.tag | v1.12.0 | 镜像版本号 |
| dataflow.persistence.size | 100Gi | 数据流持久化卷大小 |
| dataflow.postgresql | 可覆盖默认 PostgreSQL 配置 | |
| dataflow.redis | 可覆盖默认 Redis 配置 | |
| dataflow.mongo | 可覆盖默认 MongoDB 配置 |
Worker 配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| worker.logging.level | info | Celery Worker 日志等级 |
Label Studio 配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| labelStudio.image.repository | opencsghq/label-studio | Label Studio 镜像 |
| labelStudio.image.tag | v1.12.0 | 镜像版本 |
| labelStudio.persistence.size | 100Gi | 标注数据持久化卷大小 |
| labelStudio.securityContext.runAsUser | 0 | 容器运行用户 UID |
| labelStudio.postgresql.database | "csghub_label_studio" | 标注数据库名 |
内置第三方组件
| 组件 | 参数 | 默认值 | 说明 |
|---|---|---|---|
| PostgreSQL | postgresql.image.repository | opencsghq/postgres | 内置数据库镜像 |
| postgresql.databases | [csghub_dataflow, csghub_label_studio] | 启动时自动创建的数据库 | |
| postgresql.persistence.size | 50Gi | 存储大小 | |
| Redis | redis.image.repository | redis | 缓存镜像 |
| redis.persistence.size | 10Gi | 持久化卷大小 | |
| MongoDB | mongo.image.repository | opencsghq/mongo | 内置 Mongo 镜像 |
| mongo.persistence.size | 10Gi | 存储大小 |
🔍 4. 验证部署
检查 Pod 状态:
kubectl get pods -n csghub
验证访问:
kubectl get svc -n csghub
功能验证需要对接到 CSGHub 。
🔄 5. 升级与卸载
升级 Chart
helm upgrade dataflow csghub/dataflow -n csghub -f custom-values.yaml
卸载 Chart
helm uninstall dataflow -n csghub-dataflow
🧠 常见问题(FAQ)
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Dataflow 无法访问主系统 | externalUrl 未正确配置 | 确认地址与 TLS 配置 |
| Label Studio 启动失败 | 数据库或 PVC 配置错误 | 检查 PostgreSQL/Mongo 挂载路径 |
| 镜像拉取失败 | 私有仓库未配置凭据 | 添加 image.pullSecrets |
| Redis/Mongo 未启动 | 与外部资源配置冲突 | 禁用内置后重新部署 |