Apache Airflow 部署与生产2025 年 6 月 8 日 | 9 分钟阅读 引言Apache Airflow 是一个开源平台,允许用户以编程方式编写、调度和监控工作流。它在编排复杂数据管道和工作流方面越来越受欢迎,尤其是在数据工程、机器学习和DevOps环境中。 用于 Airflow 的 Docker Compose要使用 Docker 部署 Airflow,通常会使用 Docker Compose,它是一个用于定义和管理多容器 Docker 应用程序的工具。Docker Compose 通过允许用户在一个 YAML 文件中定义整个应用程序堆栈,简化了 Airflow 组件(包括 Web 服务器、调度器和数据库)的部署。 在典型的 Airflow Docker Compose 设置中,会定义几个服务:
设置 Airflow 的 Docker 步骤以下是使用 Docker 部署 Apache Airflow 的关键步骤: 步骤 1:安装 Docker 和 Docker Compose 确保您的系统上已安装 Docker 和 Docker Compose。您可以遵循官方安装指南。
步骤 2:创建 Docker Compose 文件 创建一个 docker-compose.yml 文件来定义 Airflow 服务。以下是一个部署 Airflow 的示例 Docker Compose 文件: 步骤 3:初始化 Airflow 数据库 在启动服务之前,您需要初始化 Airflow 数据库。运行以下命令: 步骤 4:启动服务 现在,运行以下命令启动 Airflow 服务: 这将启动 Web 服务器、调度器和其他必需组件。一切就绪后,您可以访问 https://:8080 上的 Airflow Web UI。 为什么使用 Kubernetes 进行 Apache Airflow 部署Kubernetes 是一个开源平台,可自动化容器化应用程序的部署、扩展和管理。Kubernetes 为运行 Apache Airflow 等分布式应用程序提供了高度可扩展且有弹性的环境。 将 Kubernetes 用于 Airflow 部署的一些优点包括:
基于 Kubernetes 的 Apache Airflow 部署Airflow 的 Kubernetes Operator要在 Kubernetes 上部署 Apache Airflow,**Kubernetes Executor** 是一个流行的选项。此执行器在单独的 Kubernetes Pod 中运行每个任务,从而实现更好的隔离和可扩展性。Kubernetes 还提供 **Kubernetes PodOperator**,允许任务在具有自定义配置的特定运行 Pod 中执行。 设置 Airflow 的 Kubernetes 步骤要在 Kubernetes 上部署 Apache Airflow,请遵循以下步骤: 步骤 1:设置 Kubernetes 集群 您需要有一个正在运行的 Kubernetes 集群。您可以使用 **Minikube** 或 **Kind** 等工具在本地集群,或者使用 Google Kubernetes Engine (GKE)、Amazon EKS 或 Azure AKS 等云提供商。 步骤 2:安装 Helm Helm 是 Kubernetes 的包管理器,它简化了 Airflow 的部署过程。请遵循官方 Helm 文档安装 Helm。 步骤 3:添加 Airflow Helm Chart 仓库 Apache Airflow 拥有官方的 Helm Chart 仓库。将其添加到您的 Helm 配置中: 步骤 4:使用 Helm 部署 Airflow 使用 Helm 安装 Airflow: 这将会在您的 Kubernetes 集群上部署 Airflow。部署完成后,您可以通过端口转发访问 Airflow Web UI: 现在您可以通过 https://:8080 访问 Airflow Web UI。 比较 Airflow 的 Docker 与 Kubernetes 部署Docker 和 Kubernetes 都提供了部署 Apache Airflow 的强大方法,但需要考虑一些关键区别:
Airflow CI/CD 管道持续集成 (CI) 和持续部署 (CD) 管道自动化了将代码更改集成并部署到生产环境的过程。对于使用 **Apache Airflow** 的团队来说,CI/CD 管道对于管理有向无环图 (DAG) 的演进至关重要,可确保工作流的更改经过系统性测试并部署。 为什么 Airflow 需要 CI/CD?
设置 Airflow DAG 的 CI/CD 管道使用 Git 进行版本控制任何 CI/CD 管道的基础都是版本控制系统,而对于 Airflow,Git 是常用的。DAG 应存储在 Git 仓库中,允许开发人员对工作流进行版本控制和管理更改。
DAG 的持续集成持续集成 (CI) 侧重于在每次更改代码时自动构建和测试代码。对于 Airflow DAG,CI 可确保工作流中的任何更改(例如新的任务依赖项或代码更新)都不会破坏工作流或导致问题。 Airflow DAG 的 CI 步骤
以下是一个使用 GitHub Actions 测试 Airflow DAG 的简单 CI 管道示例: DAG 的持续部署一旦您的 DAG 通过 CI 检查,就可以自动将其部署到暂存或生产 Airflow 环境。持续部署 (CD) 确保新更改始终可用于生产执行,只需最少的手动干预。 Airflow DAG 的 CD 步骤
自动化测试和验证Airflow DAG 的测试和验证应在 CI/CD 管道中自动化,以确保任何更改在到达生产环境之前都经过适当的审查。常见做法包括:
自动化测试可确保 DAG 保持稳定,并且更改不会在生产中引起意外问题。 处理敏感信息Airflow DAG 通常需要 API 密钥、数据库凭据和其他敏感信息。安全地管理这些敏感信息对于防止未经授权的访问至关重要。 使用环境变量在 Airflow 中处理敏感信息的最简单方法之一是使用环境变量。这允许在运行时将敏感数据注入到 Airflow 工作器和 Web 服务器中,而无需将其硬编码到 DAG 文件中。 关键步骤
环境变量是小型部署的不错选择,但随着敏感信息的数量增加,管理起来可能会变得更具挑战性。 与 HashiCorp Vault 集成为了更强大、更安全的敏感信息管理,将 **HashiCorp Vault** 与 Airflow 集成是一种广泛使用的方法。Vault 允许您安全地存储和访问敏感信息,加密敏感数据并管理访问控制。
Vault 提供比环境变量更好的安全性,并且对于需要集中管理敏感信息的更大、更复杂的环境来说是可扩展的。 升级和迁移 Apache AirflowAirflow 发展迅速,有效管理升级和迁移对于维护稳定的生产环境至关重要。 处理 Airflow 升级升级 Airflow 需要仔细规划,尤其是在生产环境中,因为它涉及到 Airflow 核心和数据库模式的更改。
数据库迁移Airflow 使用元数据数据库(例如 PostgreSQL、MySQL)来存储 DAG 和任务执行元数据。升级 Airflow 可能需要运行数据库迁移以确保与新版本的兼容性。 要执行迁移: 此命令将更新模式并将您的元数据数据库迁移到新版本。 处理兼容性问题Airflow 升级可能会引入破坏性更改,从而影响您的 DAG、Operator 或插件。至关重要的是:
CI/CD、敏感信息管理和升级
|
我们请求您订阅我们的新闻通讯以获取最新更新。