# Руководство по развертыванию (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` и выполните: ```bash # 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_SIZE` - `DB_MAX_OVERFLOW` ## 4. Резервное копирование и Откат конфигураций Даже при работе в Kubernetes базу данных (PostgreSQL) желательно держать вне кластера (Managed Database/Patroni). **Бэкапы аудиозаписей:** Если вы используете `recording-service` с локальным хранением, смонтированные PVC (Persistent Volume Claims) с аудиозаписями нужно регулярно копировать. В инфраструктуре без K8s для этого предусмотрен скрипт `scripts/backup_data.ps1`.