migrating airflow to argo
1. 迁移动机
分布式管理工作流(不需要在一个python文件中定义)
易于复制部署
2. 迁移缺点
- 必须依赖于kubenetes,必须启动pod,不利于短时间任务的执行
3. 迁移步骤
数据迁移
工作流迁移
任务迁移
任务关系迁移
重新设定定时任务(利用K8s CronJob)
- 或者使用Argo的Cron WorkflowsCron Workflows - Argo Workflows - The workflow engine for Kubernetes
4. 迁移注意事项
4.1 获取触发时间
由于api不同,在任务中使用环境变量获取时间是不一样的。argo可以通过以下方法获取:
1 | {{= sprig.dateModify('-168h', sprig.toDate('2006-01-02T15:04:05Z07:00', sprig.date('2006-01-02T15:04:05Z07:00', workflow.creationTimestamp))) }} |
4.2 任务定义
由于每个任务都需要使用yaml文件定义,所以可能需要重复写非常多的yaml文件。可以使用模板或内联模板来复用(Inline Templates - Argo Workflows - The workflow engine for Kubernetes )
4.3 数据迁移
可以使用DBT工具转换。
问题:
- RDDs失败
- Python models不支持Incremental tables
- Use a Python model for the latest table and a SQL model for the incremental
4.4 其他注意事项
- 不能与Kubeflow并存
5. 迁移示例
5.1 原airflow代码
1 | from datetime import datetime |
5.2 argo工作流
1 | apiVersion: argoproj.io/v1alpha1 |
5.3 argo定时工作流
1 | apiVersion: argoproj.io/v1alpha1 |
5.4 模板
5.4.1 定义模板后引用
1 | apiVersion: argoproj.io/v1alpha1 |
注意:kubeflow不支持此模板配置方式
5.4.2 直接定义模板与工作流
1 | apiVersion: argoproj.io/v1alpha1 |
注意:kubeflow只支持此模板配置方式
5.4.3 内联模板
1 | apiVersion: argoproj.io/v1alpha1 |
注意:kubeflow不支持此模板配置方式
参考
探索数据处理管道到 Argo 工作流的迁移 - freee Developers Hub
Inline Templates - Argo Workflows - The workflow engine for Kubernetes
From Airflow to Argo Workflows and dbt Python models | Mercari Engineering
将数据管道迁移到 Argo 工作流的故事 - enechain 技术博客
Argo Workflows - The workflow engine for Kubernetes
Airflow to Argo migration at Github
云原生离线工作流编排利器 – 分布式工作流 Argo 集群 - OSCHINA - 中文开源技术交流社区
Cron Workflows - Argo Workflows - The workflow engine for Kubernetes
在不同的argo工作流中重用模板/步骤 - 腾讯云开发者社区 - 腾讯云
- Title: migrating airflow to argo
- Author: Ethereal
- Created at: 2025-05-29 15:31:04
- Updated at: 2025-05-29 18:12:04
- Link: https://ethereal-o.github.io/2025/05/29/migrating-airflow-to-argo/
- License: This work is licensed under CC BY-NC-SA 4.0.