Перейти к основному содержимому

Хранение конфигурации в базе данных

В 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)
warning
  1. Файл config.json должен соответствовать тому, что используется у вас производственной среде;
  2. При переносе конфигурации Time не включает конфигурации из переменных среды TIME_*, все переменные окружения, которые в дальнейшем не будут использоваться как переменные для работы time-server, следует перенести в config.json.
  3. Все текущие сертификаты 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.