Конфигурация приложения ai-core
Скачать пример файла конфигурации
ai-core — локальное AI-ядро flip On-Premise. Сервис регистрирует установку в облаке flip и проксирует запросы AI-функций (генерация изображений, удаление фона, AI-текст) в облачное ядро https://ai.flip-chart.ru. Ключ установки хранится в базе данных ai-core в зашифрованном виде. Входящие запросы ai-core принимает только от backend; публикация через обратный прокси не требуется.
Компонент необязательный: без ai-core приложение работает, AI-функции недоступны (см. Отключение).
Файл конфигурации монтируется в контейнер по пути /flip/cfg/config.yml. Строка подключения к базе данных задаётся переменной окружения POSTGRES_DSN: по ней при старте контейнера применяются миграции, без неё контейнер не запускается.
Сетевой доступ
Требуется исходящий доступ по HTTPS (порт 443) к ai.flip-chart.ru. Переменные окружения HTTP_PROXY и HTTPS_PROXY не используются; прокси задаётся в Upstream.ProxyURL (см. Дополнительные параметры).
Настройка backend
В конфигурации backend задаются адрес ai-core (AI.LocalCore.BaseURL) и токен доступа (AI.LocalCore.Token), совпадающий с Auth.Local.Token. Для работы AI-функций в backend также требуются включённый file-handlers (FileHandlerServiceConfig) и S3-хранилище.
Переменные окружения
| Переменная | Описание |
|---|---|
POSTGRES_DSN | Обязательна. Строка подключения к базе flip_ai_core (секрет). В Docker Compose задаётся в .env (AI_CORE_POSTGRES_DSN), в Kubernetes — ключом POSTGRES_DSN секрета ai-core-config. |
Пример: postgres://flip:secret-passwd@flip-postgres:5432/flip_ai_core?sslmode=disable. Специальные символы в имени пользователя и пароле кодируются (percent-encoding); для подключения по TLS указывается sslmode=require или sslmode=verify-full.
Поля файла конфигурации также задаются переменными окружения: путь поля в верхнем регистре, . → _ (Auth.Local.Token → AUTH_LOCAL_TOKEN). Значение переменной окружения имеет приоритет над файлом.
База данных
ai-core использует отдельную базу flip_ai_core на том же сервере PostgreSQL, что и backend. База создаётся до первого запуска ai-core:
CREATE DATABASE flip_ai_core OWNER flip;flip — пользователь PostgreSQL приложения. В Standalone-установке (каталог deploy/docker-compose):
docker compose exec flip-postgres sh -c 'createdb -U "$POSTGRES_USER" -O "$POSTGRES_USER" flip_ai_core'Описание конфигурационных полей
Неизвестный ключ в файле — ошибка запуска.
Auth.Local
- Token: Токен доступа backend к ai-core (секрет), не короче 32 символов. Совпадает с
AI.LocalCore.Tokenв конфигурации backend. Генерация:openssl rand -hex 32. - PreviousToken: Прежний токен на время ротации. Вне ротации не задаётся.
Postgres
Необязательные параметры пула соединений.
- MaxOpenConns, MaxIdleConns: Размер пула соединений.
0— значение драйвера.
Пример:10 - ConnMaxLifetime: Максимальное время жизни соединения.
0— без ограничения.
Пример:30m
Дополнительные параметры
Уровень логирования, прокси и адреса листенеров задаются отдельным необязательным файлом. Путь к нему указывается в переменной окружения ADJUSTABLE_CONFIG_FILE. Эти параметры не задаются в config.yml и переменными окружения. Без файла действуют значения по умолчанию.
Logger:
Level: info # debug | info | warn | error
Elastic: false # формат логов ECS
Upstream:
ProxyURL: "" # прокси для запросов к https://ai.flip-chart.ru, например http://proxy.example.ru:3128
Server:
PublicAddr: ":9100"
MetricsAddr: ":9102"
ShutdownTimeout: 10sUpstream.ProxyURL — абсолютный адрес со схемой http или https. При изменении портов в Server правятся также AI.LocalCore.BaseURL в backend и порты контейнера.
Порты
| Порт | Назначение |
|---|---|
| 9100 | API для backend |
| 9102 | /metrics, /healthz, /readyz |
Остановка
При остановке ai-core дожидается завершения начатых генераций. Время на остановку контейнера — не меньше 120 секунд: stop_grace_period: 120s в docker-compose, terminationGracePeriodSeconds: 120 в Helm-чарте.
Ротация токена
- В конфигурации ai-core укажите текущий токен в
Auth.Local.PreviousToken, новый — вAuth.Local.Token; перезапустите ai-core. - Укажите новый токен в
AI.LocalCore.Tokenконфигурации backend; перезапустите backend. - Удалите
Auth.Local.PreviousTokenиз конфигурации ai-core; перезапустите ai-core.
Отключение
- Docker Compose: удалите сервис
flip-ai-coreизdocker-compose.yamlи секциюAIиз конфигурации backend, затем выполнитеdocker compose up -d --remove-orphans. - Kubernetes: укажите
ai-core.enabled: falseвvalues.yaml, удалите секциюAIиз конфигурации backend и выполнитеhelm upgrade.