El chart era un release Helm gestionado a mano (helm upgrade) desde abril. Ahora lo gestiona su propia Application con source Helm, version clavada a 83.2.0 (la que ya corria: esto es una adopcion, no una actualizacion). Los valores se mudan de values-kube-prometheus-stack.yaml al valuesObject de la Application, con sus comentarios: ahi esta el historial de los retoques a mano que se recuperaron en julio (alerting, SSO de Authentik, token de Telegram), y perderlo seria perder el mapa. Inline y no multi-source $values porque ese montaje se auto-podo la Application de infisical el 2026-06-18, y tener los valores en dos sitios es la deriva que veniamos a matar. La adopcion se verifico ANTES de activar el auto-sync: aplicada sin syncPolicy, ArgoCD daba 96/97 Synced sin haber sincronizado nunca. El que faltaba era el Deployment de Grafana, y no por deriva: el render del subchart no declara managed-by: Helm ni el restartedAt del podTemplate, asi que el merge a 3 bandas del cliente los habria BORRADO (reinicio de Grafana + Helm perdiendo la propiedad del objeto). Con ServerSideApply/ServerSideDiff ArgoCD solo toca lo que declara: 97/97 Synced, cero operaciones de sync, cero pods reiniciados. selfHeal probado con replicas 1->2 en kube-state-metrics, revertido en 11s. skipCrds: true a proposito: ArgoCD pasa --include-crds por defecto y los 10 CRD de monitoring.coreos.com no los gestiona nadie hoy. Contrapartida documentada en el fichero: al subir de chart hay que aplicarlos a mano. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
59 lines
3.0 KiB
YAML
59 lines
3.0 KiB
YAML
# 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
|