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
| Proveedor | Soporte Webhook | API |
|---|---|---|
| GitHub | ✅ | ✅ |
| GitLab | ✅ | ✅ |
| Bitbucket | ✅ | ✅ |
| Git Genérico | Solo 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
- Navega a Configuración > Git Sync
- Haz clic en "Configurar"
- Completa los detalles:
| Campo | Descripción |
|---|---|
| Proveedor | GitHub, GitLab, Bitbucket, Genérico |
| URL del Repositorio | URL completa del repositorio |
| Branch | Branch desde donde sincronizar |
| Ruta de Config | Ruta al archivo YAML |
| Método de Auth | Token, SSH Key, o GitHub App |
| Auto Sync | Habilitar sincronización por webhook |
- Guarda la configuración
3. Configurar Webhook (Opcional)
Para sincronización automática en push:
- Copia la URL del Webhook mostrada después de guardar
- Copia el Secreto del Webhook
- 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 integracionesGrupos de Componentes
componentGroups:
- name: Servicios Backend
order: 1
description: Infraestructura core del backendComponentes
Tipo SERVICE
components:
- name: API Gateway
type: SERVICE
group: Servicios Backend
description: Enrutamiento principal de API
status: operationalTipo 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: 3Tipo METRIC
components:
- name: Uso de CPU
type: METRIC
group: Infraestructura
integration: datadog-prod
query: avg:system.cpu.user{*}
pollingInterval: 60
warningThreshold: 70
criticalThreshold: 90Integraciones
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:
- En Docker: Añade al archivo
.env - En Kubernetes: Usa ConfigMaps/Secrets
- En CI/CD: Configura en la configuración del pipeline
Sincronización
Sincronización Manual
- Navega a Configuración > Git Sync
- Haz clic en "Sincronizar Ahora"
- Ve los resultados de la sincronización
Sincronización Automática
Con webhooks configurados:
- Push cambios al branch configurado
- El webhook dispara la sincronización
- La configuración se aplica automáticamente
Historial de Sincronización
Ve sincronizaciones pasadas:
- Navega a Configuración > Git Sync
- Desplázate a "Historial de Sincronización"
- Ve estado, timestamp, y cambios
Detección de Drift
Detecta recursos no gestionados por config:
GET /api/v1/config/driftRespuesta:
{
"totalResources": 15,
"managedByConfig": 10,
"manuallyCreated": 5,
"drift": [
{
"resourceType": "component",
"resourceName": "Servicio Manual",
"reason": "not_in_config"
}
]
}Manejar Drift
Opciones para recursos no gestionados:
- Añadir a config - Incluir en archivo YAML
- Eliminar manualmente - Remover desde UI
- 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
| Endpoint | Descripción |
|---|---|
POST /config/validate | Validar config YAML |
POST /config/apply | Aplicar config |
GET /config/export | Exportar config actual |
GET /config/drift | Detectar drift |
GET /config/git-sync | Obtener config de sync |
POST /config/git-sync | Crear config de sync |
PATCH /config/git-sync | Actualizar config de sync |
POST /config/git-sync/sync | Disparar sync manual |
GET /config/git-sync/history | Obtener 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-commitControl de Versiones
- Usa branches - Prueba cambios en feature branches
- Revisa cambios - Flujo de trabajo con pull requests
- 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.yamlSolución de Problemas
Sincronización Fallida
- Verifica firma del webhook
- Verifica acceso al repositorio
- Valida sintaxis YAML
- Verifica variables de entorno
Errores de Validación
- Verifica sintaxis YAML
- Verifica campos requeridos
- Verifica referencias a integraciones
- Valida tipos de componentes
Webhook No Se Dispara
- Verifica que la URL del webhook sea correcta
- Verifica que el secreto coincida
- Confirma que los eventos push están habilitados
- Revisa logs de entrega del webhook
Documentación Relacionada
- Configuración - Gestión de configuración
- Referencia API - Endpoints de API
- Arquitectura - Diseño del sistema