NIFI - Dev to Test to Prod

时间:2016-04-13 14:02:29

标签: apache-nifi

我们正在努力寻找更新处理器配置的最佳方法,因为流程将通过开发,测试和产品阶段进行。当流被部署到特定环境时,我们真的希望避免在处理器中操纵主机,端口等引用。至少在我们的例子中,我们将为ElasticSearch,PostGres等提供不同的主机。其他人如何处理这个?

我们考虑过的事情:

  • 使用表达式语言从属性文件中提取配置。这对于启用了EL的处理器非常有用,但对于没有启用EL的处理器则不行。
  • 操作流xml并覆盖主机,端口等配置。有点担心无意中破坏了xml以及它在NIFI版本中的可移植性。

任何提示或建议将不胜感激。很有可能我们忽略了一个明显的解决方案。

修改

我们将使用Byran建议的模板。它们肯定会满足我们的需求,并且似乎是我们在众多环境中控制配置的好方法。

https://github.com/aperepel/nifi-api-deploy

2 个答案:

答案 0 :(得分:6)

这种讨论经常出现,这里肯定有改进的余地......

您是正确的,目前的一种方法是将与环境相关的属性值提取到bootstrap.conf中,然后通过表达式语言引用它们,以便flow.xml.gz可以从一个环境移动到另一个环境。正如您所提到的,这仅适用于支持表达式语言的属性。

为了使将来更容易,有一个名为变量注册表的想法的功能提议:

https://cwiki.apache.org/confluence/display/NIFI/Variable+Registry

您可能想要了解的一个有趣的方法是使用模板。有一个GitHub项目可以用来帮助解决这个问题:

https://github.com/aperepel/nifi-api-deploy

答案 1 :(得分:3)

你可以对这篇文章automating NIFI template deployment

感兴趣

为了自动执行NIFI模板,有一个效果很好的工具:https://github.com/hermannpencole/nifi-config

  • 准备你的nifi开发

    1. 在nifi上创建模板
    2. 并下载
    3. 使用工具提取示例配置
  • 将其部署在生产中
    1. 使用工具取消部署旧版本
    2. 使用工具
    3. 部署模板
    4. 使用工具
    5. 更新生产配置