我将在 openshift 中部署一个节点 js 服务,并且我需要外部化的数据库配置和应用程序属性等属性很少。
我有 java 应用程序作为解决方案的一部分运行,它使用配置服务器作为配置存储和 GIT 作为源。我已经看到 npm 的库与 spring 配置服务器集成。
因此,我在这里寻找最佳实践,在 k8s 或 openshift 等编排工具中将 nodejs 中的配置外部化的最佳方法是什么。或者我们可以在上面的场景中使用配置服务器吗?
请让任何信息知道,任何指针都非常感谢。
我将在 openshift 中部署一个节点 js 服务,并且我需要外部化的数据库配置和应用程序属性等属性很少。
我有 java 应用程序作为解决方案的一部分运行,它使用配置服务器作为配置存储和 GIT 作为源。我已经看到 npm 的库与 spring 配置服务器集成。
因此,我在这里寻找最佳实践,在 k8s 或 openshift 等编排工具中将 nodejs 中的配置外部化的最佳方法是什么。或者我们可以在上面的场景中使用配置服务器吗?
请让任何信息知道,任何指针都非常感谢。
有多种可能性,一种是您提到的 Cloud Config Server。但是,根据Twelve-Factor App的幼稚方法,配置应存储在环境中:
十二因素应用程序将配置存储在环境变量中
在 OpenShift / Kubernetes 中,这意味着我们将配置存储在Deployment
自身中,ConfigMaps
或者Secrets
然后将它们与envFrom.configMapRef
(这里是一个示例)一起使用。
如果您正在转向编排工具,我会说使用他们的产品。在 k8s 中,您通常会使用 ConfigMaps 来管理您的应用程序配置。该解决方案的美妙之处在于您还可以将配置作为代码进行,因此您可以保持Configmaps
版本受控。
还有一件事,NodeJ 的最佳实践是使用环境变量。因此,您可以使用编排产品将所有配置挂载到环境中,另外还可以对敏感信息(API 密钥等)进行秘密加密。
对于任何有帮助的人,我们都选择了环境变量方法,因为我们可以使用的参数非常少,而且我们没有看到这种方法有太大的变化。如果它增长,我们将查看上面的 configmap 方法(同样由 simon / obanby 建议)。