【问题标题】:Environment specific configurations in Felix ConfiguratorFelix Configurator 中的环境特定配置
【发布时间】:2020-08-02 13:05:29
【问题描述】:

Felix Configurator 允许使用 JSON 文件应用服务配置。我在 OSGI-INF/configurations 下提供了一堆 json 文件,这些文件是由正确应用配置的配置程序包选择的。这很好,但我正在考虑基于环境应用配置,例如 Sling 运行模式配置或 Spring 配置文件。

我查看了 Felix Configurator 代码和规范,但找不到任何对此类功能的引用。

OSGi 专家,请建议如何实现。

【问题讨论】:

  • 你想在环境之间改变什么?只是 url 和密码之类的东西,还是结构更改?
  • 是的,网址和密码等。没有结构变化。 Felix 插值法会在这里提供帮助吗?你还有什么建议吗?
  • 是的.. felix 插值与配置器配合得很好。
  • 好的,这会有所帮助,但从部署的角度来看会增加一项任务,开发团队必须向部署团队提供插值配置文件。
  • 我喜欢代码(包括 docker 镜像)独立于舞台。然后配置可以驻留在阶段中。例如,在 k8s 中,您可以为此使用机密或配置映射。

标签: osgi apache-felix osgi-bundle


【解决方案1】:

如果您只需要替换配置中的值但没有结构更改,那么felix interpolation 是最好的解决方案。

docker 的一个好习惯是使用环境变量:

com.my.userinfo:
"greeting": "Hello $[env:USER]!"

只要确保您使用最新版本的 felix configadmin,因为插值使用 OSGi R7 的新 configadmin 功能。

【讨论】:

  • 这会有所帮助,但我正在考虑配置器的一个固有特性,我们提供一个系统属性,如 Sling 运行模式或 Spring 配置文件,并创建一个配置,如 service.dev.json 或 service.prod。 json 然后配置器将仅根据模式读取适当的文件。这将与代码一起部署并使用代码进行管理,通过插值,开发团队必须为每个环境提供插值配置,并且每次发生更改时都必须提供配置文件。无论如何,只是一个想法,我将其标记为已接受的答案。
  • 配置文件或运行模式将是一个很好的增强。不过,我见过非常糟糕的例子。一位客户提供了所有阶段的配置,包括密码,并将它们部署到一个开放的 maven 存储库。这不是一个好主意。您可以查看吊索功能模型。组合功能(每个都包括配置)可以做你想要的。
猜你喜欢
  • 2014-03-03
  • 2013-08-16
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
相关资源
最近更新 更多