tools: auditor de exports contra el cluster

Deja en el repo lo que hoy destapó que argocd-redis, el daemon.json de gitea y
siete imágenes llevaban meses diciendo una cosa mientras el cluster hacía otra.

Compara cada manifiesto con el objeto vivo, en las dos direcciones (el fichero
afirma algo falso / hay algo desplegado que el fichero no menciona / el objeto no
existe). Sólo mira los directorios fuera de ArgoCD, que es donde no hay nadie
comprobando: en los demás ArgoCD ya marca OutOfSync cada 3 minutos. La lista de
directorios se deduce preguntando a ArgoCD por los paths de sus Applications, así
que si mañana un namespace entra en GitOps el script se ajusta solo.

Las excepciones conocidas van en excepciones-auditoria.yaml CON su motivo, para
que lo normal sea "hallazgos NUEVOS: 0" y cualquier cosa que asome merezca una
mirada. Un informe que siempre saca ruido deja de leerse — que es justo el fallo
que se ha estado corrigiendo estos días. El script también avisa cuando una
excepción ya no se dispara: se arregló y la entrada sobra.

Probado viéndolo fallar, no sólo pasar: inyectadas a propósito una avería de cada
tipo (imagen cambiada, env borrada del fichero, objeto inexistente) y las caza
las tres saliendo con código 1. Al probarlo apareció un fallo propio: con -d
marcaba como sobrantes las excepciones de los directorios no barridos; ahora sólo
lo afirma tras un barrido completo.

No toca nada (sólo lectura), nunca compara valores de Secret —sólo nombres de
clave— y se salta lo que ignora .gitignore.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 09:37:05 +00:00
co-authored by Claude Opus 4.8
parent 55d43f1565
commit 07c872e847
4 changed files with 350 additions and 0 deletions
+2
View File
@@ -2,6 +2,8 @@
Manifests de Kubernetes gestionados por ArgoCD para el cluster chemavx.
**Ojo: no todo lo de aquí lo aplica ArgoCD.** Unos 11 directorios (`monitoring`, `argocd`, `authentik`, `gitea`, `homarr`, `vaultwarden`, `cloudflare-ddns`, `cluster-wide`…) se gestionan a mano: ahí un commit **no despliega nada**, hay que editar el fichero *y* hacer `kubectl apply`. Para comprobar que esos ficheros siguen describiendo lo desplegado: `python3 tools/audita-exports.py` (ver [tools/README.md](tools/README.md)).
## Regla crítica: secrets en git
**Los secrets con datos sensibles NO se guardan en este repo.**