Spring cloud 在SpringCloudConfigServer中组织大量应用程序配置
既然SpringCloud配置是GA,我们将考虑使用它作为SpringBoot应用程序的外部配置源。由于所涉及的技术对我们的组织来说是如此之新,我收到了很多关于云配置在生产中如何工作的问题,特别是在部署和灾难场景中 我想我开始了解服务器是如何加载和分发配置的,这让我想知道组织和部署配置的最佳方式是什么。我的第一个想法是让每个应用程序都有自己的Git repo和一个公共配置repo 这里的问题是我一直在误读文档。我的印象是我可以做这样的事情:Spring cloud 在SpringCloudConfigServer中组织大量应用程序配置,spring-cloud,Spring Cloud,既然SpringCloud配置是GA,我们将考虑使用它作为SpringBoot应用程序的外部配置源。由于所涉及的技术对我们的组织来说是如此之新,我收到了很多关于云配置在生产中如何工作的问题,特别是在部署和灾难场景中 我想我开始了解服务器是如何加载和分发配置的,这让我想知道组织和部署配置的最佳方式是什么。我的第一个想法是让每个应用程序都有自己的Git repo和一个公共配置repo 这里的问题是我一直在误读文档。我的印象是我可以做这样的事情: git: uri: ssh://git@stas
git:
uri: ssh://git@stash:7999/scc/common-config.git
repos:
app-config:
uri: ssh://git@stash:7999/scc/
pattern: app*-config.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*
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*
我们的想法是,app-config将获取所有匹配该模式的Git存储库。在部署新的应用程序时,我们会重新启动服务器,以在新的存储库中获取配置。我没有得到的是,该模式指的是指定存储库中的文件,而不是git文件本身。所以我真正要做的是这样的:
git:
uri: ssh://git@stash:7999/scc/common-config.git
repos:
app-config:
uri: ssh://git@stash:7999/scc/
pattern: app*-config.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*
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*
这种方法的问题是,每次部署另一个应用程序时,除了重新启动它们之外,我还需要一个过程来更新云配置服务器的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:
app-config:
uri: ssh://git@stash:7999/scc/
pattern: app*-config.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*
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*
这应该可以防止我的配置失控,只要我能保持域的逻辑性。那么,我的问题是什么?有两个:
git:
uri: ssh://git@stash:7999/scc/common-config.git
如果需要使用repo with模式,请确保bootstrap.yml中应用程序的spring.application.name具有相同的模式。比如说,
spring:
application:
name: domain-foo-app-a
虫子请到这里来:(但我不认为这是虫子)