GitOps: рекомендации через Merge Request

Oopps.ai готовит изменения requests в исходном YAML-файле, показывает diff и после отдельного подтверждения создаёт MR в GitLab. Поддерживаются Helm values, raw Kubernetes manifests и Kustomize. Terraform и Azure отключены.

Подключение

  1. Owner открывает Настройки → GitOps → Репозитории, добавляет GitLab project, целевую ветку и проектный token с правами API на чтение файлов, создание ветки, commit и MR. Ограничьте token этим проектом и не выдавайте право обходить protected branch.
  2. Во вкладке Маршруты сопоставьте kind, namespace и имя workload с репозиторием, YAML-файлом и точным путём значений. Начните с пресета либо discovery ArgoCD/Flux и проверьте предложенное сопоставление.
  3. Для live preflight платформе нужен доступ к Kubernetes API на чтение workload и PDB. Write RBAC в кластере этому пути не нужен; Monitor остаётся доступным.

От рекомендации до MR

  1. Откройте Рекомендации → Применение и автоматизация → Rightsizing. Approver или выше выбирает GitOps diff у актуальной рекомендации.
  2. Проверьте репозиторий, целевую ветку, путь и каждую строку diff. Неточное сопоставление блокирует создание MR.
  3. Нажмите Создать MR и подтвердите запись. Перед ней Oopps.ai снова проверит workload, PDB, маршрут, активность репозитория и исходные файлы. Изменившиеся данные требуют новой проверки. До начала записи доступна кнопка «Обновить diff»; просмотрите обновлённый план и подтвердите MR отдельно.
  4. Откройте MR из карточки результата или истории операций. Команда проверяет его, выполняет merge и наблюдает синхронизацию и rollout. Oopps.ai не выполняет merge и не запускает GitOps-контроллер.

Пример Helm-маршрута

Workload: Deployment / production / api
File: charts/api/values.yaml
Strategy: helm_values
Value path: resources.requests

Для нескольких контейнеров путь должен однозначно указывать на нужный блок, например через {{container_name}}. Raw manifest должен совпасть с workload; Kustomize создаёт соответствующий patch. Просмотр diff обязателен.

Безопасность и повтор запроса

Операция хранит source commit и исходные файлы. Запись идёт в отдельную ветку с проверкой версии файла, без force-push. Повтор проверяет существующий MR и не создаёт второй commit при подтверждённом результате. Если ответ GitLab потерян, проверьте историю и повторите запрос; сторонние изменения ветки требуют инженера.

Отключённый репозиторий, отозванный token, другая организация, старый план и Terraform-маршрут не разрешают запись. Старые приостановленные операции и автоматические GitOps-задания не запускаются при обновлении.

Результат и откат

Созданный или merged MR не означает успешное применение и не доказывает снижение счёта. Проверьте синхронизацию, состояние workload и результат рекомендации. При необходимости команда делает revert через свой GitOps-процесс. Direct apply для известных Argo/Flux ресурсов остаётся заблокированным.

Full Auto rightsizing сохраняет отдельные правила прямого исполнения; автоматический merge MR не поддерживается. Внешний агент 0.3.1 остаётся Monitor.