Skip to main content
Glama

GitOps Drift Remediation Agent

License: Apache 2.0 Node.js Version TypeScript

Промышленный автономный агент, который подключается к кластерам Kubernetes и репозиториям GitOps, выявляет несанкционированный дрейф состояния, формирует безопасные стратегии восстановления и выполняет автоматические API-патчи или Pull Request'ы.


Содержание


Related MCP server: kube-lint-mcp

Обзор

GitOps Drift Remediation Agent — это автономная платформа, управляемая политиками, которая непрерывно сравнивает фактическое состояние ресурсов Kubernetes с декларируемым в GitOps источником истины. При обнаружении дрейфа агент оценивает применимые политики восстановления, вычисляет минимальные операции JSON Patch и либо применяет их напрямую через Kubernetes API, либо открывает Pull Request'ы в GitOps-репозиторий — всё с полным журналом аудита.

Ключевые принципы

  • Минимальный радиус поражения: патчи вычисляются как наименьший возможный diff, никогда не заменяя ресурсы целиком

  • Приоритет политик: каждое действие по восстановлению контролируется настраиваемыми версионируемыми политиками с уровнями риска

  • Неизменяемый журнал аудита: каждое решение, обнаружение и изменение фиксируется с криптографическим контекстом

  • Нативный GitOps: сам агент управляется через GitOps и отправляет PR обратно в репозиторий

  • Готовность к MCP: все возможности доступны как MCP-инструменты для интеграции с LLM-агентами


Архитектура

┌─────────────────────────────────────────────────────────────────────┐
│                    GitOps Drift Remediation Agent                   │
│                                                                     │
│  ┌─────────────┐    ┌──────────────┐    ┌────────────────────────┐ │
│  │  AST Differ │───▶│ Policy Engine│───▶│    Patch Engine        │ │
│  │             │    │              │    │                        │ │
│  │ • Deep diff │    │ • Risk tiers │    │ • JSON Patch RFC 6902  │ │
│  │ • Field     │    │ • Allow/deny │    │ • K8s API apply        │ │
│  │   tracking  │    │ • Dry-run    │    │ • PR generation        │ │
│  │ • Severity  │    │ • Approvals  │    │ • Rollback support     │ │
│  └─────────────┘    └──────────────┘    └────────────────────────┘ │
│         │                  │                       │                │
│         └──────────────────┴───────────────────────┘                │
│                            │                                        │
│                   ┌────────▼────────┐                               │
│                   │  Audit Logger   │                               │
│                   │                 │                               │
│                   │ • Structured    │                               │
│                   │   JSON logs     │                               │
│                   │ • Event chain   │                               │
│                   │ • Pino backend  │                               │
│                   └─────────────────┘                               │
│                                                                     │
│  ┌──────────────────────────────────────────────────────────────┐  │
│  │                      MCP Server                              │  │
│  │  detect_drift │ list_policies │ remediate │ get_audit_trail  │  │
│  └──────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────┘
         │                                          │
         ▼                                          ▼
  ┌─────────────┐                          ┌───────────────┐
  │  Kubernetes │                          │  GitOps Repo  │
  │  Cluster(s) │                          │  (Git/GitHub) │
  └─────────────┘                          └───────────────┘

Возможности

Функция

Описание

Обнаружение дрейфа

Глубокое AST-сравнение фактического и декларируемого состояния ресурсов Kubernetes

Классификация рисков

Автоматическая оценка критичности (критический / высокий / средний / низкий) для каждого пути поля

Механизм политик

Декларативные версионируемые политики с правилами allow/deny, режимом dry-run и шлюзами утверждения

Механизм патчей

Вычисление JSON Patch по RFC 6902 с поддержкой server-side apply в K8s

GitOps PR

Автоматическая генерация Pull Request'ов с diff-ом дрейфа и обоснованием восстановления

Журнал аудита

Неизменяемые структурированные журналы аудита с полными цепочками решений

MCP-сервер

Все возможности агента доступны как MCP-инструменты для оркестрации ИИ-агентами

CLI

Полнофункциональный CLI для интерактивной и автоматизированной работы


Установка

Предварительные требования

  • Node.js >= 20.0.0

  • kubectl с настроенным доступом к целевому кластеру

  • Учётные данные Git для GitOps-репозитория (для режима PR)

Установка из исходного кода

git clone https://github.com/your-org/gitops-drift-remediation-agent.git
cd gitops-drift-remediation-agent
npm install
npm run build
npm link   # optional: makes `drift-agent` available globally

Конфигурация

Вся конфигурация передаётся через переменные окружения или файл конфигурации.

Переменные окружения

Переменная

Обязательная

По умолчанию

Описание

KUBECONFIG

Нет

~/.kube/config

Путь к файлу kubeconfig

KUBECONTEXT

Нет

current-context

Контекст Kubernetes

GITOPS_REPO_URL

Нет

URL репозитория GitOps для режима PR

GITOPS_BRANCH

Нет

main

Целевая ветка для PR

GITOPS_TOKEN

Нет

Токен Git-провайдера (GitHub/GitLab)

POLICY_CONFIG_PATH

Нет

./policies.yaml

Путь к конфигурации политик восстановления

AUDIT_LOG_PATH

Нет

./audit.log

Путь к файлу журнала аудита

AUDIT_LOG_LEVEL

Нет

info

Уровень журналирования (info/warn/error)

DRY_RUN

Нет

false

Глобальный режим dry-run

MCP_PORT

Нет

3000

HTTP-порт MCP-сервера

NAMESPACE_FILTER

Нет

*

Фильтр пространств имён через запятую


Использование

Команды CLI

# Detect drift across all namespaces
drift-agent detect --namespace production --output json

# Detect and auto-remediate with policy gate
drift-agent remediate --namespace production --policy strict --dry-run

# List active policies
drift-agent policy list

# Show audit trail for a resource
drift-agent audit --resource deployments/my-app --namespace production

# Start MCP server
drift-agent mcp-server --port 3000

Программный API

import { AstDiffer } from './src/detector/ast-differ';
import { RemediationPolicy } from './src/policy/remediation-policy';
import { PatchEngine } from './src/remediator/patch-engine';

const differ = new AstDiffer();
const drifts = await differ.detectDrift(liveResource, desiredResource);

const policy = new RemediationPolicy(policyConfig);
const decision = await policy.evaluate(drifts, resourceContext);

if (decision.approved) {
  const engine = new PatchEngine(k8sClient);
  await engine.applyRemediation(decision.patches, resourceRef);
}

MCP-сервер

Агент предоставляет MCP (Model Context Protocol) сервер, который открывает все возможности агента в виде инструментов для LLM-агентов.

Запуск сервера

drift-agent mcp-server --port 3000
# or
npm run mcp:server

MCP-инструменты

Инструмент

Описание

detect_drift

Обнаружение дрейфа для ресурса или пространства имён

list_policies

Список активных политик восстановления

evaluate_policy

Оценка политики для заданного дрейфа

apply_remediation

Применение стратегии восстановления

get_audit_trail

Получение журнала аудита по ресурсу или пространству имён

rollback_remediation

Откат применённого восстановления

Конфигурация MCP-клиента

{
  "mcpServers": {
    "gitops-drift-agent": {
      "url": "http://localhost:3000/mcp",
      "transport": "http"
    }
  }
}

Механизм политик

Политики определяются декларативно и управляют всем жизненным циклом восстановления.

Структура политики

apiVersion: drift.gitops.io/v1
kind: RemediationPolicy
metadata:
  name: production-strict
spec:
  riskTier: high
  autoRemediate: false
  requireApproval: true
  dryRunFirst: true
  rules:
    - field: "spec.replicas"
      action: restore
      severity: high
    - field: "spec.template.spec.containers[*].image"
      action: block
      severity: critical
  excludeFields:
    - "metadata.annotations['kubectl.kubernetes.io/last-applied-configuration']"
    - "metadata.resourceVersion"
    - "metadata.uid"

Аудит и телеметрия

Каждое действие агента записывается в структурированном виде:

{
  "timestamp": "2024-06-01T12:00:00.000Z",
  "eventId": "evt_01J0ABC123",
  "eventType": "DRIFT_DETECTED",
  "severity": "high",
  "resource": {
    "kind": "Deployment",
    "name": "my-app",
    "namespace": "production",
    "apiVersion": "apps/v1"
  },
  "drift": {
    "field": "spec.replicas",
    "desired": 3,
    "live": 1,
    "changeType": "edited"
  },
  "policy": {
    "name": "production-strict",
    "decision": "remediate",
    "riskTier": "high"
  },
  "actor": {
    "agentVersion": "1.0.0",
    "kubeContext": "prod-cluster"
  }
}

Разработка

# Install dependencies
npm install

# Run in development mode (ts-node)
npm run dev -- detect --namespace default

# Type check only
npm run typecheck

# Lint
npm run lint

# Format
npm run format

# Build
npm run build

Тестирование

# Run all tests
npm test

# Run with coverage
npm run test:coverage

# Run in watch mode
npm run test:watch

Тесты организованы в каталоге tests/ и используют Jest с ts-jest. Предоставлены моки для клиента Kubernetes и операций файловой системы.


Вопросы безопасности

  1. Принцип наименьших привилегий: агенту требуются только разрешения get, list, watch и patch на целевые ресурсы — никогда create или delete

  2. Dry-run по умолчанию: все уровни политик по умолчанию работают в режиме dry-run, пока не будут явно включены

  3. Немутируемость аудита: журналы аудита доступны только для добавления; ротация журналов выполняется внешними средствами

  4. Маскирование секретов: значения секретных ресурсов всегда маскируются в журналах и PR

  5. Изоляция конфигурации: агент никогда не изменяет файл kubeconfig

  6. Аудит изменений политик: каждое изменение политики регистрируется с полной трассировкой

  7. Проверка подлинности артефактов: все артефакты восстановления подписываются и проверяются перед применением


Участие в разработке

См. CONTRIBUTING.md. Все изменения должны включать:

  • Тесты для новых функций или исправлений

  • Обновлённую документацию

  • Записи в журнале изменений

  • Соблюдение стиля кода проекта


Лицензия

Apache 2.0 — см. LICENSE.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/felipeassis10/gitops-drift-remediation-agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server