Как получить свойства с конфигурационного сервера, состоящего из нескольких репо - PullRequest
0 голосов
/ 17 мая 2019

Я хотел получить свойства из двух репозиториев git. один из них - https://username@bitbucket.my.domain.com/share.git - в нем будет файл свойств, содержащий некоторую пару общих значений ключа, а другой - https://username@bitbucket.my.domain.com/service.git - в нем будут файлы свойств всех микросервисов.
Пока я развертываю службу, только один файл yml (который находится в https://username@bitbucket.my.domain.com/share.git repo) читается сервером конфигурации. Чего мне не хватает? Как прочитать файл свойств из другого репо, т.е. тоже https://username@bitbucket.my.domain.com/service.git?

Я хотел развернуть службу в PCF. Поэтому я сконфигурировал config-сервер в PCF со следующим json.

{
    "count": 1,
    "git": {
        "label": "feature",
        "uri": "https://username@bitbucket.my.domain.com/share.git",
        "username": "username",
        "password": "password",
        "repos": {
            "configserver": {
                "password": "password",
                "label": "feature",
                "uri": "https://username@bitbucket.my.domain.com/service.git"
                "username": "username"
            }
        }
    }
}

Имя моей службы LogDemo , а профиль пружины активный . Я создал два файла yml и разместил в соответствующем репо. (Я дал одно и то же имя двум файлам, таким как LogDemo-active.yml ). Пока я развертываю службу, сервер конфигурации читает только один файл yml (который находится в https://username@bitbucket.my.domain.com/share.git repo). / env дает мне следующее:

{
  "profiles": [
    "active",
    "cloud"
  ],
  "server.ports": {
    "local.server.port": 8080
  },
  "configService:configClient": {
    "config.client.version": "234e59d4a9f80f035f00fdf07e6f9f16e5560a55"
  },
  "configService:https://username@bitbucket.my.domain.com/share.git/LogDemo-active.yml": {
    "key1": "value1",
    "key2": "value2"
  },
  ...................
  ...................

Чего мне не хватает? Как прочитать файл свойств из другого репозитория, т.е. https://username@bitbucket.my.domain.com/service.git тоже?

Ниже мой bootstrap.yml

spring:
  application:
    name: LogDemo
  mvc:
    view:
      prefix: /
      suffix: .jsp

Вот мой файл манифеста

---
inherit: baseManifest.yml
applications:
- name: LogDemo
  host: LogDemo
  env:
    LOG_LEVEL: INFO
    spring.profiles.active: active
    TZ: America/New_York
  memory: 1024M
  domain: my.domain.com
  services:
  - config-server-comp

1 Ответ

0 голосов
/ 20 мая 2019

При использовании нескольких репо, репо, которые будут применяться, зависят от шаблона, определенного для этих репо. Шаблон по умолчанию - <repo-name>/*. Таким образом, изменение имени репо на LogDemo активирует репо для вашего приложения, поскольку имя приложения, spring.application.name, равно LogDemo.

Если один или несколько шаблонов совпадают, то будет использоваться репо для соответствующих шаблонов. Если шаблон не соответствует, используется значение по умолчанию.

Полная информация описана в документации здесь.

https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html#_pattern_matching_and_multiple_repositories

Если вам не нужна или не нужна функция сопоставления с образцом, вы можете использовать [составной бэкэнд] ( https://docs.pivotal.io/spring-cloud-services/2-0/common/config-server/composite-backends.html). Составной бэкэнд позволяет вам определять несколько Git-репозиториев. Смотрите первый пример конфигурации здесь.

https://docs.pivotal.io/spring-cloud-services/2-0/common/config-server/composite-backends.html#general-configuration

...