DolphinScheduler 3.1.9 Helm部署方案
核心规范:
- 部署路径:统一存放至 Linux 标准工具目录
/opt/dolphinscheduler-deploy(便于运维管理)- 适配环境:Ubuntu 24.04 LTS + k3s 集群 + Longhorn 分布式存储 + 外部 PostgreSQL + MetalLB(固定 IP 10.2.10.154)
- 部署方式:基于官方源码包本地 Helm 安装(无第三方仓库依赖,稳定不失效)
- 核心特性:Helm 自动创建 Longhorn 存储类、MetalLB 固定 IP 访问、禁用内置 PostgreSQL
一、方案概述
本方案将 DolphinScheduler 3.1.9 的源码包、配置文件等所有部署相关文件统一存放至 /opt/dolphinscheduler-deploy 目录(符合 Linux 系统工具目录规范),全程通过本地 Helm 安装,无需依赖第三方 Helm 仓库,同时实现:
- 自动创建适配 Longhorn 的
dolphinscheduler-longhorn存储类(无手动配置); - 通过 MetalLB 分配固定 IP 10.2.10.154 直接访问 Web UI;
- 对接外部 PostgreSQL 数据库,通过官方标准Secret管理数据库密码,保障数据安全;
- 完全对齐官方模板逻辑,避免密码读取失败问题。
二、前置环境确认
2.1 基础依赖检查
# 1. 确认 k3s 集群节点状态(所有节点需为 Ready 状态)
kubectl get nodes
# 2. 确认 Longhorn 存储集群正常(所有 Pod 为 Running)
kubectl get pods -n longhorn-system
# 3. 确认 Helm 3.x 版本可用
helm version
# 4. 确认 MetalLB 已部署且 IP 池包含 10.2.10.154(无需重复部署)
kubectl get ipaddresspool -n metallb-system
2.2 创建标准化部署目录
# 创建 /opt 下的专属部署目录(统一管理所有文件)
sudo mkdir -p /opt/dolphinscheduler-deploy
sudo chmod 755 /opt/dolphinscheduler-deploy
# 确认目录创建成功
ls -ld /opt/dolphinscheduler-deploy
三、数据库准备(外部 PostgreSQL)
3.1 初始化 PostgreSQL 数据库
# 1. 建库
CREATE DATABASE dolphinscheduler;
# 2. 切换到dolphinscheduler数据库
\c dolphinscheduler
CREATE USER dolphinscheduler WITH PASSWORD 'dolphinscheduler';
# 3. 赋权public schema核心权限(逐条执行,缺一不可)
# 3.1 授予schema的USAGE权限(基础访问权限)
GRANT USAGE ON SCHEMA public TO dolphinscheduler;
# 3.2 授予schema的CREATE权限(创建表/序列等)
GRANT CREATE ON SCHEMA public TO dolphinscheduler;
# 3.3 授予当前schema下所有对象的权限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dolphinscheduler;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO dolphinscheduler;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO dolphinscheduler;
# 3.4 授予未来创建对 象的默认权限
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO dolphinscheduler;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO dolphinscheduler;
# 4. 退出PostgreSQL
\q
四、核心部署步骤(基于官方源码包)
4.1 下载并解压官方源码包(存放至 /opt)
helm pull oci://registry-1.docker.io/apache/dolphinscheduler-helm --version 3.1.9
tar -xvf dolphinscheduler-helm-3.1.9.tgz -C /opt/dolphinscheduler-deploy/
cd /opt/dolphinscheduler-deploy/dolphinscheduler-helm/
4.2 验证 Longhorn 存储类
# 1. 创建存储类配置文件
cat > /opt/dolphinscheduler-deploy/dolphinscheduler-helm/dolphinscheduler-longhorn-sc.yaml << EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: dolphinscheduler-longhorn
annotations:
storageclass.kubernetes.io/is-default-class: "false" # 不设为默认存储类
provisioner: driver.longhorn.io # Longhorn驱动(必须已安装Longhorn)
parameters:
numberOfReplicas: "2" # 副本数( 测试环境1个即可)
staleReplicaTimeout: "30"
fromBackup: ""
reclaimPolicy: Delete # 删除PVC时自动删除PV
allowVolumeExpansion: true # 允许扩容
EOF
# 2. 应用存储类配置
kubectl apply -f /opt/dolphinscheduler-deploy/dolphinscheduler-helm/dolphinscheduler-longhorn-sc.yaml
# 3. 验证存储类创建成功
kubectl get sc dolphinscheduler-longhorn