Español
Integraciones
Git Sync

Git Sync

Gestiona la configuración de ReliaPulse como código con control de versiones Git.

Vista General

Git Sync habilita flujos de trabajo de infraestructura como código:

  • Almacena configuración en repositorios Git
  • Control de versiones de todos los cambios
  • Automatiza despliegues vía webhooks
  • Detecta y gestiona drift de configuración

Proveedores Soportados

ProveedorSoporte WebhookAPI
GitHub
GitLab
Bitbucket
Git GenéricoSolo manual-

Configuración

1. Crear Archivo de Configuración

Crea un archivo YAML en tu repositorio:

# status-page.yaml
apiVersion: v1
kind: StatusPageConfig
metadata:
  name: production-config
  configVersion: "1.0.0"
 
spec:
  componentGroups:
    - name: Servicios Backend
      order: 1
    - name: Infraestructura
      order: 2
 
  components:
    - name: API Gateway
      type: SERVICE
      group: Servicios Backend
      status: operational
 
    - name: Health Check API
      type: ENDPOINT
      group: Servicios Backend
      url: https://api.example.com/health
      method: GET
      checkInterval: 60
      conditions:
        - type: STATUS_CODE
          comparator: EQUALS
          target: "200"
 
    - name: CPU de Base de Datos
      type: METRIC
      group: Infraestructura
      integration: datadog-prod
      query: avg:aws.rds.cpuutilization{*}
      pollingInterval: 60
      warningThreshold: 70
      criticalThreshold: 90
 
  integrations:
    - name: datadog-prod
      type: DATADOG
      config:
        site: US1
        apiKey: ${DATADOG_API_KEY}
        appKey: ${DATADOG_APP_KEY}

2. Configurar Git Sync

  1. Navega a Configuración > Git Sync
  2. Haz clic en "Configurar"
  3. Completa los detalles:
CampoDescripción
ProveedorGitHub, GitLab, Bitbucket, Genérico
URL del RepositorioURL completa del repositorio
BranchBranch desde donde sincronizar
Ruta de ConfigRuta al archivo YAML
Método de AuthToken, SSH Key, o GitHub App
Auto SyncHabilitar sincronización por webhook
  1. Guarda la configuración

3. Configurar Webhook (Opcional)

Para sincronización automática en push:

  1. Copia la URL del Webhook mostrada después de guardar
  2. Copia el Secreto del Webhook
  3. En tu proveedor Git, crea un webhook:
    • URL: La URL del webhook de ReliaPulse
    • Secreto: El secreto del webhook
    • Eventos: Eventos de push
    • Content-Type: application/json

Esquema de Configuración

Estructura Raíz

apiVersion: v1
kind: StatusPageConfig
metadata:
  name: string          # Nombre de la config
  configVersion: string # Identificador de versión
 
spec:
  componentGroups: []   # Definiciones de grupos
  components: []        # Definiciones de componentes
  integrations: []      # Definiciones de integraciones

Grupos de Componentes

componentGroups:
  - name: Servicios Backend
    order: 1
    description: Infraestructura core del backend

Componentes

Tipo SERVICE

components:
  - name: API Gateway
    type: SERVICE
    group: Servicios Backend
    description: Enrutamiento principal de API
    status: operational

Tipo ENDPOINT

components:
  - name: Health Check
    type: ENDPOINT
    group: Servicios Backend
    url: https://api.example.com/health
    method: GET
    checkInterval: 60
    timeout: 5000
    headers:
      Authorization: Bearer ${API_TOKEN}
    conditions:
      - type: STATUS_CODE
        comparator: EQUALS
        target: "200"
      - type: RESPONSE_TIME
        comparator: LESS_THAN
        target: "1000"
    autoCreateIncident: true
    failureThreshold: 3

Tipo METRIC

components:
  - name: Uso de CPU
    type: METRIC
    group: Infraestructura
    integration: datadog-prod
    query: avg:system.cpu.user{*}
    pollingInterval: 60
    warningThreshold: 70
    criticalThreshold: 90

Integraciones

integrations:
  - name: datadog-prod
    type: DATADOG
    config:
      site: US1
      apiKey: ${DATADOG_API_KEY}
      appKey: ${DATADOG_APP_KEY}
 
  - name: prometheus-k8s
    type: PROMETHEUS
    config:
      url: https://prometheus.example.com
      username: ${PROMETHEUS_USER}
      password: ${PROMETHEUS_PASS}

Variables de Entorno

Referencia variables de entorno con ${VAR_NAME}:

config:
  apiKey: ${DATADOG_API_KEY}
⚠️

Nunca hagas commit de secretos directamente en YAML. Siempre usa variables de entorno.

Configura variables de entorno:

  1. En Docker: Añade al archivo .env
  2. En Kubernetes: Usa ConfigMaps/Secrets
  3. En CI/CD: Configura en la configuración del pipeline

Sincronización

Sincronización Manual

  1. Navega a Configuración > Git Sync
  2. Haz clic en "Sincronizar Ahora"
  3. Ve los resultados de la sincronización

Sincronización Automática

Con webhooks configurados:

  1. Push cambios al branch configurado
  2. El webhook dispara la sincronización
  3. La configuración se aplica automáticamente

Historial de Sincronización

Ve sincronizaciones pasadas:

  1. Navega a Configuración > Git Sync
  2. Desplázate a "Historial de Sincronización"
  3. Ve estado, timestamp, y cambios

Detección de Drift

Detecta recursos no gestionados por config:

GET /api/v1/config/drift

Respuesta:

{
  "totalResources": 15,
  "managedByConfig": 10,
  "manuallyCreated": 5,
  "drift": [
    {
      "resourceType": "component",
      "resourceName": "Servicio Manual",
      "reason": "not_in_config"
    }
  ]
}

Manejar Drift

Opciones para recursos no gestionados:

  1. Añadir a config - Incluir en archivo YAML
  2. Eliminar manualmente - Remover desde UI
  3. Ignorar - Dejar como override manual

Validación

Valida config antes de aplicar:

POST /api/v1/config/validate
Content-Type: application/yaml
 
<contenido yaml>

Respuesta:

{
  "valid": true,
  "warnings": [
    "Componente 'API' referencia integración no existente 'old-datadog'"
  ]
}

Endpoints API

EndpointDescripción
POST /config/validateValidar config YAML
POST /config/applyAplicar config
GET /config/exportExportar config actual
GET /config/driftDetectar drift
GET /config/git-syncObtener config de sync
POST /config/git-syncCrear config de sync
PATCH /config/git-syncActualizar config de sync
POST /config/git-sync/syncDisparar sync manual
GET /config/git-sync/historyObtener historial de sync

Mejores Prácticas

Estructura del Repositorio

/
├── status-page.yaml       # Config principal
├── .env.example           # Ejemplo de variables de entorno
└── scripts/
    └── validate.sh        # Validación pre-commit

Control de Versiones

  1. Usa branches - Prueba cambios en feature branches
  2. Revisa cambios - Flujo de trabajo con pull requests
  3. Tagea releases - Rastrea versiones de configuración

Integración CI/CD

# .github/workflows/status-page.yml
name: ReliaPulse Config
 
on:
  push:
    branches: [main]
    paths: ['status-page.yaml']
 
jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Validar config
        run: |
          curl -X POST $STATUS_PAGE_URL/api/v1/config/validate \
            -H "Authorization: Bearer $API_KEY" \
            -H "Content-Type: application/yaml" \
            -d @status-page.yaml

Solución de Problemas

Sincronización Fallida

  1. Verifica firma del webhook
  2. Verifica acceso al repositorio
  3. Valida sintaxis YAML
  4. Verifica variables de entorno

Errores de Validación

  1. Verifica sintaxis YAML
  2. Verifica campos requeridos
  3. Verifica referencias a integraciones
  4. Valida tipos de componentes

Webhook No Se Dispara

  1. Verifica que la URL del webhook sea correcta
  2. Verifica que el secreto coincida
  3. Confirma que los eventos push están habilitados
  4. Revisa logs de entrega del webhook

Documentación Relacionada