现在,Spring Cloud Config是GA,我们正在考虑将其用作Spring Boot应用程序的外部配置源。由于所涉及的技术对我们的组织来说是如此新颖,因此我对如何在生产中使用Cloud Config,特别是在部署和灾难情景方面提出了很多疑问。
我想我已经开始了解服务器如何加载和分发配置,这让我想知道组织和部署配置的最佳方式是什么。我的第一个想法是,每个应用程序都有自己的Git repo以及常见的配置存储库。
这里的问题是我误读了文档。我的印象是我能做到这样的事情:
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*
我对这种方法的问题在于,每次部署另一个应用程序时,我都需要一个进程来更新Cloud Config Servers' bootstrap.yml文件,除了重新启动它们之外,还要添加另一个应用程序的repo,如下所示:
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都无法从任何其他仓库中的任何文件加载任何配置。这包括默认仓库。
答案 0 :(得分:2)
没有模式,服务器不会提供任何配置 回购中的任何文件。最重要的是,模式:“*”工作, 它只适用于第一个回购。之后,Cloud Config Server 无法从任何其他仓库中的任何文件加载任何配置 无论给出什么样的模式。这包括默认仓库。
如果您不需要该模式,您只需使用
即可git:
uri: ssh://git@stash:7999/scc/common-config.git
如果您需要使用带模式的repo,请确保您的应用程序在bootstrap.yml中的spring.application.name具有相同的模式。例如,
spring:
application:
name: domain-foo-app-a