外部化配置节点js

Posted

技术标签:

【中文标题】外部化配置节点js【英文标题】:Externalize configuration node js 【发布时间】:2020-08-21 11:10:48 【问题描述】:

我将在 openshift 中部署一个节点 js 服务,并且我需要外部化的数据库配置和应用程序属性等属性很少。

我有 java 应用程序作为解决方案的一部分运行,它使用配置服务器作为配置存储,GIT 作为源。我已经看到 npm 的库与 spring 配置服务器集成。

所以,我在这里寻找最佳实践,在 k8s 或 openshift 等编排工具中将 nodejs 中的配置外部化的最佳方法是什么。或者我们可以在上面的场景中使用配置服务器吗?

请告知任何信息,任何指针都非常感谢。

【问题讨论】:

【参考方案1】:

有多种可能性,一种是您提到的 Cloud Config Server。但是,根据Twelve-Factor App 的幼稚做法,配置应该存储在环境中:

十二因素应用程序将配置存储在环境变量中

在 OpenShift / Kubernetes 中,这意味着我们会将配置存储在 Deployment 本身、ConfigMapsSecrets 中,然后将它们与 envFrom.configMapRef (here is an example) 一起使用。

【讨论】:

谢谢西蒙,我目前正在与您的 cmets 一起评估事情。感谢及时回复,并将回复。 感谢 Simon,我们选择了环境变量。感谢您的时间和建议。【参考方案2】:

如果您正在转向编排工具,我会说使用他们的产品。在 k8s 中,您通常会使用 ConfigMaps 来管理您的应用程序配置。此解决方案的美妙之处在于您还可以将配置作为代码进行,因此您可以保持 Configmaps 版本受控。

还有一点,NodeJ 的最佳实践是使用环境变量。因此,您可以使用编排产品将所有配置挂载到环境中,另外还可以对敏感信息(API 密钥等)进行秘密加密。

【讨论】:

感谢朋友,我目前正在与您的 cmets 一起评估事物。感谢及时回复,并将回复。 感谢 obanby,我们选择了环境变量。感谢您的时间和建议。【参考方案3】:

对于任何有帮助的人,我们都选择了环境变量方法,因为我们可以使用的参数非常少,而且我们没有看到这种方法有太大的变化。如果它增长,我们将查看上面的 configmap 方法(同样由 simon / obanby 建议)。

【讨论】:

以上是关于外部化配置节点js的主要内容,如果未能解决你的问题,请参考以下文章

节点.js+包含+外部+文件

无法访问节点js中函数外部的响应对象数据

如何在下一个 js 中从节点模块外部的文件夹中导入模块

Firebase 函数和外部节点包

webpack打包VUE项目读取外部配置文件,灵活配置域名

外部Jenkins调用容器中Slave配置实践