# Valores del release Helm kube-prometheus-stack (chart 83.2.0, ns monitoring). # # Este namespace NO está bajo ArgoCD: se gestiona a mano. Este fichero es la # fuente de verdad del release; para aplicarlo: # # helm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack \ # --version 83.2.0 -n monitoring -f values-kube-prometheus-stack.yaml # # rev 2 (2026-07-21): silenciadas 4 alertas que llevaban meses disparadas sin # significar nada — ver kubeControllerManager/kubeScheduler/kubeProxy y # defaultRules.disabled. # rev 3 (2026-07-21): grafana.extraConfigmapMounts. El montaje del ConfigMap # grafana-alerting (reglas + contact points + política → Telegram) se había # añadido A MANO al Deployment y NO lo generaba el chart: sobrevivía solo por # el three-way merge de Helm. Reconstruir el release desde este fichero se # habría llevado por delante TODO el alerting, en silencio. # rev 4 (2026-07-21): grafana.admin.existingSecret y FUERA adminPassword. # El valor en git era "admin", que no abría nada: la cuenta admin local se # configuró el 26-abr y no se ha usado desde entonces (se entra por Authentik). # Los sidecars de dashboards y datasources SÍ la usaban y recibían 401 al # intentar recargar por API. Ahora la contraseña es aleatoria, vive solo en el # Secret grafana-admin (creado fuera del chart, nunca en git) y la cuenta queda # como acceso de emergencia. Leerla: # kubectl get secret grafana-admin -n monitoring \ # -o jsonpath='{.data.admin-password}' | base64 -d; echo # rev 5 (2026-07-22): fuera la datasource Alertmanager. OJO: NO la apaga # alertmanager.enabled=false — el chart la provisiona igual, apuntando a un # servicio que no existe (error 500 al consultarla). El interruptor real es # grafana.sidecar.datasources.alertmanager.enabled. Y quitarla del fichero de # provisioning NO la borra de grafana.db: hay que provisionar el borrado con # una directiva deleteDatasources de un solo uso (se hizo y se retiró). # rev 7 (2026-07-22): recuperado el SSO de Authentik, roto desde hace ~15 días # (último acceso de akadmin). Grafana ignoraba la cabecera X-authentik-username # -> Authentik te dejaba pasar y Grafana te pedía credenciales igual. El bloque # auth.proxy existía en el ConfigMap vivo en abril (está en el export de git), # pero el chart NUNCA lo ha generado en ninguna de sus 6 revisiones, así que # era otro retoque a mano que se perdió por el camino. Ahora va declarado. # Junto con él, la anotación del middleware de Traefik: tampoco la generaba el # chart, y sin ella Grafana queda expuesta sin Authentik delante. # rev 6 (2026-07-22): grafana.envValueFrom. Mismo caso que rev 3, encontrado al # auditar el Deployment contra el render: TELEGRAM_BOT_TOKEN y TELEGRAM_CHAT_ID # estaban puestas A MANO y el chart no las generaba. El contact point de # alerting usa ${TELEGRAM_BOT_TOKEN}: reconstruir el release desde cero habría # dejado las alertas de Telegram mudas. Se declaran aquí sin tocar nada vivo. # (CHAT_ID hoy no lo usa nadie —el chatid del contact point va literal— pero se # deja para que el render coincida exactamente con lo desplegado.) alertmanager: enabled: false defaultRules: create: true disabled: PrometheusNotConnectedToAlertmanagers: true rules: alertmanager: false grafana: admin: existingSecret: grafana-admin envValueFrom: TELEGRAM_BOT_TOKEN: secretKeyRef: key: TELEGRAM_BOT_TOKEN name: grafana-telegram-infisical TELEGRAM_CHAT_ID: secretKeyRef: key: TELEGRAM_CHAT_ID name: grafana-telegram-infisical extraConfigmapMounts: - configMap: grafana-alerting mountPath: /etc/grafana/provisioning/alerting name: grafana-alerting grafana.ini: # SSO con Authentik. Traefik autentica en el borde con el middleware de # abajo y reenvía X-authentik-username; esto es lo que hace que Grafana se # fíe de esa cabecera y no vuelva a pedir credenciales. Sin este bloque el # SSO queda a medias: Authentik te deja pasar y Grafana te enseña SU # formulario. auto_sign_up crea el usuario (así nació akadmin). # El formulario local se deja habilitado a propósito, como puerta de # emergencia: la contraseña vive en el secret grafana-admin. auth.proxy: auto_sign_up: true enabled: true header_name: X-authentik-username header_property: username server: root_url: https://grafana.chemavx.xyz ingress: annotations: cert-manager.io/cluster-issuer: letsencrypt-prod # Sin esta anotación Grafana queda expuesta sin Authentik delante. Estaba # puesta a mano en el Ingress vivo y el chart no la generaba: sobrevivía # sólo por el three-way merge, como el montaje de alerting (rev 3). traefik.ingress.kubernetes.io/router.middlewares: authentik-authentik-forward-auth@kubernetescrd traefik.ingress.kubernetes.io/router.entrypoints: websecure enabled: true hosts: - grafana.chemavx.xyz ingressClassName: traefik tls: - hosts: - grafana.chemavx.xyz secretName: grafana-tls persistence: enabled: true size: 5Gi storageClassName: local-path sidecar: datasources: alertmanager: enabled: false kubeControllerManager: enabled: false kubeProxy: enabled: false kubeScheduler: enabled: false prometheus: prometheusSpec: retention: 30d storageSpec: volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: local-path