# ===================================================================== # values.yaml per kube-prometheus-stack su RKE2 (installazione diretta, # senza Rancher Manager) # # Repo: https://prometheus-community.github.io/helm-charts # Chart: kube-prometheus-stack # # Install: # helm repo add prometheus-community https://prometheus-community.github.io/helm-charts # helm repo update # helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack \ # -n monitoring --create-namespace \ # -f 01-kube-prometheus-stack-values.yaml # ===================================================================== # --------------------------------------------------------------------- # Prometheus # --------------------------------------------------------------------- prometheus: prometheusSpec: retention: 15d retentionSize: "10GB" # Adatta alla storageClass disponibile nel tuo cluster RKE2 # (es. longhorn, local-path-provisioner, ceph-rbd, ecc.) storageSpec: volumeClaimTemplate: spec: storageClassName: longhorn # <-- CAMBIA con la tua storageClass accessModes: ["ReadWriteOnce"] resources: requests: storage: 50Gi resources: requests: cpu: 250m memory: 1Gi limits: memory: 2Gi # Permette a Prometheus di scoprire ServiceMonitor/PodMonitor # creati in QUALSIASI namespace (importante per uno stack "generico" # dove le verticali applicative, es. CNPG, vivono in namespace propri) serviceMonitorSelectorNilUsesHelmValues: false podMonitorSelectorNilUsesHelmValues: false ruleSelectorNilUsesHelmValues: false # Su RKE2 il control-plane espone metriche ma va abilitato esplicitamente # lo scraping (vedi sezioni kubeEtcd/kubeControllerManager/kubeScheduler # più sotto). Se il tuo cluster è "hardened" e non espone questi endpoint # sui nodi worker, valuta di disabilitare le relative sezioni. # --------------------------------------------------------------------- # Control plane RKE2 — di default questi componenti su RKE2 girano come # pod statici raggiungibili sul nodo server; verificare le porte reali # con `kubectl get pods -n kube-system` e `netstat` sul nodo se lo # scraping non trova i target. # --------------------------------------------------------------------- kubeEtcd: enabled: true service: port: 2381 targetPort: 2381 kubeControllerManager: enabled: true service: port: 10257 targetPort: 10257 # RKE2 espone il controller-manager in HTTPS con cert self-signed: # potrebbe servire scrapeConfig con tlsConfig.insecureSkipVerify: true # (vedi kube-prometheus-stack docs, sezione "kubeControllerManager"). kubeScheduler: enabled: true service: port: 10259 targetPort: 10259 # Traefik è deployato di default su RKE2 ed è considerato componente # interno. Se lo usi come ingress controller, aggiungi un ServiceMonitor # dedicato puntato al suo endpoint /metrics (di solito porta 9100). kubeProxy: enabled: true # --------------------------------------------------------------------- # Alertmanager # --------------------------------------------------------------------- alertmanager: alertmanagerSpec: retention: 120h storage: volumeClaimTemplate: spec: storageClassName: longhorn # <-- CAMBIA con la tua storageClass accessModes: ["ReadWriteOnce"] resources: requests: storage: 5Gi resources: requests: cpu: 50m memory: 128Mi limits: memory: 256Mi # Config di base; per la config completa vedi il file # 04-alertmanager-config.yaml (AlertmanagerConfig CRD, più gestibile # in modo dichiarativo/GitOps rispetto a alertmanager.config qui). # --------------------------------------------------------------------- # Grafana (incluso nel chart) # --------------------------------------------------------------------- grafana: enabled: true defaultDashboardsTimezone: Europe/Rome persistence: enabled: true storageClassName: longhorn # <-- CAMBIA con la tua storageClass size: 5Gi # Cambia in produzione: usa un Secret invece di plaintext adminPassword: "CHANGE_ME" # Loki come datasource aggiuntivo (vedi file 03-loki-alloy) additionalDataSources: - name: Loki type: loki access: proxy url: http://loki.monitoring.svc.cluster.local:3100 isDefault: false resources: requests: cpu: 100m memory: 128Mi limits: memory: 256Mi # Import automatico dashboard CNPG (ID 20417) via sidecar dashboards # già incluso nel chart: basta creare un ConfigMap con label # grafana_dashboard=1 (vedi file 02-cnpg-monitoring.yaml in fondo, # sezione dashboard, oppure importa manualmente da Grafana UI). # --------------------------------------------------------------------- # node-exporter # --------------------------------------------------------------------- nodeExporter: enabled: true prometheus-node-exporter: resources: requests: cpu: 50m memory: 30Mi limits: memory: 50Mi # --------------------------------------------------------------------- # kube-state-metrics # --------------------------------------------------------------------- kubeStateMetrics: enabled: true kube-state-metrics: resources: requests: cpu: 50m memory: 64Mi limits: memory: 128Mi