In-cluster агент

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

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

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

Нет GitOps

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

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

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

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

Прямой аудит получает snapshot metrics-server в момент запуска. Агент периодически собирает metrics-server и отправляет данные в Oopps.ai. Это не Prometheus-клиент: Prometheus/VictoriaMetrics опрашивает backend отдельным потоком.

Источники метрик не взаимозаменяемы

Агент 0.1.x → metrics-server внутри кластера. Backend → Prometheus/VictoriaMetrics для исторических рядов и, при ошибке, fallback к metrics-server через Kubernetes API. Наличие агента не подтверждает работоспособность Prometheus.

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

Архитектура

  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

На странице Агенты статус агента должен измениться с «Ожидает» на «Активен» после heartbeat. Если он остаётся в ожидании, проверьте token и исходящий HTTPS.

Уровни доступа (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, команды патчинга не будут выполнены.

Перед включением Apply

Требования

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

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

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

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 и kubectl top pods -A
Если нет — установите metrics-server.

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

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

Что дальше?