Хранение конфигурации в базе данных
В Time реализована возможность хранения конфигурации в базе данных вместо config.json
.
База данных для хранения конфигурации и база данных приложения - это две разные сущности. Вы можете хранить конфигурацию в отдельной базе данных.
Сформируйте строку для подключения к базе данных
Вы можете использовать уже существующею базу данных, которую использует сервер Time. Для этого создайте копию значения SqlSettings.DataSource
из config.json
, или из переменной среды TIME_SQLSETTINGS_DATASOURCE
.
Как перенести конфигурацию из config.json в базу данных
Выполните команду
./time config migrate --from "путь до файла config.json" --to "DSN базы данных PostgreSQL"
где DSN базы данных PostgreSQL
- это строка для подключения к базе данных сформированая на прошлом шаге.
Пример запуска через джобу в kubernetes:
apiVersion: batch/v1
kind: Job
spec:
template:
spec:
containers:
- name: migrate-config
image: docker.registry.tinkoff.ru/time/time-server/time-server:6.201.17
args:
- config
- migrate
- --from
- "/time/config/config.json" # path to config.json file
- --to
- $(TIME_SQLSETTINGS_DATASOURCE)
- Файл
config.json
должен соответствовать тому, что используется у вас производственной среде; - При переносе конфигурации Time не включает конфигурации из переменных среды
TIME_*
, все переменные окружения, которые в дальнейшем не будут использоваться как переменные для работы time-server, следует перенести вconfig.json
. - Все текущие сертификаты SAML будут перенесены в базу данных. Файлы конфигурации хранятся в таблице
configurationfiles
в базе данных. Все файлы должны быть доступны из вызываемой оболочки shell;
Убедитесь, что конфигурация была перенесена корректно
Конфигурация хранится в таблице configuration
. Выполните следующий запрос, чтобы убедиться, что конфигурация была перенесена корректно:
SELECT * FROM configurations WHERE active = true;
Должна быть возвращена одна строка и value
поле должна соответствовать вашему config.json
.
Если вы переносили файлы, то выполните следующий запрос:
SELECT * FROM configurationfiles;
Должны быть возвращены строки со всем перенесенными файлы, где в поле data
должно быть содержимое файла.
Настроить сервер для использования базы данных
Для того чтобы сервер Time использовал базу данных для хранения конфигурации, необходимо установить переменную среды TIME_CONFIG
c DSN базы данных, который указывался при переносе.
После применения переменной среду нужно перезапустить сервер Time.
Откат
Если у вас возникли проблемы с переносом конфигурации в базу данных, вы можете откатиться на использование файла конфигурации config.json
, убрав переменную среды TIME_CONFIG
.