Files

4.3 KiB
Raw Permalink Blame History

Руководство по развертыванию (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_SIZE
    • DB_MAX_OVERFLOW

4. Резервное копирование и Откат конфигураций

Даже при работе в Kubernetes базу данных (PostgreSQL) желательно держать вне кластера (Managed Database/Patroni).

Бэкапы аудиозаписей: Если вы используете recording-service с локальным хранением, смонтированные PVC (Persistent Volume Claims) с аудиозаписями нужно регулярно копировать. В инфраструктуре без K8s для этого предусмотрен скрипт scripts/backup_data.ps1.