gitops-drift-agent
GitOps Drift Remediation Agent
Un agente autónomo de nivel de producción que se conecta a clústeres de Kubernetes y repositorios GitOps, identifica desviaciones de estado no autorizadas, genera estrategias de remediación seguras y ejecuta parches de API automatizados o Pull Requests.
Tabla de contenido
Related MCP server: kube-lint-mcp
Resumen
El Agente de remediación de desviación GitOps es una plataforma autónoma basada en políticas que supervisa continuamente el estado en vivo de los recursos de Kubernetes en comparación con la fuente de verdad declarada de GitOps. Cuando se detecta una desviación, el agente evalúa las políticas de remediación aplicables, calcula operaciones mínimas de parche JSON y las aplica directamente a través de la API de Kubernetes o abre Pull Requests contra el repositorio GitOps, todo con un registro de auditoría completo.
Principios fundamentales
Radio de explosión mínimo: los parches se calculan como la diferencia más pequeña posible, nunca reemplazos completos de recursos
Política primero: cada acción de remediación está controlada por políticas versionadas y configurables con niveles de riesgo
Registro de auditoría inmutable: cada decisión, detección y mutación se registra con contexto criptográfico
Nativo de GitOps: el agente se gestiona a sí mismo mediante GitOps y envía PRs de vuelta al repositorio
Listo para MCP: expone todas las capacidades como herramientas MCP para la integración con agentes LLM
Arquitectura
┌─────────────────────────────────────────────────────────────────────┐
│ 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) │
└─────────────┘ └───────────────┘Características
Característica | Descripción |
Detección de desviación | Diferenciación profunda basada en AST del estado de los recursos de Kubernetes en vivo frente al deseado |
Clasificación de riesgo | Puntuación de severidad automatizada (crítico / alto / medio / bajo) por ruta de campo |
Motor de políticas | Políticas declarativas y versionadas con reglas de permitir/denegar, prueba en seco y compuertas de aprobación |
Motor de parches | Cálculo de parches JSON RFC 6902 con soporte de aplicación del lado del servidor de K8s |
PRs de GitOps | Generación automatizada de Pull Requests con diff de desviación y justificación de remediación |
Registro de auditoría | Registros de auditoría estructurados e inmutables con cadenas de decisión completas |
Servidor MCP | Todas las capacidades del agente expuestas como herramientas MCP para la orquestación de agentes de IA |
CLI | CLI con todas las funciones para operación interactiva y automatizada |
Instalación
Requisitos previos
Node.js >= 20.0.0
kubectl configurado con acceso al clúster de destino
Credenciales de Git para el repositorio GitOps (para el modo PR)
Instalar desde el código fuente
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 globallyConfiguración
Toda la configuración se pasa mediante variables de entorno o un archivo de configuración.
Variables de entorno
Variable | Obligatoria | Valor por defecto | Descripción |
| No |
| Ruta al archivo kubeconfig |
| No | contexto-actual | Contexto de Kubernetes a utilizar |
| No | — | URL del repositorio GitOps para el modo PR |
| No |
| Rama de destino para los PRs |
| No | — | Token del proveedor de Git (GitHub/GitLab) |
| No |
| Ruta a la configuración de políticas de remediación |
| No |
| Ruta de salida del registro de auditoría |
| No |
| Nivel de registro (debug/info/warn/error) |
| No |
| Modo de prueba en seco global |
| No |
| Puerto HTTP del servidor MCP |
| No |
| Filtro de espacios de nombres separados por comas |
Uso
Comandos 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 3000API programática
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);
}Servidor MCP
El agente expone un servidor MCP (Model Context Protocol) que hace que todas las capacidades del agente estén disponibles como herramientas para agentes basados en LLM (Claude, GPT-4, etc.).
Iniciar el servidor
drift-agent mcp-server --port 3000
# or
npm run mcp:serverHerramientas MCP disponibles
Herramienta | Descripción |
| Detectar desviación para un recurso o espacio de nombres |
| Listar todas las políticas de remediación configuradas |
| Evaluar la desviación contra una política específica |
| Aplicar parches de remediación calculados |
| Recuperar eventos de auditoría para un recurso |
| Generar un PR de GitOps para la remediación de desviación |
| Revertir una remediación aplicada anteriormente |
Configuración del cliente MCP
{
"mcpServers": {
"gitops-drift-agent": {
"url": "http://localhost:3000/mcp",
"transport": "http"
}
}
}Motor de políticas
Las políticas se definen de forma declarativa y controlan todos los aspectos del ciclo de vida de la remediación.
Estructura de la política
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"Auditoría y telemetría
Cada acción del agente se registra en formato JSON estructurado:
{
"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"
}
}Desarrollo
# 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 buildPruebas
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run in watch mode
npm run test:watchLas pruebas se organizan en tests/ y utilizan Jest con ts-jest. Se proporcionan mocks para el cliente de Kubernetes y las operaciones del sistema de archivos.
Consideraciones de seguridad
Menor privilegio: el agente solo requiere permisos
get,list,watchypatchen los recursos de destino, nuncadeleteocreatePrueba en seco por defecto: todos los niveles de política están en modo de prueba en seco hasta que se habiliten explícitamente
Compuertas de aprobación: los cambios de riesgo alto y crítico requieren aprobación explícita mediante política
Inmutabilidad de auditoría: los registros de auditoría son de solo añadidura; la rotación de registros se gestiona externamente
Enmascaramiento de secretos: los valores de los recursos Secret siempre se redactan en los registros y PRs
Aislamiento de kubeconfig: el agente nunca modifica el kubeconfig
Contribuciones
Consulte CONTRIBUTING.md. Todas las contribuciones requieren:
Conjunto de pruebas aprobado con cobertura >= 80%
Sin nuevas advertencias de lint
Entradas de registro de auditoría para cualquier nueva ruta de mutación
Evaluación de políticas para cualquier nueva acción de remediación
Licencia
Apache 2.0 — consulte LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
One MCP endpoint for your company's tools, with per-person sign-in, policy and audit.
Authenticated MCP server for ClearPolicy policy and compliance workflows.
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.151MIT
- AlicenseNot gradedqualityCmaintenanceMCP server to lint and validate Kubernetes-related manifests(Helm, FluxCD, ArgoCD, Kustomize, etc.)59 PyPIMIT
- AlicenseCqualityBmaintenanceA policy-aware MCP server for GitHub and GitHub Actions that enables safe AI-assisted infrastructure workflows—inspecting repositories, preparing branches and pull requests, and constrained remote mutations behind explicit preview-bound approval tokens.18MIT
- AlicenseNot gradedqualityCmaintenanceProvides MCP tools for fetching GitHub PR diffs, searching codebases, running unit tests, and linting code, enabling automated code review and CI/CD workflows.MIT