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
Параметры конфигурации
| Параметр | По умолчанию | Описание |
|---|---|---|
agentToken | — | Bearer token (обязательно) |
config.apiUrl | https://app.oopps.ai | URL API Oopps.ai |
rbacLevel | monitor | monitor или apply |
config.collectInterval | 60 | Интервал сбора метрик (секунды) |
config.pushInterval | 300 | Интервал отправки метрик (секунды) |
config.logLevel | INFO | Уровень логирования (DEBUG, INFO, WARNING) |
resources.requests.cpu | 50m | CPU request |
resources.requests.memory | 64Mi | Memory request |
resources.limits.cpu | 200m | CPU limit |
resources.limits.memory | 256Mi | Memory limit |
Применение рекомендаций через агент
Когда вы нажимаете Apply на rightsizing-рекомендации для кластера с агентом, процесс отличается от прямого патча:
1. Вы нажимаете Apply
Oopps.ai создаёт команду для агента с нужным patch-телом.
2. Агент забирает команду
При следующем poll (до 60 сек) агент получает команду и выполняет patch в кластере.
3. Результат отображается в UI
Агент отчитывается о результате. Статус рекомендации обновляется на Applied или Failed.
Для применения рекомендаций агент должен быть установлен с уровнем
apply. Если агент работает в режиме monitor,
команды патчинга не будут выполнены.
Проверки безопасности
Перед каждым патчем агент автоматически проверяет:
- System namespaces — запрет на изменения в
kube-system,kube-public,kube-node-lease - PodDisruptionBudgets — если PDB не позволяет disruptions, патч блокируется
- Rollout health — после патча агент 3 минуты отслеживает, что все реплики поднялись
Требования
- Kubernetes 1.24+
- metrics-server установлен в кластере
- Исходящий HTTPS-доступ к
app.oopps.ai(порт 443) - Helm 3.x для установки
Управление агентами
На вкладке Агенты коннектора вы можете:
- Посмотреть список агентов, их статус и время последнего heartbeat
- Отозвать токен агента — агент перестанет авторизоваться и прекратит работу
Для полного удаления агента из кластера:
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.
Что дальше?
- Рекомендации — типы рекомендаций и как их применять
- Аудит Kubernetes — глубокий анализ кластеров
- GitOps — применение изменений через Merge Request
- Коннекторы — подключение облачных провайдеров