首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理多个环境之间配置文件的方法。

管理多个环境之间配置文件的方法。
EN

Stack Overflow用户
提问于 2016-02-28 02:18:18
回答 2查看 1.4K关注 0票数 5

问题

我们使用java文件,并将配置文件保存在s3桶中。我们的环境: DEV、QA、Stage和PROD各有自己的配置文件和s3桶。如果我添加一个新字段,如"Polling_RATE=5000",则必须手动将其添加到每个env中,因为这些配置文件还存储密码,因此它们不能绑定到应用程序或保存在中。并不是每个工程师都可以访问每个env,所以您必须记住在prod部署日期之前通知高级工程师(DEVOPS),以添加新字段以使应用程序工作。目前这是一个非常混乱的过程。

问题

是否有一种实用程序或架构设计模式来处理这个问题?如何在github中存储“版本控制”敏感配置字段?

EN

回答 2

Stack Overflow用户

发布于 2016-02-28 08:31:36

可识别的问题。

通常,具有敏感信息(如密码)的配置字段的更改频率要比非敏感配置字段少得多。一个可能的解决方案是将配置分成两部分:

  1. 配置,这是特定于环境的,但不包含敏感信息。我建议您将这些文件与源代码放在一起,如果可能的话,生成这些文件并在构建时自动上传到您的配置存储区(在您的情况下是S3)。它们必须是版本化的,并绑定到应用程序的版本中。
  2. 包含敏感信息的配置。考虑到这个问题,并不是所有的团队成员都可以读/写这些信息。您可以将它们存储在具有特定访问权限的S3中,以便只有授权成员才能访问它们。您需要一种机制来在部署时将文件重新连接到一起,或者将应用程序更改为从不同的配置文件中读取。 然而,这只会解决你的部分问题。当敏感的配置键发生变化时,操作人员仍然需要执行更改。这是否可以接受取决于敏感配置键更改的频率。

一个替代S3的方法可以是运行一个私有的Git存储库(例如,AWS的CodecCommit )。您将有更好的版本控制和更容易的访问来执行更改,因为您已经在使用Git了。您仍然需要修复dev和or之间的分离访问权限,或者放弃它(因为DevOps是关于信任与合作的,这可能是个好主意)。您可以像我前面描述的那样,在这里应用类似的模式。

另一种解决方案可能是将敏感值的配置从属性文件移动到系统配置。当您已经使用了一个供应系统,如木偶或厨师,这将是自然的操作人员。或者将所有敏感值(如密码)设置为环境变量,并让应用程序将其作为系统属性读取。

希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2016-02-29 02:20:39

我们一直在使用dynamodb来保存配置值。这种方法的优点是可以轻松地从控制台读取和验证这些值。另外一个优点是,我们定期检查dynamodb的值,因此如果需要更改任何值,我们只需更改它,应用程序就会自动选择新值,而不是重新启动它。敏感值是使用KMS密钥加密存储的,只有运行应用程序的ec2角色才有权使用该密钥解密。我们加强了Netflix档案项目,以满足我们的需要。也许你可以去看看。

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

https://stackoverflow.com/questions/35677943

复制
相关文章

相似问题

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