Dataflow
1. 概述
Dataflow 是 CSGHub 平台中的数据流管理与标注子系统,用于处理模型训练数据、标注任务、数据预处理与分发等流程。
通过 Helm Chart 部署,可以快速在 Kubernetes 环境中运行 Dataflow 及其依赖的 Label Studio 和 PostgreSQL 等组件。Dataflow 服务已不再需要 Redis 和 MongoDB(自 chart v2.2.0 移除)。本 Chart 既支持 一键安装全部依赖(内置模式),也支持 连接外部托管资源。
2. 环境要求
| 项目 | 说明 |
|---|---|
| Kubernetes 版本 | v1.33+ |
| Helm 版本 | v3.12+ |
| 网络要求 | 集群节点需能访问 CSGHub 主服务(externalUrl) |
| 权限要求 | 具备创建命名空间、Service、PVC、Gateway 等资源的权限 |
| 集群要求 | 需要支持 ReadWriteOnce 的存储卷(v2.2.0 从 RWX 改为 RWO) |
3. 开始部署
-
添加 Helm 仓库
helm repo add csghub https://charts.opencsg.com/csghubhelm repo update -
创建命名空间(可选)
kubectl create namespace csghub -
部署 Dataflow
⚠️ standalone 模式下
externalUrl必填,且需保证从 Dataflow 所在集群可正常访问该 URL。helm get notes csghub -n csghub | grep -A 6 'Access your CSGHub'通过以上命令获取 CSGHub 访问地址。
-
执行部署操作
💡 提示:建议将自定义配置写入 custom-values.yaml,方便后续升级与版本管理。
helm install dataflow csghub/dataflow \--namespace csghub \--create-namespace \--set global.gateway.external.domain="example.com" \--set externalUrl="<csghub externalUrl>" \--set dataflow.postgresql.database="csghub_dataflow" \--set labelStudio.postgresql.database="csghub_label_studio"国内部署(使用国内镜像仓库加速拉取镜像):
helm install dataflow csghub/dataflow \--namespace csghub \--create-namespace \--set global.gateway.external.domain="example.com" \--set externalUrl="<csghub externalUrl>" \--set dataflow.postgresql.database="csghub_dataflow" \--set labelStudio.postgresql.database="csghub_label_studio" \--set global.image.registry="registry.opencsg.com" \--set global.imageRegistry="registry.opencsg.com/opencsghq"此方式会自动启动:
-
Dataflow 主服务
-
Label Studio 标注服务
-
内置 PostgreSQL
-
内置 Gateway API Controller 控制器
ℹ️ v2.2.0 起 Dataflow 不再需要 Redis 和 MongoDB 依赖。 仅需 PostgreSQL。
-
4. 使用外部资源
建议在生产环境中使用外部托管数据库与缓存服务:
helm upgrade --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:
gateway:
external:
domain: "company.com"
tls:
enabled: true
secretName: "csghub-tls"
postgresql:
enabled: false
external:
host: "pg.company.com"
port: 5432
user: "csghub"
password: "******"
sslmode: "require"
externalUrl: "https://csghub.company.com"
ℹ️ chart v2.2.0 起 Dataflow 不再依赖 Redis 和 MongoDB。 当前 Dataflow chart 中已无
mongo.*/redis.*配置块,仅需 PostgreSQL。
5. 配置说明
5.1 全局配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| global.gateway.external.domain | csghub.example.com | 访问域名 |
| global.image.tag | v2.5.0 | 镜像版本号 |
| global.persistence.size | 10Gi | 默认持久化卷大小 |
| global.postgresql.enabled | true | 启用内置 PostgreSQL |
| global.postgresql.existingSecret | "" | 引用已有 Secret 提供 PostgreSQL 连接信息,仅在 enabled=false 时生效 |
💡 使用外部 PostgreSQL 时,也可以通过
global.postgresql.existingSecret引用一个已存在的 Secret 来提供连接信息(无需把账号密码写进values.yaml)。该 Secret 必须提前在 release 命名空间内创建,键名(需 base64 编码)支持:POSTGRES_HOST(必填)、POSTGRES_PORT、POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_SSLMODE。
5.2 服务配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| externalUrl | https://csghub.example.com | ⚠️ 必填(standalone)。CSGHub 主系统访问地址 |
| dataflow.image.repository | opencsghq/dataflow | Dataflow 镜像 |
| dataflow.image.tag | v2.5.0-api | Dataflow 镜像 tag(v2.2.0 注意含 -api 后缀) |
| dataflow.persistence.size | 50Gi | 数据流持久化卷大小(v2.1.x 为 100Gi) |
| dataflow.persistence.accessModes | ["ReadWriteOnce"] | PV 访问模式(v2.2.0 从 ReadWriteMany 改为) |
| dataflow.postgresql | 可覆盖默认 PostgreSQL 配置 |
5.3 Label Studio配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| labelStudio.image.repository | opencsghq/label-studio | Label Studio 镜像 |
| labelStudio.image.tag | v2.5.0 | 镜像版本 |
| labelStudio.persistence.size | 10Gi(继承 global.persistence.size) | 标注数据持久化卷大小;如需更大请显式设置 |
| labelStudio.securityContext.runAsUser | 0 | 容器运行用户 UID |
| labelStudio.postgresql.database | "csghub_label_studio" | 标注数据库名 |