Nouvel app ArgoCD ghostfolio (namespace ai) : suivi/analyse de portefeuille
boursier. Base PostgreSQL dédiée sur storage-01, Redis in-cluster pour le cache.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Open WebUI (openwebui.lab.local) :
- Connecté à LiteLLM (192.168.10.1:4000/v1) comme backend OpenAI-compatible
- PostgreSQL via storage-01 pour l'historique des conversations
- PVC 5Gi NFS pour les uploads, Traefik IngressRoute
n8n (n8n.lab.local) :
- PostgreSQL via storage-01, chiffrement des credentials
- PVC 2Gi NFS, Traefik IngressRoute
- Webhook URL interne : http://n8n.lab.local
Ansible : ajoute openwebui et n8n dans postgresql_databases/users
(vault_pg_openwebui_password + vault_pg_n8n_password à ajouter au vault)
Prérequis avant 1er déploiement :
make vault-edit # ajouter les 2 passwords
make apply-storage --tags postgresql
kubectl create secret generic open-webui-secret -n ai ...
kubectl create secret generic n8n-secret -n ai ...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
instance=~"192\.168\.10\.(11|12|13):9100" → job="node-exporter"
La barre oblique inversée dans les regex PromQL string literals causait
une erreur "unknown escape sequence" (\. n'est pas un escape PromQL valide).
job="node-exporter" est équivalent (seuls les 3 compute nodes ont ce job)
et ne dépend pas d'adresses IP hardcodées.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
nftables.conf.j2 :
- Ajoute 10.42.0.0/16 (CIDR pods k8s) pour port 9100 (node_exporter)
et port 8080 (hermes webhook AlertManager)
- Appliqué live sur storage-01 + persisté dans /etc/sysconfig/nftables.conf
- storage-01 était up=0 (timeout) car pods Prometheus ne pouvaient pas
l'atteindre malgré node_exporter actif
dashboard-infrastructure.yaml :
- Corrige mountpoint /srv → /srv/data (RAID5 monté sur /srv/data)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Grafana 13 était OOMKilled régulièrement (exit code 137, 5 restarts
observés) avec la limite à 256Mi — cause des "no available server"
Traefik pendant les redémarrages.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
L'Application monitoring ne scannait que le répertoire racine,
ignorant les sous-dossiers dashboards/ et alerts/.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Le chart kube-prometheus-stack génère une sous-route pour l'alerte
Watchdog qui référence le receiver "null". Notre config le remplaçait
sans le définir → ReconciliationFailed, StatefulSet jamais créé.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Le chart kube-prometheus-stack nécessite paths:[/] et pathType:Prefix
contrairement au sous-chart Grafana qui a des defaults.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
helmrelease.yaml avait le même nom que l'Application parente (nfs-provisioner).
ArgoCD gérait la ressource en double → SharedResourceWarning + OutOfSync.
Renommé en nfs-subdir-external-provisioner, identique au pattern monitoring.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
node-exporter requiert hostNetwork, hostPID et hostPath — bloqué par
la policy baseline:latest de Talos. Label privileged appliqué.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>