Как настроить Pivotal Cloud Foundry Config Server для использования нескольких путей поиска из моего репозитория git?

У меня есть локальный сервер конфигурации, и он нормально работает с такой настройкой конфигурации 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 возвращает только значение по умолчанию свойства в корне репо.

Как я могу использовать

searchPaths Указаны здесь https://docs.run.pivotal.io/spring-cloud-services/config-server/configuring-with-git.html

флаг, чтобы добавить все мои подпапки?


person IsaacK    schedule 15.05.2019    source источник


Ответы (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> на идентификатор клиента и секрет вашего экземпляра службы (запустите cf env <app> для приложения, которое имеет связанный сервер конфигурации SCS, чтобы получить эти значения).

Эта команда сделает две вещи. Во-первых, он будет использовать 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"}}]}

Надеюсь, это поможет!

person Daniel Mikusa    schedule 20.05.2019