4.3 KiB
Руководство по развертыванию (Deployment)
Контакт-центр поддерживает два основных сценария развертывания на серверах: упрощенный (через Docker Compose для небольших стендов) и enterprise-grade (через Kubernetes и Helm для продакшена).
1. Требования к Production-окружению
Для запуска в боевых условиях (Scale Profile) строго обязателен PostgreSQL. Запуск на SQLite в Production категорически не поддерживается. Также для связи микросервисов в продакшене требуется запущенный кластер RabbitMQ.
2. Развертывание через серверный Docker Compose (Test / Stage)
Если у вас один выделенный сервер (VPS/VM Linux) и вы хотите настроить автоматический деплой из GitLab:
Готовые скрипты находятся в scripts/:
install_gitlab_runner.sh— регистрирует раннер на сервере.bootstrap_gitlab_deploy.sh— подготавливает базовые папки и .env-файлы.deploy_gitlab.sh— сам скрипт деплоя.
В директории deployment/ лежат файлы конфигураций для сервера:
docker-compose.server.registry.yml— тянет собранные образы напрямую из GitLab Container Registry..env.production.template— шаблон боевых секретов, включаяAPP_TOKEN_SECRETиOIDC_...для Keycloak.
Как обновиться (CI/CD Pipeline):
GitLab CI (файл .gitlab-ci.yml) собирает Docker-образы для каждого микросервиса (services/*) при merge в ветку main и перезапускает Compose-файл на вашем выделенном сервере.
3. Развертывание в Kubernetes (On-premise / Cloud Production)
Для крупных внедрений контакт-центра (когда нужен автомасштаб ai_voice_runtime_service или routing-service при высокой нагрузке) используется встроенный Helm-чарт.
Исходники манифестов лежат в:
deployment/helm/— основной Helm Chart микросервисной платформы.deployment/kubernetes/— статические манифесты.
3.1. Установка Helm чарта
Для установки чарта в кластер перейдите в директорию deployment/helm и выполните:
# 1. Создание отдельного namespace
kubectl create namespace mvp-cc
# 2. Установка/обновление платформы
helm upgrade --install mvp-cc-prod ./ \
--namespace mvp-cc \
-f values.yaml \
-f values.prod.yaml
3.2. Масштабирование (Scale Profiles)
Шаблоны Helm поддерживают включение профилей нагрузки. Например, для запуска scale500 (профиль на 500 одновременных линий/пользователей):
- Отключите встроенные SQLite-заглушки во
values.yaml. - Строго пропишите внешний
DATABASE_URLдо высокодоступного кластера PostgreSQL. - Настройте пулинг коннектов:
DB_POOL_SIZEDB_MAX_OVERFLOW
4. Резервное копирование и Откат конфигураций
Даже при работе в Kubernetes базу данных (PostgreSQL) желательно держать вне кластера (Managed Database/Patroni).
Бэкапы аудиозаписей:
Если вы используете recording-service с локальным хранением, смонтированные PVC (Persistent Volume Claims) с аудиозаписями нужно регулярно копировать. В инфраструктуре без K8s для этого предусмотрен скрипт scripts/backup_data.ps1.