NIFI - 从开发到测试到生产
NIFI - Dev to Test to Prod
随着流程在开发、测试和生产阶段的进展,我们正在努力寻找更新处理器配置的最佳方法。当流部署到特定环境时,我们真的希望避免在处理器中操纵主机、端口等引用。至少在我们的例子中,我们将有不同的主机来处理 ElasticSearch、PostGres 等。其他人是如何处理的?
我们考虑的事项:
- 使用表达式语言从属性文件中提取配置。这对于启用了 EL 的处理器非常有用,但对于未启用的处理器则不然。
- 操纵流xml并覆盖主机、端口等配置。有点担心无意中破坏 xml 以及它在 NIFI 版本中的可移植性。
如有任何提示或建议,我们将不胜感激。很有可能存在一个我们忽略了考虑的明显解决方案。
编辑:
我们将使用 Byran 建议的模板。它们肯定会满足我们的需求,并且似乎是我们在众多环境中控制配置的好方法。
这个讨论经常出现,这里肯定有改进的空间...
你是正确的,目前一种方法是将环境相关的 属性 值提取到 bootstrap.conf 中,然后通过表达式语言引用它们,这样 flow.xml.gz 就可以从一个环境给对方。正如您所提到的,这仅适用于支持表达式语言的属性。
为了让这在未来更容易,有一个名为变量注册表的想法的功能提案:
https://cwiki.apache.org/confluence/display/NIFI/Variable+Registry
您可能想了解一种有趣的方法是使用模板。有一个 GitHub 项目可以帮助解决这个问题:
你可以看看这个postautomating NIFI template deployment
对于自动化 NIFI 模板部署,有一个工具可以很好地工作:https://github.com/hermannpencole/nifi-config
准备你的 nifi 开发
- 在 nifi 上创建模板
- 并下载它
- 使用工具提取示例配置
- 将其部署到生产环境
- 使用工具卸载旧版本
- 使用工具部署模板
- 使用工具更新生产配置
随着流程在开发、测试和生产阶段的进展,我们正在努力寻找更新处理器配置的最佳方法。当流部署到特定环境时,我们真的希望避免在处理器中操纵主机、端口等引用。至少在我们的例子中,我们将有不同的主机来处理 ElasticSearch、PostGres 等。其他人是如何处理的?
我们考虑的事项:
- 使用表达式语言从属性文件中提取配置。这对于启用了 EL 的处理器非常有用,但对于未启用的处理器则不然。
- 操纵流xml并覆盖主机、端口等配置。有点担心无意中破坏 xml 以及它在 NIFI 版本中的可移植性。
如有任何提示或建议,我们将不胜感激。很有可能存在一个我们忽略了考虑的明显解决方案。
编辑:
我们将使用 Byran 建议的模板。它们肯定会满足我们的需求,并且似乎是我们在众多环境中控制配置的好方法。
这个讨论经常出现,这里肯定有改进的空间...
你是正确的,目前一种方法是将环境相关的 属性 值提取到 bootstrap.conf 中,然后通过表达式语言引用它们,这样 flow.xml.gz 就可以从一个环境给对方。正如您所提到的,这仅适用于支持表达式语言的属性。
为了让这在未来更容易,有一个名为变量注册表的想法的功能提案:
https://cwiki.apache.org/confluence/display/NIFI/Variable+Registry
您可能想了解一种有趣的方法是使用模板。有一个 GitHub 项目可以帮助解决这个问题:
你可以看看这个postautomating NIFI template deployment
对于自动化 NIFI 模板部署,有一个工具可以很好地工作:https://github.com/hermannpencole/nifi-config
准备你的 nifi 开发
- 在 nifi 上创建模板
- 并下载它
- 使用工具提取示例配置
- 将其部署到生产环境
- 使用工具卸载旧版本
- 使用工具部署模板
- 使用工具更新生产配置