我有一个本地配置服务器,并且可以与像这样的yml配置设置一起正常工作吗?
spring:
cloud:
config:
server:
git:
uri: https://github.com/xxx/xxxxx
search-paths:
- 'kenya*'
- 'tanzania*'
- 'uganda*'
- 'congo*'
- 'zimbabwe*'
在我的本地项目中,我可以访问所有这些存储库,例如
http://localhost:8888/uganda/dev
这将返回正确的文件,并带有所选的个人资料广告。
但是,当我设置Pivotal Config服务器时,无论我将什么参数添加到路径,我都只会获得默认属性。
类似https://configserver.cfapps.io/uganda/dev的东西只在仓库的根目录返回默认属性。
如何使用
此处https://docs.run.pivotal.io/spring-cloud-services/config-server/configuring-with-git.html
表示的searchPaths
标记要添加我的所有子文件夹吗?
答案 0 :(得分:1)
如果您正在使用Pivotal Spring Cloud Services,则可以使用多个searchPaths
创建服务,如下所示:
cf create-service -c '{ "git": { "uri": "https://github.com/dmikusa-pivotal/cook-config.git", "label": "search-paths", "searchPaths": "dev,prod" } }' cook-config-server
searchPaths
参数仅以逗号分隔的搜索路径/模式列表。
您所指向的存储库中应该包含名为dev
和prod
的顶级文件夹。然后,配置服务器将从搜索路径文件夹中返回<app-name>.properties
(它支持的所有其他所有变体)。
您可以通过运行以下命令来验证您正在接收多个搜索路径中的数据:
curl -k -H "Authorization: bearer $(curl -k -s -X POST 'https://p-spring-cloud-services.uaa.<system_domain>/oauth/token' -d 'grant_type=client_credentials&client_id=<insert client id>&client_secret=<insert client_secret>' | jq .access_token | cut -d '"' -f 2)" <insert uri>/cook/prod
您需要将<system_domain>
替换为基础的系统域,将<insert client id>
和<insert client secret>
替换为服务实例的客户端ID和密码(针对运行以下应用程序的应用程序运行cf env <app>
有一个绑定的SCS Config服务器来获取这些值。
此命令将做两件事。首先,它将使用client_id
和client_secret
来获取令牌。然后,在第二个请求中使用令牌,以实际向配置服务器请求一些数据。
如果要从多个搜索路径获取配置,则应该看到这样的输出(请注意dev
和prod
子文件夹中的数据):
{"name":"cook","profiles":["prod"],"label":null,"version":"5d5a3f26022dd00becdbad855c7d27ae530685f7","state":null,"propertySources":[{"name":"https://github.com/dmikusa-pivotal/cook-config.git/prod/cook.properties","source":{"cook.special":"Prod Config"}},{"name":"https://github.com/dmikusa-pivotal/cook-config.git/dev/cook.properties","source":{"cook.special":"Dev Config"}},{"name":"https://github.com/dmikusa-pivotal/cook-config.git/cook.properties","source":{"cook.special":"Not in Folder config"}}]}
希望有帮助!