Dagu vs Argo Workflows
Argo Workflows 运行在 Kubernetes 上,Dagu 运行在普通机器上。
两者都定义 DAG 并按顺序运行步骤。Argo Workflows 内置于 Kubernetes,把每个步骤调度为 pod。Dagu 是一个调用你现有命令的单一二进制,没有需要运维的集群。
name: nightly-ops
schedule: "0 2 * * *"
steps:
- id: extract
run: python scripts/extract.py
- id: transform
run: ./bin/transform
retry_policy:
limit: 3
depends: [extract]
- id: notify
run: ./scripts/slack-success.sh
depends: [transform]自包含的单一二进制,无需 Kubernetes 集群
用声明式 YAML 运行现有命令
无需外部 database 或 message broker
为 shell、Docker、HTTP、SSH、SQL、子工作流和 AI Agent 提供 executor
At a glance
Argo Workflows vs. Dagu 一览
普通机器上的单一二进制,由本地文件支撑。
带有 workflow controller 的 Kubernetes 集群。
一条命令:shell、Docker、HTTP、SSH、SQL、子工作流或 AI Agent。
在集群上作为 pod 运行的容器。
在你已有主机上的运维任务、脚本和混合流水线。
Kubernetes 原生、容器密集或大规模 ML 流水线。
In depth
Where each tool fits
底层无需集群的编排
Argo Workflows 假定有一个运行中的 Kubernetes 集群,以及把每个步骤变成 pod 的 controller。Dagu 没有这种要求。你把一个二进制放到服务器、笔记本或 VM 上,它就能运行。
- 在普通机器上运行,无 Kubernetes、无 controller、无 etcd。
- 把状态保存在本地文件里,而不是单独的 database 或 broker。
- 先本地起步,负载增长时再转到队列或分布式模式。
步骤是命令,不只是容器
在 Argo Workflows 里,每个步骤都是运行在 pod 中的容器。Dagu 也能运行容器,但它还能直接调用 shell 脚本、HTTP 端点、SSH 命令、SQL 查询、子工作流或 AI Agent 步骤。
- 直接使用已有的脚本和二进制,无需把每个都打包成 image。
- 在同一个工作流里混用 Docker 步骤与 shell、HTTP、SSH。
- 在内置 Web UI 中查看运行、日志和历史。
何时应改用 Argo Workflows
如果 Kubernetes 已经是你的平台,Argo Workflows 更合适。它是 Kubernetes 原生的,把每个步骤调度为独立 pod,并面向大量容器 fan-out 而设计。Dagu 不做这些。
- 你运行在 Kubernetes 上,希望工作流以 CRD 形式与其他清单并列定义。
- 你需要为每个任务做 pod 调度、node selector 和集群 autoscaling。
- 你的流水线会一次性向多个节点扇出数千个容器。
FAQ
Practical questions before adopting Dagu
Dagu 能替代 Argo Workflows 吗?
并非对所有团队都能。如果你已标准化在 Kubernetes 上,并希望每个步骤作为 pod 运行,那么 Argo Workflows 是合适的工具。如果你想在普通机器上编排命令而不运维集群,Dagu 更合适。
Dagu 能不依赖 Kubernetes 运行吗?
可以。Dagu 是一个自包含的单一二进制,可在服务器、VM 或笔记本上运行。它无需 Kubernetes 集群、外部 database 或 message broker。
Dagu 还能运行容器吗?
可以。Dagu 有一个 Docker executor,用于需要容器的步骤。区别在于,容器只是 shell、HTTP、SSH、SQL 和子工作流步骤之外的一个选项,而非唯一的执行单元。
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.