外部化配置节点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
本身、ConfigMaps
或 Secrets
中,然后将它们与 envFrom.configMapRef
(here is an example) 一起使用。
【讨论】:
谢谢西蒙,我目前正在与您的 cmets 一起评估事情。感谢及时回复,并将回复。 感谢 Simon,我们选择了环境变量。感谢您的时间和建议。【参考方案2】:如果您正在转向编排工具,我会说使用他们的产品。在 k8s 中,您通常会使用 ConfigMaps 来管理您的应用程序配置。此解决方案的美妙之处在于您还可以将配置作为代码进行,因此您可以保持 Configmaps
版本受控。
还有一点,NodeJ 的最佳实践是使用环境变量。因此,您可以使用编排产品将所有配置挂载到环境中,另外还可以对敏感信息(API 密钥等)进行秘密加密。
【讨论】:
感谢朋友,我目前正在与您的 cmets 一起评估事物。感谢及时回复,并将回复。 感谢 obanby,我们选择了环境变量。感谢您的时间和建议。【参考方案3】:对于任何有帮助的人,我们都选择了环境变量方法,因为我们可以使用的参数非常少,而且我们没有看到这种方法有太大的变化。如果它增长,我们将查看上面的 configmap 方法(同样由 simon / obanby 建议)。
【讨论】:
以上是关于外部化配置节点js的主要内容,如果未能解决你的问题,请参考以下文章