Externalise-Spring Cloud配置服务器多个git repo配置

问题描述 投票:0回答:1

我正在尝试为生产环境设置spring-cloud-config-server。我想读取多个git仓库,所以我在src / main / resources中放置的config-server的application.yml中提供以下配置]

spring:
  application:
    name: config-server
  profiles:
    active: git
  cloud:
    config:
      server:
        git:
          uri: https://somedomain.com/project1/project1.git
          username: project1user
          password: project1password
          repos:
            project2:
              pattern: project2/*
              uri: https://somedomain.com/project2/project2.git
              username: project2user
              password: project2password
              searchPaths:
                - 'src/main/resources'

现在,我要外部化配置服务器的此配置。

我可以通过以下环境变量提供主要的git repo(https://somedomain.com/project1/project1.git)属性

spring.cloud.config.server.git.uri=https://somedomain.com/project1/project1.git
spring.cloud.config.server.git.username=project1user
spring.cloud.config.server.git.password=project1password

但是其他git repo属性如何。如果通过环境变量进行传递,则传递复杂的类似于地图的结构将非常繁琐。

传递其他存储库的最佳配置的最佳方法是什么?将某些配置作为环境变量进行传递还有其他缺点,例如那些属性无法在运行时刷新。

是否有可能从主git(https://somedomain.com/project1/project1.git)本身的某个配置文件中选择其他回购配置?

我正在尝试为生产环境设置spring-cloud-config-server。我想读取多个git仓库,所以我在src / main / ...]中放置的config-server的application.yml中提供以下配置。

Spring Cloud Config Server提供了具有多个存储库的配置,可以像我们对一个git repo一样通过url访问它们。配置服务器将通过模式获取每个配置,因此路径中的标签{application}将是找到正确存储库的关键。就像我的一样:
春天:云:配置:服务器:git:uri:https://github.com/solivaf/config-properties-foo

现在,我们应该添加其他存储库,如下所示:

春天:云:配置:服务器:git:uri:https://github.com/solivaf/config-properties-foo回购:appFoo:模式:app-foouri:https://github.com/solivaf/config-properties-bar


重新启动配置服务器并执行以下请求。

$ curl localhost:8080/fooapp/prod { "name": "fooapp", "profiles": [ "prod" ], "label": null, "version": "8686fb74f9af0aead98bd20d6e20e84a37028781", "state": null, "propertySources": [ { "name": "https://github.com/solivaf/config-properties-foo/application-prod.yml", "source": { "bar.foo": "testProdPropertiesYml" } }, { "name": "https://github.com/solivaf/config-properties-foo/application.yml", "source": { "bar.foo": "testPropertiesYml" } } ] }

现在,我们可以看到用于应用程序fooapp的存储库,因为我们没有任何模式映射到该应用程序,因此,如果我们指定在应用程序配置中映射的模式app-foo,则配置服务器将使用默认应用程序-server属性文件,我们应该获取另一个存储库作为响应。

$ curl localhost:8080/app-foo/prod { "name": "app-foo", "profiles": [ "prod" ], "label": null, "version": "f34ced0565042be4cf87c937c1dab2703e0b8ed2", "state": null, "propertySources": [ { "name": "https://github.com/solivaf/config-properties-bar/app-foo-prod.yml", "source": { "foo.bar": "testProdPropertiesYml" } }, { "name": "https://github.com/solivaf/config-properties-bar/application-prod.yml", "source": { "foo.bar": "testProdPropertiesYml" } }, { "name": "https://github.com/solivaf/config-properties-bar/application.yml", "source": { "foo.bar": "testPropertiesYml" } } ] }

现在,我们拥有正确的存储库,该存储库已映射到我们的属性文件以及代表我们的app-foo应用程序的所有文件中。响应顺序表示文件的层次结构是列表中第一个文件的最高优先级。
spring spring-boot spring-cloud spring-cloud-config spring-cloud-config-server
1个回答
0
投票

现在,我们应该添加其他存储库,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.