1. 项目背景与核心挑战
在传统企业级数据调度场景中,我们常常面临基础环境隔离的特殊部署需求。最近刚完成某大型制造企业的数据中台升级项目,客户现场要求完全离线化部署DolphinScheduler工作流引擎与SeaTunnel数据集成工具链。这个案例非常典型——生产环境与互联网物理隔离,所有组件必须通过私有容器镜像仓库分发,且需要兼容客户已有的Kubernetes 1.20版本集群。
离线部署的核心痛点集中在三个方面:首先是依赖组件的完整获取,包括DolphinScheduler的数据库驱动、SeaTunnel的Connector插件等数十个间接依赖;其次是容器镜像的层级化管理,需要处理基础镜像(如JRE)、中间件镜像(如ZooKeeper)和应用镜像的版本匹配;最后是配置的固化传递,如何通过Helm Chart或Kustomize实现参数的一次性注入。这些在在线环境下通过简单helm install就能解决的问题,在离线场景中每个环节都可能成为拦路虎。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 离线环境准备工作
2.1 基础设施清单确认
在开始部署前,必须严格核对基础设施的版本矩阵。以下是经过验证的组件版本组合:
| 组件 | 版本要求 | 备注 |
|---|---|---|
| Kubernetes | ≥1.18且≤1.22 | 1.20.6为推荐生产版本 |
| Docker registry | Harbor 2.4+ | 需开启HTTPS和Basic Auth |
| Helm | 3.8+ | 禁用Tiller相关配置 |
| NFS Server | 4.2+ | 用于共享存储卷 |
| JDK | OpenJDK 11.0.12 | 需包含JCE无限制策略文件 |
特别注意:DolphinScheduler 2.0.5对Kubernetes API的兼容性存在已知问题,建议使用2.0.7及以上版本。我们最终选用DolphinScheduler 3.1.0与SeaTunnel 2.3.0的组合,这两个版本对K8s的ServiceAccount鉴权机制有更好的支持。
2.2 离线资源包制作
资源包需要分层级准备,以下是我们的目录结构设计:
code复制offline-package/
├── charts/ # Helm chart压缩包
│ ├── dolphinscheduler-1.1.0.tgz
│ └── seatunnel-0.4.0.tgz
├── images/ # 容器镜像归档
│ ├── base/ # 基础镜像层
│ │ ├── openjdk-11.tar
│ │ └── busybox-1.34.tar
│ ├── middleware/ # 中间件层
│ │ ├── zookeeper-3.7.tar
│ │ └── postgresql-13.tar
│ └── app/ # 应用层
│ ├── dolphinscheduler-3.1.0
