我正在尝试为生产环境设置一个spring-cloud-config-server。我想要读取多个git代码库,所以我在src/ application.yml /resources中的配置服务器中提供了以下配置
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属性呢?如果通过环境变量传递复杂的map式结构,将会非常繁琐。
通过此配置的其他repos的最佳可能方式是什么?将一些配置作为环境变量传递还有其他缺点,比如这些属性不能在运行时刷新。
有没有可能额外的存储库配置是从主git (https://somedomain.com/project1/project1.git)本身的某个配置文件中挑选出来的?
发布于 2020-02-12 20:24:33
Spring Cloud Config Server提供了多个存储库的配置,可以通过url访问它们,就像我们对一个git存储库所做的那样。配置服务器将按模式获取每个配置,因此路径中的标签{application}将是查找正确存储库的关键。就像我做的那样:
spring: cloud: config: server: git: uri:https://github.com/solivaf/config-properties-foo
现在我们应该添加额外的存储库,如下所示:
spring: cloud: config: server: git: uri:https://github.com/solivaf/config-properties-foo repos: appFoo: pattern: app-foo uri: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,我们应该会得到另一个存储库作为响应。
$ 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应用程序的所有文件。响应顺序表示列表中第一个文件的优先级最高的文件的层次结构。
https://stackoverflow.com/questions/59584565
复制相似问题