【发布时间】:2015-05-31 03:37:03
【问题描述】:
现在 Spring Cloud Config 是 GA,我们正在考虑将其用作 Spring Boot 应用程序的外部配置源。因为所涉及的技术对我们的组织来说非常新,所以我收到了很多关于 Cloud Config 将如何在生产环境中工作的问题,尤其是在部署和灾难场景方面。
我想我开始了解服务器如何加载和分发配置,这让我想知道组织和部署配置的最佳方式是什么。我的第一个想法是让每个应用程序都有自己的 Git 存储库以及通用配置存储库。
这里的问题是我一直在误读文档。我的印象是我可以做这样的事情:
git:
uri: ssh://git@stash:7999/scc/common-config.git
repos:
app-config:
uri: ssh://git@stash:7999/scc/
pattern: app*-config.git
考虑到 app-config 部分会选择与该模式匹配的所有 Git 存储库。当我们部署新的应用程序时,我们会重新启动服务器以获取新存储库中的配置。我没有得到的是该模式是指指定存储库中的文件,而不是 git 文件本身。所以我真正要做的是这样的:
git:
uri: ssh://git@stash:7999/scc/common-config.git
repos:
app-foo-config:
uri: ssh://git@stash:7999/scc/app-foo-config.git
pattern: app-foo*
我对这种方法的问题是,每次我部署另一个应用程序时,我都需要一个过程来更新云配置服务器的 bootstrap.yml 文件,除了重新启动它们之外,还需要添加另一个应用程序的存储库,就像这样:
git:
uri: ssh://git@stash:7999/scc/common-config.git
repos:
app-foo-config:
uri: ssh://git@stash:7999/scc/app-foo-config.git
pattern: app-foo*
app-bar-config:
uri: ssh://git@stash:7999/scc/app-bar-config.git
pattern: app-bar*
这并不理想。对我来说,看起来我必须将我的配置按域分成几个存储库,这给了我这样的结果:
git:
uri: ssh://git@stash:7999/scc/common-config.git
repos:
domain-foo-config:
uri: ssh://git@stash:7999/scc/domain-foo-config.git
pattern: domain-foo*
domain-bar-config:
uri: ssh://git@stash:7999/scc/domain-bar-config.git
pattern: domain-bar*
domain-baz-config:
uri: ssh://git@stash:7999/scc/domain-baz-config.git
pattern: domain-baz*
只要我能保持域的逻辑,这应该可以防止我的配置过于失控。那么,我的问题是什么?有两个:
我的最终方法是合理的还是我缺少的更好的方法?
文档暗示配置可以在文件夹中,这将有助于保持配置的井井有条。有没有人遇到过这种情况?
另外,由于您已经深入我的文字墙,我认为多个 repo 配置的模式存在错误。
如果没有模式,服务器不会从 repo 中的任何文件传递任何配置。最重要的是,虽然模式:“*”有效,但它仅适用于第一次回购。之后,无论给出何种模式,Cloud Config Server 都无法从任何其他 repo 中的任何文件加载任何配置。这包括默认存储库。
【问题讨论】:
-
Bugs 请到这里:github.com/spring-cloud/spring-cloud-config(但我不认为这是一个错误)
标签: spring-cloud