# Fase 1 de meter monitoring/ bajo ArgoCD (2026-07-25). # # Por qué una lista blanca de ficheros y no el directorio entero: monitoring/ # mezcla TRES dueños distintos y solo uno es nuestro. # # A) Lo que escribimos nosotros -> el include de aquí abajo, ArgoCD manda. # B) Lo que genera el chart -> kube-prometheus-stack. Sigue SIN estar en # esta lista, y con razón: gestionarlo desde aquí como manifiestos sueltos # daría DOS dueños al mismo objeto y reproduciría la deriva del three-way # merge que ya se comió el alerting y el token de Telegram. Desde la Fase 2 # (2026-07-25) lo gestiona su propia Application con source Helm -> # argocd-app-kube-prometheus-stack.yaml, y los ~40 renderizados que había # volcados en git se han borrado. Un solo dueño, el chart. # C) Lo que fabrican los controladores solos -> serviceaccount-default, # configmap-kube-root-ca.crt y el rulefiles-0 (lo genera el # prometheus-operator desde los PrometheusRule). En git no pintan nada; # si ArgoCD los gestionara pelearía con el operator sin parar. # # OJO: ingress-kube-prometheus-stack-grafana.yaml NO está en la lista a # propósito — ese ingress lo gestiona Helm (managed-by=Helm). Es grupo B. # # Y OJO 2: este fichero DEBE vivir dentro de monitoring/ y estar en el include. # Es el patrón de la casa (cada app lleva su argocd-app.yaml en su directorio). # Si la Application no está dentro del path que ella misma vigila, el primer # sync con prune:true la ve como recurso huérfano y SE BORRA A SÍ MISMA # (pasó el 2026-07-25 al dejarla solo en argocd/, que es un volcado, no fuente). # # Motivo de la Fase 1: hasta hoy las alertas de Grafana se aplicaban a mano con # kubectl apply, así que dependían de que alguien se acordara. Ahora git manda. apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: monitoring namespace: argocd annotations: notifications.argoproj.io/subscribe.on-sync-failed.telegram: "5138407666" notifications.argoproj.io/subscribe.on-health-degraded.telegram: "5138407666" spec: project: default source: repoURL: https://git.chemavx.xyz/chemavx/k8s-manifests targetRevision: HEAD path: monitoring directory: recurse: false # Lista blanca explícita. Al añadir un fichero nuestro a monitoring/ hay # que añadirlo AQUÍ o ArgoCD lo ignora. Y al revés: sacar un fichero de # esta lista con prune:true activo BORRA el recurso del cluster. include: "{argocd-app.yaml,argocd-app-kube-prometheus-stack.yaml,configmap-grafana-alerting.yaml,configmap-chemavx-homelab-overview.yaml,deployment-uptime-kuma.yaml,service-uptime-kuma.yaml,pvc-uptime-kuma-pvc.yaml,ingress-uptime-kuma.yaml,ingress-uptime-kuma-redirect.yaml,ingress-prometheus.yaml,infisical-grafana-telegram.yaml}" destination: server: https://kubernetes.default.svc namespace: monitoring syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true