如何设置 Pivotal Cloud Foundry Config Server 以使用我的 git 存储库中的多个搜索路径?

How to setup Pivotal Cloud Foundry Config Server to use multiple search paths from my git repo?

我有一个本地配置服务器,它可以像这样使用 yml 配置设置吗?

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/xxx/xxxxx
          search-paths:
          - 'kenya*' 
          - 'tanzania*' 
          - 'uganda*' 
          - 'congo*'
          - 'zimbabwe*'

在我的本地项目中,我可以访问所有这些存储库,例如

http://localhost:8888/uganda/dev

此 returns 包含预期的所选配置文件广告的正确文件。

但是,当我设置 Pivotal Config 服务器时,无论我向路径添加什么参数,我都只会获得默认属性。

类似这样的东西 https://configserver.cfapps.io/uganda/dev 仅 returns 存储库根目录中的默认属性。

如何使用

searchPaths Stated here https://docs.run.pivotal.io/spring-cloud-services/config-server/configuring-with-git.html

添加我的所有子文件夹的标志?

如果您使用的是 Pivotal Spring 云服务,您可以使用多个 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 参数仅采用逗号分隔的搜索列表 paths/patterns。

您指向的存储库应该有名为 devprod 的顶级文件夹。然后,配置服务器将从搜索路径文件夹中 return <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 配置服务器的应用程序来获取这些值)。

这个命令会做两件事。首先,它将使用 client_idclient_secret 来获取令牌。然后在第二个请求中使用该令牌,以实际从配置服务器请求一些数据。

如果您从多个搜索路径获取配置,您应该会看到这样的输出(请注意 devprod 子文件夹中的数据):

{"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"}}]}

希望对您有所帮助!