Установка On-Prem
Пошаговая инструкция по развёртыванию Oopps.ai в вашем кластере Kubernetes с помощью Helm.
Минимальные требования к ресурсам
| Компонент | CPU (request) | RAM (request) | RAM (limit) |
|---|---|---|---|
| Backend | 100m | 512 Mi | 1 Gi |
| Frontend | 50m | 64 Mi | 128 Mi |
| PostgreSQL (встроенная) | 100m | 256 Mi | 512 Mi |
| Итого | 250m | 832 Mi | 1.6 Gi |
Системные компоненты Kubernetes (kube-proxy, CoreDNS, metrics-server и др.) занимают дополнительно 300–500 MiB RAM.
| Конфигурация | vCPU | RAM |
|---|---|---|
| Минимум (тестирование) | 2 | 4 GB |
| Рекомендация (прод) | 4 | 8 GB |
Ноды с 2 GB RAM недостаточно — после системных компонентов
Kubernetes не останется места для backend-пода (512 Mi request).
Backend останется в статусе Pending.
Предварительные требования
- Kubernetes 1.23+ — managed или self-managed кластер
- Helm 3.x — установлен локально
- Ingress Controller — нужен только для варианта Ingress; для первого теста можно использовать port-forward или LoadBalancer
- PostgreSQL — Managed PostgreSQL (рекомендуется) или встроенная БД
- Домен — для доступа к платформе (например,
oopps.example.com)
В Yandex Cloud рекомендуется использовать Gwin (встроенный Ingress Controller). Для других облаков и on-prem кластеров подойдёт nginx-ingress или любой другой контроллер, поддерживающий стандартные аннотации Ingress.
Установка через Helm
1. Установите платформу
Выполните команду helm install с OCI-чартом:
helm install oopps-platform \
oci://cr.yandex/crpmb7aia1nose81sno1/oopps/platform/chart \
--namespace oopps --create-namespace \
-f values-marketplace.yaml
Файл values-marketplace.yaml содержит параметры вашей инсталляции.
Пример минимальной конфигурации:
# values-marketplace.yaml
global:
domain: oopps.example.com
externalDatabase:
enabled: true
host: rc1a-xxx.mdb.yandexcloud.net
port: 6432
database: oopps
username: oopps
password: "<DB_PASSWORD>"
postgres:
enabled: false
autoConnector:
billingAccountID: "dn2xxxxxxxxxxxxxx" # опционально, для биллинга
2. Проверьте статус подов
kubectl get pods -n oopps
Все поды должны перейти в статус Running в течение 2–3 минут.
3. Откройте доступ к платформе
Выберите один из трёх способов:
Вариант A: Port Forward (быстрый тест)
Самый простой способ — без внешнего IP, без домена, без TLS. Подходит для первого знакомства.
kubectl port-forward svc/frontend 8080:80 -n oopps
Откройте http://localhost:8080/login в браузере.
Переходите сразу на /login или /register.
Если открыть корень /, произойдёт редирект и порт
:8080 может потеряться из URL.
Вариант B: LoadBalancer (внешний IP без домена)
Платформа получит публичный IP от облачного провайдера:
helm upgrade --install oopps-platform \
oci://cr.yandex/crpmb7aia1nose81sno1/oopps/platform/chart \
--namespace oopps --create-namespace \
-f values-marketplace.yaml \
--set frontend.serviceType=LoadBalancer \
--set ingress.enabled=false
Дождитесь получения внешнего IP:
kubectl get svc frontend -n oopps -w
Когда в колонке EXTERNAL-IP появится адрес,
откройте http://<EXTERNAL-IP>/login в браузере.
Вариант C: Ingress + DNS + TLS (продакшн)
Установите Ingress Controller
(nginx-ingress
или Gwin/ALB
для Yandex Cloud). Установите ingress.className в имя
вашего IngressClass и затем:
- Узнайте IP Ingress Controller:
kubectl get svc -A | grep -i ingress - Создайте A-запись в DNS:
oopps.example.com → <IP> - Создайте TLS secret вручную или через cert-manager:
и укажите существующий secret:kubectl create secret tls oopps-tls \ --cert=fullchain.pem --key=privkey.pem -n ooppsingress: className: nginx tls: enabled: true secretName: oopps-tls
4. Зарегистрируйте первого пользователя
Откройте /register по адресу платформы
(например, http://localhost:8080/register для port-forward
или https://oopps.example.com/register для Ingress).
При регистрации первого пользователя автоматически создаётся организация.
На нодах Yandex Cloud также создаётся коннектор, если backend видит metadata-сервис
или в values явно задан autoConnector.folderID.
В Yandex Cloud авто-коннектор определяет folder_id и получает IAM-токен
от сервисного аккаунта ноды (169.254.169.254). Если указан
autoConnector.billingAccountID — данные биллинга
коннектор сможет запросить биллинг после создания. В других облаках
создайте коннектор вручную по инструкции соответствующего провайдера.
Параметры конфигурации
| Параметр | По умолчанию | Описание |
|---|---|---|
global.domain |
— | Домен для доступа к платформе (обязательно) |
externalDatabase.host |
— | Хост PostgreSQL (если не указан, используется встроенная БД) |
externalDatabase.port |
6432 |
Порт PostgreSQL |
externalDatabase.database |
oopps |
Имя базы данных |
externalDatabase.username |
oopps |
Пользователь PostgreSQL |
externalDatabase.password |
— | Пароль PostgreSQL |
autoConnector.billingAccountID |
— | ID биллинг-аккаунта Yandex Cloud (опционально, для биллинга) |
ingress.tls.enabled |
true |
Включить TLS |
ingress.tls.secretName |
— | Имя TLS-секрета (если без cert-manager) |
Настройка выделенного сервисного аккаунта
По умолчанию авто-коннектор использует сервисный аккаунт ноды. Для продакшн-среды рекомендуется создать выделенный сервисный аккаунт с минимально необходимыми правами.
После установки откройте настройки коннектора в UI платформы и измените метод аутентификации на авторизованный ключ выделенного сервисного аккаунта.
Мульти-кластер
Для мониторинга дополнительных кластеров установите Helm-чарт oopps-agent:
helm install oopps-agent \
oci://cr.yandex/crpmb7aia1nose81sno1/oopps/platform/agent \
--namespace oopps-system --create-namespace \
--set config.apiUrl=https://oopps.example.com \
--set agentToken=<TOKEN> \
--set rbacLevel=monitor
Токен можно получить в UI платформы: Агенты → Новый агент. Выполняйте команду с kube-context целевого кластера.
Что дальше?
- Обновление — как обновить платформу до новой версии
- Решение проблем — если что-то пошло не так
- Аудит Kubernetes — как работает анализ кластеров
- Рекомендации — типы рекомендаций и расчёт экономии