本页面介绍了 Managed Service for Apache Airflow 版本控制,并列出了主要 Managed Airflow 版本之间的区别。
Managed Airflow 的主要版本
Managed Airflow 具有以下主要版本:
Managed Airflow(第 3 代)。此版本简化了网络设置,并隐藏了基础架构组件,包括环境的集群和环境对其他服务的依赖关系。
Managed Airflow(第 2 代)。在此版本中,环境的集群会自动扩缩以满足资源需求。
Managed Airflow(旧版第 1 代)。具有手动环境伸缩功能,基础架构部署到您的项目和网络。
Managed Airflow 版本比较
下表列出了 Managed Airflow(旧版第 1 代)、Managed Airflow(第 2 代)和 Managed Airflow(第 3 代)之间的主要区别。
| 功能 | Managed Airflow(旧版第 1 代) | Managed Airflow(第 2 代) | Managed Airflow(第 3 代) |
|---|---|---|---|
| 映像版本 | composer-1.b.c-airflow-x.y.z |
composer-2.b.c-airflow-x.y.z |
composer-3-airflow-x.y.z-build.t |
| Airflow 版本 | Airflow 1.10.* 和 Airflow 2 | Airflow 2 | Airflow 2、Airflow 3 |
| Python 版本 | 3.8.12 | 3.11.8(早期版本为 3.11.5 和 3.8.12) | 3.11.8 |
| 环境的集群 | 标准模式 VPC 原生或基于路由的 Google Kubernetes Engine 集群 | Autopilot 模式 VPC 原生 Google Kubernetes Engine 集群 | 环境的集群未部署到您的项目中。 |
| 横向扩缩 | 可以调整环境集群中的节点数量。 此操作会更改 Airflow 工作器的数量。 可以调整 Airflow 调度器的数量。 |
根据需求自动伸缩 Airflow 工作器数量。可以设置和更改工作器数量的上限和下限。 可以调整 Airflow 调度器和触发器的数量 |
根据需求自动伸缩 Airflow 工作器数量。可以设置和更改工作器数量的上限和下限。 可以调整 Airflow 调度器、触发器和 DAG 处理器的数量 |
| 纵向扩缩 | 可以在创建环境时为集群节点、Airflow Web 服务器和数据库设置机器类型。可以更改 Airflow Web 服务器和数据库的机器类型。 | 可以设置和更改工作负载配置:Airflow 工作器、调度器、Web 服务器和环境大小的 CPU、内存和存储参数。 | 可以设置和更改工作负载配置:Airflow 工作器、调度器、Web 服务器、DAG 处理器和环境规模的 CPU、内存和存储参数。 |
| 定价模式 | Managed Airflow(旧版第 1 代)价格模式 | Managed Airflow(第 2 代)价格模式 | Managed Airflow(第 3 代)价格模式 |
| 访问权限控制 | Managed Airflow(旧版第 1 代)角色 | Managed Airflow 角色。使用 Workload Identity Federation for GKE,并且需要为 Managed Airflow Service Agent 账号授予额外权限。 | Managed Airflow 角色。使用 Workload Identity Federation for GKE。无需额外权限 |
| 通过员工身份联合进行访问 | 不支持 | 支持 | 支持 |
| 高弹性环境 | 不支持 | 支持 | 支持 |
| 数据库保留政策 | 不支持 | 尚未提供 | 支持 |
| 专用 IP 网络 | VPC 对等互连 | Private Service Connect | 简化了网络设置。可以在现有环境中在公共 IP 和专用 IP 之间更改。 |
| VPC Service Controls | 支持 | 支持 | 支持 |
| Airflow 执行器 | Celery 执行程序 | Celery 执行程序 | CeleryKubernetes 执行程序 |
| Airflow 触发器(可延期运算符) | 不支持 | 支持 | 支持 |
| KubernetesPodOperator 的自定义服务账号 | 支持 | 支持 | 不支持 |
| CMEK | 支持 | 支持 | 支持 |
| Web 服务器访问权限控制 | 支持 | 支持 | 支持 |
| 重启 Web 服务器 | 支持 | 支持 | 支持 |
| Web 服务器插件 | 在已停用 DAG 序列化的 Airflow 1 环境中受支持。 | 支持 | 支持,可以根据需要停用和启用插件。 |
| 调度器插件 | 不支持 | 支持 | 不支持 |
| 监听器 | 不支持 | 支持 | 仅限任务级监听器 |
| TimeTables | 仅限内置 | 自定义和内置 | 仅限内置 |
| 调度程序自定义 PyPI 软件包 | 不支持 | 支持 | 不支持 |
| 安装自定义插件 | 支持 | 支持 | 支持 |
| 维护操作 | 所有任务都可能会受到影响。 | 执行时间少于 55 分钟的任务不受影响。 | 执行时间不到 24 小时的任务不受影响。 |
| 存储快照 | 支持 Airflow 2.x 和 1.10.15 版本 | 支持 | 支持 |
| 加载快照 | 不支持 | 支持 | 支持 |
| 预定的快照 | 不支持 | 支持 | 支持 |
| 自定义环境的存储桶 | 不支持 | 支持 | 支持 |
| 仅在 Cloud Logging 中保存 Airflow 任务日志 | 不支持 | 支持 | 支持 |
| 数据沿袭集成 | 不支持 | 支持 | 支持 |
| Composer 本地开发 CLI 工具 | 不支持 | 支持 | 支持 |
Airflow 版本比较
Managed Airflow(第 3 代)提供搭载 Airflow 2 和 Airflow 3 的环境。
支持 Managed Airflow(第 3 代)功能
下表总结了 Airflow 3 中尚不支持的 Managed Airflow(第 3 代)功能。
| 功能 | 状态 | 说明 |
|---|---|---|
| 升级到 Airflow 3(快照) | Airflow 3 尚不支持 | 使用快照将现有的 Managed Airflow(第 3 代)环境从 Airflow 2 并行迁移到 Airflow 3。 |
| 升级到 Airflow 3(就地升级) | Airflow 3 尚不支持 | 通过在升级期间指定 Airflow 3 版本,将现有的 Managed Airflow (Gen 3) 环境从 Airflow 2 就地升级到 Airflow 3。 |
Airflow 3 中的已知问题
在 Airflow 3 中发现了以下已知问题:
- Airflow 工作负载日志中的警告消息。您可以放心地忽略这些消息。
airflowctl实用程序无法在无头环境(例如 Managed Airflow 中的 Airflow 工作器或 Docker 容器)中轻松使用。这是该实用程序的局限性。如需详细了解此限制,请参阅 GitHub 上 Airflow 代码库中的问题 58230。
支持 Airflow 3 功能
下表列出了 Airflow 3 功能及其支持情况:
| 功能 | 状态 |
|---|---|
| Airflow 3.0 界面 | 支持 |
| DAG 版本控制 | 支持 |
| 回填(通过 Airflow 界面) | 支持 |
| 事件驱动型调度 | 支持 |
| 资产 | 支持 |
| 推理执行和超参数调节 | 支持 |
| airflowctl 命令行工具 | 支持 |
| DAG 软件包(LocalDagBundle 除外) | Airflow 3 尚不支持 |
| 边缘执行器和其他编程语言中的任务 | Airflow 3 尚不支持 |
Managed Service for Apache Airflow 映像
为了运行 Apache Airflow,Managed Airflow 会构建 Docker 映像,用于将 Airflow 版本与其他常用的二进制文件和 Python 库捆绑在一起。
Managed Airflow 映像包含专门针对 Managed Airflow,但不适用于上游 Airflow 代码库的 Airflow 修改。每个 Managed Airflow 映像都包含预安装的软件包以及专门针对 Managed Airflow 的 Airflow 更改。
Google 会定期发布新的 Managed Airflow 映像:
在 Managed Airflow(第 3 代)中,映像包含受支持的 Airflow 版本的新 build。您可以选择要使用的 Airflow 版本和 build。您的环境会自动获得 Managed Airflow 改进。
在 Managed Airflow(第 2 代)和 Managed Airflow(旧版第 1 代)中,映像包含 Managed Airflow 改进和受支持的 Airflow 版本的新 build。如需获取 Managed Airflow 改进,请将环境升级到更高版本的 Managed Airflow。
版本弃用和支持
Composer 3
Google 会在 Airflow build 发布后的一段时间内提供支持:
自发布日期起 0-12 个月:支持运行此 Airflow build 的 Managed Airflow(第 3 代)环境。
自发布日期起 12 个月以上:运行这些版本的 Managed Airflow(第 3 代)环境不受支持。
在 Airflow build 不再受支持后,运行此 Airflow build 的环境也不再受支持,并且完全由用户管理。
环境以以下方式与支持和不支持的 Airflow build 协同工作:
您可以创建使用所有受支持的 Airflow build 的环境。
您仍然可以使用不再受支持的 Airflow build 的环境。环境仍可正常运行,您可以继续使用,也可以将其升级到受支持的 Airflow build。
在某些情况下,升级到更高版本的 Airflow 或 build 是解决安全漏洞的唯一可用解决方案。
Composer 2
Google 会在Managed Airflow(第 2 代)版本发布后的一段时间内提供支持:
自发布日期起 0-12 个月:运行这些版本的 Managed Airflow(第 2 代)环境受支持。
自发布日期起 12 个月以上:运行这些版本的 Managed Airflow(第 2 代)环境不受支持。
您可以在受管 Airflow 版本不再受支持的日期之后使用它们。例如,如果您的环境基于超过售后支持期限的 Managed Airflow 版本,那么该环境仍会正常运行,且您可以继续使用。在这种情况下,我们建议您将环境升级到受支持的版本。
Composer 1
新的 Managed Airflow(旧版第 1 代)版本将于 2023 年 3 月底发布。所有已发布的 Managed Airflow(旧版第 1 代)版本都遵循与 Managed Airflow(第 2 代)相同的版本弃用政策,并因此受到支持。
版本架构
本部分介绍了 Airflow 和 Managed Airflow 版本架构以及版本别名。
Airflow 版本架构
Airflow 遵循语义软件版本控制架构。Airflow 的每个版本都有一个主要版本、次要版本和补丁程序版本。
Composer 3
在 Managed Airflow(第 3 代)中,随着时间的推移,新的 Airflow 版本和 build 会陆续推出。
您的环境可以与所有之前的 Airflow 版本和 build 搭配使用,并且会自动接收基础设施组件的更新。每个版本和 build 均受支持,如版本弃用和支持中所述,您可以选择将 Airflow 版本升级到更高版本或 build。
Composer 2
如需查看每个 Managed Airflow 版本支持的 Airflow 版本列表,请参阅Managed Airflow 版本列表。
在每个发布版本中,Managed Airflow(第 2 代)都支持 Airflow 2 的两个次要版本。
例如,Managed Airflow 2.4.0 支持 Airflow 2.4.* 和 Airflow 2.5.*。
对于 Airflow 2 的每个次要版本,Managed Airflow 支持一个补丁程序版本。
例如,对于 Airflow 2.4.*,Managed Airflow 支持 Airflow 2.4.3。
当 Managed Airflow 中提供新的 Airflow 2 补丁程序版本时,相应的版本会有两个 Airflow 2 补丁程序版本可用于 Airflow 的同一次要版本。然后,之前的补丁程序版本会在以后的某个版本中被移除。
例如,Managed Airflow 2.3.4 同时支持 Airflow 2.5.1 和 Airflow 2.5.3。
Managed Airflow 可以在 Managed Airflow 各发布版本之间跳过一些 Airflow 补丁程序版本。此外,如果 Airflow 的特定补丁程序版本存在功能、质量或性能问题,Managed Airflow 也可以跳过此版本。
例如,跳过了 Airflow 2.1.3,可以使用 Airflow 2.1.4。
运行稳定版 Airflow 的 Managed Airflow 版本可以包含从更高的 Airflow 版本向后移植的 Airflow 更新。
Composer 1
在 Managed Airflow(旧版第 1 代)中支持的最新 Airflow 版本是 Airflow 2.4.3。
只有 Managed Airflow(旧版第 1 代)支持 Airflow 1.10.15,这是 Airflow 1 最新发布的版本。
Managed Airflow 版本架构
Composer 3
Managed Airflow(第 3 代)版本控制架构会捕获 Airflow 版本和 build:
composer-3-airflow-x.y.z-build.t
其中:
composer-3是 Managed Airflow 的主要版本。airflow-x.y.z.build.t是 Airflow 版本和 build。 在 Managed Airflow (第 3 代) 中,同一 Airflow 版本的每个后续版本都具有更高的 build 号。build 号由 Managed Airflow 定义,而不是由 Airflow 开源项目定义。
Composer 2
Managed Airflow(第 2 代)映像版本控制架构会捕获 Managed Airflow 和 Airflow 版本:
composer-2.b.c-airflow-x.y.z
其中:
composer-2.b.c表示托管式 Airflow (第 2 代) 中托管式 Airflow 管理的自定义设置的次要版本和补丁版本。一般来说,与之前的次要版本相比,Managed Airflow 的次要版本对应于功能方面的重大变化,例如当可用的 Airflow 版本集发生变化时。补丁版本会在后续版本中更新。airflow-x.y.z是 Airflow 版本,表示特定 Managed Airflow 映像中使用的 Airflow 的主要版本、次要版本和补丁程序版本。
Composer 1
托管式 Airflow(旧版第 1 代)映像版本控制架构会捕获托管式 Airflow 和 Airflow 版本:
composer-1.b.c-airflow-x.y.z
其中:
composer-1.b.c是 Managed Airflow 管理的自定义设置的版本airflow-x.y.z是 Airflow 版本
版本别名
版本别名的运作方式如下:
Managed Airflow 会在创建环境时将版本别名解析为完整格式:
- 在 Managed Airflow(第 3 代)中,所有版本别名都变为
composer-3-airflow-x.y.z-build.t。 - 在 Managed Airflow(第 2 代)和 Managed Airflow(旧版第 1 代)中,所有版本别名都变为
composer-a.b.c-airflow-x.y.z。
- 在 Managed Airflow(第 3 代)中,所有版本别名都变为
在 Managed Airflow(第 3 代)中,使用版本别名(例如
composer-3-airflow-x.y)不会自动升级环境的 Airflow 版本和 build。在您升级环境之前,该环境会一直使用相同的 Airflow build 和版本。与往常一样,该环境仍会接收自动基础设施升级。在 Managed Airflow(第 2 代)和 Managed Airflow(旧版第 1 代)中,使用版本别名(例如
composer-a-airflow-x.y.z)不会为环境提供自动升级。在您升级环境之前,环境会一直使用相同的 Managed Airflow 和 Airflow 版本。
Managed Airflow(第 3 代)版本别名
Managed Airflow(第 3 代)支持以下版本别名:
| 别名 | Airflow 版本 |
|---|---|
composer-3-airflow-2 |
Airflow 2 的最新版本和 build |
composer-3-airflow-x.y |
x.y 主要版本和次要版本中的最新 Airflow 版本和 build |
composer-3-airflow-x.y.z |
指定 Airflow 版本的最新 build |
Managed Airflow(第 2 代)版本别名
Managed Airflow(第 2 代)支持以下版本别名:
| 别名 | Managed Airflow 版本 | Airflow 版本 |
|---|---|---|
composer-2-airflow-2 |
最新版本的 Managed Airflow(第 2 代) | 最新版本的 Airflow 2 |
composer-2-airflow-x.y |
最新版本的 Managed Airflow(第 2 代) | x.y 主要版本和次要版本中的最新 Airflow 版本 |
composer-2-airflow-x.y.z |
最新版本的 Managed Airflow(第 2 代) | 指定版本的 Airflow |
composer-2.b.c-airflow-x.y |
指定版本的 Managed Airflow(第 2 代) | x.y 主要版本和次要版本中可用的最新 Airflow 版本 |
Managed Airflow(旧版第 1 代)版本别名
Managed Airflow(旧版第 1 代)支持以下版本别名:
| 别名 | Managed Airflow 版本 | Airflow 版本 |
|---|---|---|
composer-1-airflow-2 |
最新版 Managed Airflow(旧版第 1 代) | 最新版本的 Airflow 2 |
composer-1-airflow-1 |
最新版 Managed Airflow(旧版第 1 代) | Airflow 1 的最新版本 |
composer-1-airflow-x.y |
最新版 Managed Airflow(旧版第 1 代) | x.y 主要版本和次要版本中的最新 Airflow 版本 |
composer-1-airflow-x.y.z |
最新版 Managed Airflow(旧版第 1 代) | 指定版本的 Airflow |
composer-1.b.c-airflow-x.y |
指定版本的 Managed Airflow(旧版第 1 代) | x.y 主要版本和次要版本中可用的最新 Airflow 版本。 |
以下版本别名指向 Managed Airflow(第 3 代)。您仍然可以使用它们,但建议您考虑改用受管 Airflow 版本的别名。
composer-latest-airflow-x.y等于composer-3-airflow-x.y。composer-latest-airflow-x.y.z等于composer-3-airflow-x.y.z。
Google Cloud CLI 中的版本实参
使用 Google Cloud CLI 创建或升级 Managed Airflow 环境时,您可以指定 Managed Airflow 和 Airflow 版本:
Composer 3
--image-version实参以composer-3-airflow-x.y.z-build.t格式指定 Airflow 版本和 build。您可以使用 版本别名,这些别名会由 Google Cloud CLI 解析为完整格式。--airflow-version以以下格式指定 Airflow 版本:x.y.z格式适用于指定 Airflow 版本的最新 build。此格式与composer-3-airflow-x.y.z版本别名相同。x.y格式适用于x.y主要版本和次要版本中可用的最新 Airflow build。此格式与composer-3-airflow-x.y版本别名相同。x.y.z-build.t是指定的 Airflow 版本和 build。此格式等同于composer-3-airflow-x.y.z-build.t。
Composer 2
--image-version实参用于指定 Managed Airflow(第 2 代)和 Airflow 版本:composer-a.b.c-airflow-x.y.z格式会创建具有指定版本的 Managed Airflow 和 Airflow 的环境。- 版本别名首先解析为
composer-a.b.c-airflow-x.y.z格式,然后使用指定版本的 Managed Airflow(第 2 代)和 Airflow 创建环境。
--airflow-version以以下格式指定 Airflow 版本:x.y.z格式适用于最新版本的 Managed Airflow(第 2 代)和指定版本的 Airflow。此格式与composer-2-airflow-x.y.z版本别名相同。x.y格式适用于最新版本的 Managed Airflow(第 2 代)以及x.y主要和次要版本中提供的最新版本的 Airflow。此格式与composer-2-airflow-x.y版本别名相同。
Composer 1
--image-version实参用于指定 Managed Airflow(旧版第 1 代)和 Airflow 版本:composer-a.b.c-airflow-x.y.z格式会创建具有指定版本的 Managed Airflow 和 Airflow 的环境。- 版本别名会先解析为
composer-a.b.c-airflow-x.y.z格式,然后使用指定版本的 Managed Airflow(旧版 Gen 1)和 Airflow 创建环境。
--airflow-version以以下格式指定 Airflow 版本:x.y.z格式适用于最新版本的 Managed Airflow(旧版第 1 代)和指定版本的 Airflow。此格式与composer-1-airflow-x.y.z版本别名相同。x.y格式适用于最新版本的 Managed Airflow(旧版 Gen 1)以及x.y主要版本和次要版本中提供的最新 Airflow 版本。此格式与composer-1-airflow-x.y版本别名相同。