Apache Airflow 的核心架构围绕 DAG(有向无环图)展开,而在实际生产环境中,我们经常需要解决一个关键问题:如何将开发完成的 DAG 安全高效地部署到运行的 Airflow 集群中。
最近梳理我在 Apache Airflow 平台的运维经验时,发现一个有趣的现象:许多部署过程中遇到的典型问题,其实在官方文档中早有详细说明,只是第一次实践时容易忽视这些细节。今天这篇文章,我将结合《Airflow Ops: Development and Deployment》这一章的内容,把自己对 Airflow 开发与部署的理解整理成笔记式技术分享,既为同行提供参考,也算是对我个人经验的系统性总结。
一、前置要求
为更好地理解本文内容,建议您已掌握以下基础技能:
• 熟悉 Airflow 的核心概念与组件架构;
• 至少使用过一种主流的 CI/CD 工具链(如 Jenkins、GitLab CI、GitHub Actions 或 Travis CI);
• 对 Docker 及容器化应用有实际操作经验,了解镜像构建与分发流程。
考虑到不同企业的技术栈存在差异,本文将不深入具体 CI/CD 的实现细节,而是聚焦于总结通用部署模式,大家可以根据实际环境灵活调整实施方案。
二、DAG 部署方式
在 Airflow 生产环境中,我们最常需要解决的核心问题就是:如何将开发完成的 DAG 部署到运行的 Airflow 集群。
目前主流的部署模式可分为两类:
1. Bundling(打包部署)
最直接的部署方案:将 DAG 文件与 Airflow 运行环境打包到同一个镜像中。典型工作流程包括:
• 在构建镜像时安装 Airflow 核心组件;
• 将 DAG 文件复制到镜像内指定目录;
• 为镜像打上版本标签后进行分发。
主要优势:
• 所有组件(Airflow 核心、插件、DAG)版本完全同步,确保环境一致性;
• 部署完成后即可运行任务,几乎不会出现“某台机器缺少特定 DAG”的状况。
潜在不足:
• 镜像体积较大、构建时间较长;
• 每次修改 DAG 都需要重启所有服务,可能导致较长的服务中断。
