首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多个部署环境中管理微服务体系结构中的配置文件?

如何在多个部署环境中管理微服务体系结构中的配置文件?
EN

Stack Overflow用户
提问于 2019-08-28 19:49:31
回答 3查看 3.8K关注 0票数 3

我正在寻找一种使用微服务架构(.NET Core)来管理大型系统中多个模块的配置文件的方法。

目前我们有5个模块和计数。每个模块包括2个项目(例如UI和API)。每个项目有不同的配置,为3个环境开发,分期,生产。

5个模块x2个项目x3环境=30个配置文件。

对于所有开发环境,许多项目都需要重复相同的配置值(例如,共享包需要配置)。

在大多数情况下,每个项目和环境都需要相同的配置,但有时是不同的,有时完全是特定的。

情况只会变得更糟。更多的模块将被添加,配置文件将变得更大。我正在考虑的一个解决方案是编写一个脚本,在所有配置文件中进行查找和替换,该脚本基于一个主配置文件,该文件具有所有项目和环境的所有值。

但是,即使这样,我也不确定如何布局主配置文件,也不清楚哪些配置键属于哪个项目,这似乎令人望而生畏。

这变得很难管理,我想知道是否有人有一个很好的过程来管理这件事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-08-29 13:48:11

在微服务体系结构中,常见的配置是令人讨厌的。问题的关键是,它们应该是独立的、独立的功能单元。如果一个或多个人正在做相同的事情,那么您没有正确地细分您的域。

这方面的一个例外是插装:日志记录、分析、跟踪等等。如果这就是您在这里讨论的内容,那么您可以通过多种方法来处理它。

  1. 您可以为您的仪表拥有一个单独的配置源,它甚至不需要是项目的本地配置源。例如,您可以创建一个像instrumentation.json这样的文件,将它放在一个公共共享位置,然后在Program.cs中: config.AddJsonFile(@"\path\to\instrumentation.json",( CreateDefaultWebBuilder() ConfigureAppConfiguration(builderContext,config) => {=>可选: false,reloadOnChange: true) }) .Run(); 您甚至可以为该工具拥有特定于环境的JSON: config.AddJsonFile($@"\path\to\instrumentation.{env.EnvironmentName}.json",可选: IHostingEnvironment : true,reloadOnChange: true)
  2. Docker有自己的配置/机密设置,您可以使用它来设置环境变量,或者基本上可以将其提供给应用程序。请参阅:https://docs.docker.com/engine/swarm/secrets/
  3. 您可以使用像Azure密钥库这样的分布式配置源。如果您不想具体地使用它,类似于Server或Redis的东西也会同样工作,但是您必须为这些程序创建自定义配置提供程序,或者创建现有的第三方库。
票数 3
EN

Stack Overflow用户

发布于 2020-04-24 15:18:16

尝试https://microconfig.io

它正是为管理多个环境下的微服务配置而设计的。

票数 3
EN

Stack Overflow用户

发布于 2019-08-28 20:03:16

使用Azure钥匙库怎么样?

Key Vault充当您的主Config文件。

然后,您将有一个关键库为每个环境-开发,分期,生产。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57699189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档