gitops-drift-agent
GitOps Drift Remediation Agent
Промышленный автономный агент, который подключается к кластерам 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 |
| Нет | current-context | Контекст Kubernetes |
| Нет | — | URL репозитория GitOps для режима PR |
| Нет |
| Целевая ветка для PR |
| Нет | — | Токен Git-провайдера (GitHub/GitLab) |
| Нет |
| Путь к конфигурации политик восстановления |
| Нет |
| Путь к файлу журнала аудита |
| Нет |
| Уровень журналирования (info/warn/error) |
| Нет |
| Глобальный режим dry-run |
| Нет |
| HTTP-порт MCP-сервера |
| Нет |
| Фильтр пространств имён через запятую |
Использование
Команды 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:serverMCP-инструменты
Инструмент | Описание |
| Обнаружение дрейфа для ресурса или пространства имён |
| Список активных политик восстановления |
| Оценка политики для заданного дрейфа |
| Применение стратегии восстановления |
| Получение журнала аудита по ресурсу или пространству имён |
| Откат применённого восстановления |
Конфигурация 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 и операций файловой системы.
Вопросы безопасности
Принцип наименьших привилегий: агенту требуются только разрешения
get,list,watchиpatchна целевые ресурсы — никогдаcreateилиdeleteDry-run по умолчанию: все уровни политик по умолчанию работают в режиме dry-run, пока не будут явно включены
Немутируемость аудита: журналы аудита доступны только для добавления; ротация журналов выполняется внешними средствами
Маскирование секретов: значения секретных ресурсов всегда маскируются в журналах и PR
Изоляция конфигурации: агент никогда не изменяет файл kubeconfig
Аудит изменений политик: каждое изменение политики регистрируется с полной трассировкой
Проверка подлинности артефактов: все артефакты восстановления подписываются и проверяются перед применением
Участие в разработке
См. CONTRIBUTING.md. Все изменения должны включать:
Тесты для новых функций или исправлений
Обновлённую документацию
Записи в журнале изменений
Соблюдение стиля кода проекта
Лицензия
Apache 2.0 — см. LICENSE.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityCmaintenanceProvides MCP multi-cluster Kubernetes management and operations. It can be integrated as an SDK into your own project and includes nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.149MIT
- AlicenseNot gradedqualityAmaintenanceMCP server to lint and validate Kubernetes-related manifests(Helm, FluxCD, ArgoCD, Kustomize, etc.)MIT
- AlicenseNot gradedqualityDmaintenanceEnables Git repository operations and real-time monitoring via MCP tools, with support for WebSocket events, authentication, and observability.174MIT
- FlicenseNot gradedqualityBmaintenancePolicy-as-code gate for AI-SDLC, providing MCP tools to review prompts, diff tool manifests, vet MCP servers, and run evaluation suites for LLM agent repos.1
Related MCP Connectors
Remote MCP for Copilot CLI switch gate MCP, structured receipts, audit logs, and reviewer-ready evid
Monitor MCP servers, API contracts and AI outputs for schema drift. Alerts on breaking changes.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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