如何解决如何版本控制 Airflow 变量和连接?
从开发的角度来看,在 UI 中定义变量和连接是有效的,但并不健壮,因为无法跟踪已添加和删除的内容。
Airflow came up with a way to store variables as environment variables。但是由此产生了一些自然的问题:
- 这是否需要在每个 DAG 之前定义?如果我有多个 DAG 共享相同的 env 值怎么办?每次都定义它似乎有点多余。
- 如果以这种方式定义,它们是否仍会显示在 UI 上?用户界面仍然是快速查看一些键值对的好主意。
我想在一个完美的世界中,我正在寻找的解决方案是以某种方式,只需在 airflow.cfg 文件中定义变量和连接的值,它会自动填充 UI 中的变量和连接。
感谢任何形式的帮助。提前致谢!
解决方法
还有另一种存储、管理和连接的方式,一种最通用、最安全并为您提供所有版本控制和审核支持的方式 - 即 Secret Backends。
https://airflow.apache.org/docs/apache-airflow/stable/security/secrets/secrets-backend/index.html
它内置了与Vault、GCP Secret Store、AWS Secret Store的集成,您可以使用Local Filesystem Secret Backend,也可以滚动您自己的后端。
当您使用其中之一时,您将获得来自您使用的秘密后端的所有版本控制、管理、安全性和访问管理(大多数秘密后端都内置了所有这些)。
这也意味着您无法通过 Airflow UI 查看/编辑值,因为它全部委托给这些后端。但是后端通常会为此提供自己的用户界面。
回答您的问题:
-
如果您通过 env vars 定义连接/变量,您应该在您的 Workers 和 Scheduler 中定义变量,而不是在 DAG 中。这意味着(如果您的系统是分布式的)您需要有一种机制来更新这些变量并在它们发生变化时重新启动所有气流过程(例如通过使用这些变量部署新图像或升级 helm chart 或类似的)
-
没有。 UI 仅显示数据库中定义的变量/连接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。