在哪里存储配置参数?

Where to store config parameters?

阅读 12 因素应用程序的配置部分:https://12factor.net/config 它指出 "Another approach to config is the use of config files which are not checked into revision control"。相反 "The twelve-factor app stores config in environment variables " 如果不将配置存储在 source/revision 控件中,那么环境变量的配置应该存储在哪里?

例如,一位新开发人员加入了一个团队,该开发人员如何访问环境变量以便 运行 应用程序?是否假定提供的环境包含允许应用程序 运行 的变量?

在哪里存储这些超出了 12factors 的范围,重要的是将源存储库与部署特定数据分离。

“使用未签入版本控制的配置文件”的建议可能有点误导。您可以将其理解为“未随应用程序一起修改的配置文件”。

这意味着您可以使用应用程序的修订版 X 和配置的修订版 Y 和修订版 Z(甚至可能是未修订的配置),并且可以使用应用程序的修订版 X1 和 X2 以及配置的修订版 Y。

解决了一些应用内置配置的问题,例如,您需要不同的版本来进行暂存和生产。

如何存储配置是一个没有详细说明的细节。您可以在 Kubernetes 上使用 ConfigMaps(可以作为环境变量使用),将配置存储在数据库中(即 etcd),使用 Hashicorp Vault 和 Consul 或将它们存储在 git(即 GitOps)中。

通常您的配置会有静态部分(即税率)和动态部分(即外部服务的名称或 IP 地址)。您不必将所有内容都存储在一个地方,并且在与您的应用程序相同的 git 服务器上定义一些完全没问题。您的应用程序是访问 git 服务器上的配置还是通过其他机制注入它取决于您的部署方法。