Files

61 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Руководство по развертыванию (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`.