In-cluster агент

Агент работает внутри вашего кластера: непрерывно собирает метрики, применяет rightsizing-рекомендации и отправляет данные в Oopps.ai. Устанавливается одной командой через Helm.

Когда нужен агент

Oopps.ai поддерживает три способа применения rightsizing-рекомендаций: прямой патч через kubeconfig, GitOps PR через GitLab и in-cluster агент. Агент решает сценарии, где остальные два способа не подходят:

Нет GitOps

Если workloads управляются ArgoCD или Flux, но GitOps-репозиторий не подключён к Oopps.ai — прямой патч будет откачен контроллером, а GitOps PR создать некуда. Агент применяет рекомендации изнутри, минуя reconciliation loop.

Kubeconfig нельзя отдать наружу

Корпоративные политики безопасности, закрытый контур (air-gapped, VPN-only), требования минимизировать привилегии внешних систем. Агент работает через собственный ServiceAccount — kubeconfig никуда не передаётся, наружу идёт только HTTPS-трафик к API Oopps.ai.

Нужен непрерывный мониторинг

Без агента метрики собираются только во время аудита (один snapshot). Агент собирает данные каждые 60 секунд и пушит агрегированные метрики каждые 5 минут — рекомендации точнее, аномалии видны быстрее.

Как это работает

Архитектура

  Kubernetes-кластер                           Oopps.ai SaaS
 ┌──────────────────────┐                    ┌─────────────────┐
 │                      │   HTTPS (outbound) │                 │
 │   ┌──────────────┐   │ ─────────────────► │  /api/agent/*   │
 │   │  oopps-agent │   │   push метрик      │                 │
 │   │  (Helm chart)│   │   poll команд      │  Рекомендации   │
 │   └──────┬───────┘   │   heartbeat        │  Анализ         │
 │          │           │ ◄───────────────── │  Команды        │
 │          ▼           │                    │                 │
 │   metrics-server     │                    └─────────────────┘
 │   pods, deployments  │
 └──────────────────────┘

Агент запускает 4 параллельных цикла:

ЦиклИнтервалЧто делает
Collect 60 сек Собирает CPU/Memory метрики подов через metrics-server API
Push 5 мин Отправляет накопленные метрики в Oopps.ai
Commands 60 сек Забирает команды (patch/rollback) и выполняет их в кластере
Heartbeat 60 сек Отправляет пульс — статус коннектора обновляется в UI

Установка

1. Зарегистрируйте агент

Откройте Oopps.ai → ваш коннектор → вкладка Агенты → нажмите Зарегистрировать агент.

Укажите имя и уровень доступа (monitor или apply). После регистрации вы получите bearer token — скопируйте его, он показывается только один раз.

2. Установите агент

Быстрая установка (одна команда):

curl -s https://oopps.ai/install.sh | bash -s -- --token <TOKEN>

Скрипт автоматически добавит Helm-репозиторий, создаст namespace oopps-system и установит агент.

Дополнительные параметры:

curl -s https://oopps.ai/install.sh | bash -s -- \
  --token <TOKEN> \
  --rbac apply \
  --namespace my-namespace \
  --context my-cluster

Или вручную через Helm:

helm repo add oopps https://oopps.ai/helm
helm install oopps-agent oopps/oopps-agent \
  --namespace oopps-system --create-namespace \
  --set agentToken=<TOKEN> \
  --set rbacLevel=monitor

TOKEN — bearer token из шага 1.

3. Проверьте статус

kubectl get pods -l app.kubernetes.io/name=oopps-agent
kubectl logs -l app.kubernetes.io/name=oopps-agent --tail=20

В UI Oopps.ai статус коннектора должен измениться на Active в течение минуты. Первые метрики появятся через 5 минут.

Уровни доступа (RBAC)

Агент создаёт ClusterRole с правами, зависящими от параметра rbacLevel. Вы полностью контролируете, что агент может делать в кластере.

УровеньПраваВозможности
monitor get, list, watch Только сбор метрик. Агент не может изменять workloads.
apply get, list, watch, patch Сбор метрик + применение rightsizing-рекомендаций (patch deployments, statefulsets, daemonsets).
Рекомендация

Начните с уровня monitor — он полностью read-only. Когда убедитесь, что рекомендации правильные, переключите на apply для автоматического применения.

Чтобы сменить уровень доступа:

helm upgrade oopps-agent oopps/oopps-agent \
  --set rbacLevel=apply \
  --reuse-values

Параметры конфигурации

ПараметрПо умолчаниюОписание
agentTokenBearer token (обязательно)
config.apiUrlhttps://app.oopps.aiURL API Oopps.ai
rbacLevelmonitormonitor или apply
config.collectInterval60Интервал сбора метрик (секунды)
config.pushInterval300Интервал отправки метрик (секунды)
config.logLevelINFOУровень логирования (DEBUG, INFO, WARNING)
resources.requests.cpu50mCPU request
resources.requests.memory64MiMemory request
resources.limits.cpu200mCPU limit
resources.limits.memory256MiMemory limit

Применение рекомендаций через агент

Когда вы нажимаете Apply на rightsizing-рекомендации для кластера с агентом, процесс отличается от прямого патча:

1. Вы нажимаете Apply

Oopps.ai создаёт команду для агента с нужным patch-телом.

2. Агент забирает команду

При следующем poll (до 60 сек) агент получает команду и выполняет patch в кластере.

3. Результат отображается в UI

Агент отчитывается о результате. Статус рекомендации обновляется на Applied или Failed.

Важно

Для применения рекомендаций агент должен быть установлен с уровнем apply. Если агент работает в режиме monitor, команды патчинга не будут выполнены.

Проверки безопасности

Перед каждым патчем агент автоматически проверяет:

Требования

Управление агентами

На вкладке Агенты коннектора вы можете:

Для полного удаления агента из кластера:

curl -s https://oopps.ai/install.sh | bash -s -- --uninstall
# или вручную:
helm uninstall oopps-agent -n oopps-system
kubectl delete namespace oopps-system

Устранение проблем

Агент не появляется в UI

Проверьте
kubectl logs -l app.kubernetes.io/name=oopps-agent --tail=50
Ищите ошибки 401 Unauthorized (неверный токен) или сетевые ошибки (нет доступа к app.oopps.ai).

Метрики не появляются

Проверьте
Установлен ли metrics-server: kubectl get apiservice v1beta1.metrics.k8s.io
Если нет — установите metrics-server.

Патч не применяется

Проверьте
Уровень доступа: helm get values oopps-agent | grep rbacLevel
Должен быть apply. Если monitor — выполните helm upgrade с --set rbacLevel=apply.

Что дальше?