monitoring: Fase 1 bajo ArgoCD (solo los manifiestos propios)

Hasta ahora las alertas de Grafana se aplicaban a mano con kubectl apply,
asi que dependian de que alguien se acordara (se vio hoy al anadir las de B2).

Lista blanca explicita en vez del directorio entero: monitoring/ mezcla tres
duenos y solo uno es nuestro. Fuera quedan los ~40 renderizados del chart
kube-prometheus-stack (release Helm viva -> dos duenos del mismo objeto) y los
generados por controladores (rulefiles-0 del prometheus-operator, etc).
Adoptar el chart via source Helm queda como Fase 2.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-25 15:36:13 +00:00
co-authored by Claude Opus 4.8
parent d45e0a7cad
commit 9d903775ac
+56
View File
@@ -0,0 +1,56 @@
# 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 (release Helm viva).
# Meterlo aquí 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.
# Adoptarlo va aparte (source Helm + values-kube-prometheus-stack.yaml,
# borrando de git los ~40 renderizados). Pendiente = Fase 2.
# 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,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