如何版本控制 Airflow 变量和连接?

如何解决如何版本控制 Airflow 变量和连接?

从开发的角度来看,在 UI 中定义变量和连接是有效的,但并不健壮,因为无法跟踪已添加删除内容

Airflow came up with a way to store variables as environment variables。但是由此产生了一些自然的问题:

  1. 这是否需要在每个 DAG 之前定义?如果我有多个 DAG 共享相同的 env 值怎么办?每次都定义它似乎有点多余。
  2. 如果以这种方式定义,它们是否仍会显示在 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 查看/编辑值,因为它全部委托给这些后端。但是后端通常会为此提供自己的用户界面。

回答您的问题:

  1. 如果您通过 env vars 定义连接/变量,您应该在您的 Workers 和 Scheduler 中定义变量,而不是在 DAG 中。这意味着(如果您的系统是分布式的)您需要有一种机制来更新这些变量并在它们发生变化时重新启动所有气流过程(例如通过使用这些变量部署新图像或升级 helm chart 或类似的)

  2. 没有。 UI 仅显示数据库中定义的变量/连接。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?