Skip to main content
Glama

GitOps Drift Remediation Agent

License: Apache 2.0 Node.js Version TypeScript

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 globally

Configuració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

KUBECONFIG

No

~/.kube/config

Ruta al archivo kubeconfig

KUBECONTEXT

No

contexto-actual

Contexto de Kubernetes a utilizar

GITOPS_REPO_URL

No

URL del repositorio GitOps para el modo PR

GITOPS_BRANCH

No

main

Rama de destino para los PRs

GITOPS_TOKEN

No

Token del proveedor de Git (GitHub/GitLab)

POLICY_CONFIG_PATH

No

./policies.yaml

Ruta a la configuración de políticas de remediación

AUDIT_LOG_PATH

No

./audit.log

Ruta de salida del registro de auditoría

AUDIT_LOG_LEVEL

No

info

Nivel de registro (debug/info/warn/error)

DRY_RUN

No

false

Modo de prueba en seco global

MCP_PORT

No

3000

Puerto HTTP del servidor MCP

NAMESPACE_FILTER

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 3000

API 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:server

Herramientas MCP disponibles

Herramienta

Descripción

detect_drift

Detectar desviación para un recurso o espacio de nombres

list_policies

Listar todas las políticas de remediación configuradas

evaluate_policy

Evaluar la desviación contra una política específica

apply_remediation

Aplicar parches de remediación calculados

get_audit_trail

Recuperar eventos de auditoría para un recurso

generate_pr

Generar un PR de GitOps para la remediación de desviación

rollback_remediation

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 build

Pruebas

# Run all tests
npm test

# Run with coverage
npm run test:coverage

# Run in watch mode
npm run test:watch

Las 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

  1. Menor privilegio: el agente solo requiere permisos get, list, watch y patch en los recursos de destino, nunca delete o create

  2. Prueba en seco por defecto: todos los niveles de política están en modo de prueba en seco hasta que se habiliten explícitamente

  3. Compuertas de aprobación: los cambios de riesgo alto y crítico requieren aprobación explícita mediante política

  4. Inmutabilidad de auditoría: los registros de auditoría son de solo añadidura; la rotación de registros se gestiona externamente

  5. Enmascaramiento de secretos: los valores de los recursos Secret siempre se redactan en los registros y PRs

  6. 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.

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