Резервный вариант Spring Cloud Config Server для нескольких репозиториев

Мы используем сервер конфигурации Spring Cloud, поддерживаемый битбакетом для файлов конфигурации. Мы настроили несколько репозиториев в application.yml сервера конфигурации. Мы хотим сделать его доступным, даже если битбакет не работает. Мы ищем решение, которое может кэшировать репозитории конфигурации, и в случае, если битбакет не работает, он все еще может обслуживать свойства разных репозиториев. Ниже мой application.yml

spring:
  cloud:
    config:
      server:
        git:
          uri: [email protected]:config1.git
          ignoreLocalSshSettings: true
          privateKey: ${PEM}
          repos:
            service1:
              uri: [email protected]:config2.git
              ignoreLocalSshSettings: true
              privateKey: ${PEM}
            service2:
              uri: [email protected]:config3.git
              ignoreLocalSshSettings: true
              privateKey: ${PEM}

Я попытался настроить spring.cloud.config.server.git.basedir, но он клонирует только репозиторий базовой конфигурации. Как мы можем заставить сервер конфигурации обслуживать локально, если битбакет не работает.


person Sumit Kumar    schedule 23.07.2020    source источник


Ответы (1)


Использование свойства basedir — единственный выход. Вот как мы это используем:

spring:
  cloud:
    config:
      server:
        git:
          uri: [email protected]:config1.git
          ignoreLocalSshSettings: true
          privateKey: ${PEM}
          basedir: /home/user/config1-repo
          repos:
            service1:
              uri: [email protected]:config2.git
              ignoreLocalSshSettings: true
              privateKey: ${PEM}
              basedir: /home/user/config2-repo
            service2:
              uri: [email protected]:config3.git
              ignoreLocalSshSettings: true
              privateKey: ${PEM}
              basedir: /home/user/config3-repo

Как вы пытались воспроизвести сценарий, в котором git недоступен и заставляет сервер конфигурации извлекать свойства из пути локального сервера. Я предлагаю вам создать локальный путь. И с помощью git-bash клонируйте репозиторий конфигурации внутри вашего локального каталога репо. Например, в этом случае зайдите внутрь /home/user/localRepo и клонируйте туда репозиторий git с конфигурацией. Убедитесь, что все файлы и папки правильно клонированы.

Затем попробуйте воспроизвести сценарий git недоступен и проверьте, может ли ваш сервер конфигурации MS извлекать свойства из локального каталога. Это единственный выход для отступления.

person Som    schedule 23.07.2020
comment
Недавно мы столкнулись с проблемой с битбакетом, когда он был недоступен, и новые реплики наших приложений не могли получить конфигурацию. Я ищу свойство baseir для нескольких репозиториев - person Sumit Kumar; 23.07.2020
comment
@SumitKumar: Можете ли вы показать, как вы настраиваете свойство baseir в файле application.yaml. Я предлагаю вам клонировать config-repo в папку на основе вашего каталога. Я думаю, вы столкнулись с проблемой с новыми репликами, а не с существующими репликами. Таким образом, вы можете попробовать мой подход, который гарантирует, что даже при первой попытке поиска в случае неудачи он будет выбирать из вашего локального базового каталога. - person Som; 23.07.2020
comment
Я добавил так, как вы описали, но в этом каталоге я вижу только файлы репозитория config1, я хочу решить это для нескольких репозиториев. - person Sumit Kumar; 23.07.2020
comment
@SumitKumar: у вас должен быть базовый каталог для каждого репо, которое вы используете индивидуально. И вам нужно клонировать репозитории на соответствующие локальные базы данных. Я отредактировал свой снимок application.yaml. обратитесь к этому. - person Som; 23.07.2020
comment
да, это работает. Я пробовал это раньше, но структура папок была неправильной. Спасибо - person Sumit Kumar; 23.07.2020