Конфигурационный сервер
Общие сведения
Сервер конфигурации обеспечивает управление конфигурациями приложений Inspark Core, где файлы конфигураций приложений находятся в git репозитории.
Общая схема получения конфигурационных данных модулями ядра показана на рисунке.
Настройка Git хранилища
На примере GitLab репозитория приведем настройку хранилища.
- Для создания репозитория конфигураций создается проект. Название проекта может быть любое, но в проекте будут хранится конфигурации Core модулей конкретного инстанса.
- В проекте создаем папки по именам модулей Core. Эти имена должно использоваться в настройках модулей. Пример приведен на рисунке.
Файл application.yml
содержит общие настройки модулей. В папках модулей создаются конфиг файлы application.yml
, которые содержат настройки приложений.
3. Определите master ветку проекта, с которой будет работать Сервер конфигурации.
4. Создайте Acces token той учетной записи GitLab, под которой Сервер конфигурации будет считывать данные с проекта.
Установка Сервера конфигурации
Создать директорию /opt/config-server и поместить в нее config-server.jar, config-server.conf, application.yml
mkdir /opt/config-server
cp config-server.jar /opt/config-server
cp application.yml /opt/config-server
cp config-server.conf /opt/config-server
Создать файл сервиса /etc/systemd/system/config-server.service следующего содержания:
[Unit]
Description=config-server
After=syslog.target
[Service]
User=root
Group=root
ExecStart=/opt/config-server/config-server.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Перечитать список сервисов linux
systemctl daemon-reload
Запуск и остановку сервиса можно осуществлять стандартынми командами, модуль работает только в режиме 2
service config-server start
service config-server status
service config-server stop
Настройка Сервера Конфигурации
В файле application.yml
вносятся настройки Сервера Конфигураций
server:
# http порт для коннекта к серверу
port: 8888
spring:
application:
name: config-service
cloud:
config:
server:
git:
# Настройка на git server в формате http или ssh
# в примере подключаемся к проекту example в GitLab
uri: http://gitlab.example.ru/cd/example.git
# пример для ssh git@gitlab.infsys.ru:sem-next/cloud-configs.git
# доступ к git задается в ~/.ssh/known_hosts файле в формате ssh-rsa
# username и access token задаются только для http размещения git
username: user@inspark.ru
password: glpat-z-XXXXXXXXXXXXXXXX_
# ветка по умолчанию, в которой размещена конфигурация
default-label: master
# шаблон для хранения конфигураций приложений
search-paths: "{application}"
# console | file профили логирования (см. конфиг logback-spring.xml)
profiles:
active: file
# задание параметров подключения к серверу конфигурации
security:
user:
# пользователь
name: admin
# пароль
password: password
# уровни логирования INFO | DEBUG
logging:
level:
root: INFO
Настройка модуля Core
В модулях Core в файле application.yml указывается следующее (пример для модуля engine):
spring:
# имя приложения
application:
name: engine
# профили логирования, console - вывод в консоль, file - вывод в файл
profiles:
active: file
config:
import: optional:configserver:http://admin:password@<configServer>:8888
cloud:
config:
fail-fast: true
# с какой ветки в GIT забирать конфиги
label: develop
Важно
Ключ name
должен совпадать с названием папки модуля в проекте Git-хранилища.
FAQ
Как это работает
- Загружается модуль, обращается к Конфиг. серверу.
- Если конфигурационный сервер не доступен - модуль заканчивает работу
- При обращении модуля Конфиг Сервер формирует ему конфигурацию из общего файла
application.yml
и файла./<модуль>/application.yml
- Модуль получил конфигурацию.
Если в Git изменилась конфигурация
Для того, чтобы модули получили измененную конфигурацию их надо перестартовать
Как настроить автоматическое получение конфигурации модулями
Используйте CI/CD скрипты. При публикации изменений в рабочую ветку выполните все необходимые скрипты в CI/CD раннере по перестарту модулей