# Unified Grafana Datasources ConfigMap # This ConfigMap contains all datasources (Prometheus, Alertmanager, Loki, Tempo) # and is directly mounted to /etc/grafana/provisioning/datasources/ # # This approach follows the pattern from /home/paul/git/x-rag/infra/k8s/monitoring/ # where datasources are provisioned via direct ConfigMap mount instead of sidecar discovery. # # Benefits: # - Simple and direct (no sidecar complexity) # - Grafana provisioning runs on startup # - Field order preserved exactly as written # - All datasources in one place # - Fully IaC compliant apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources-all namespace: monitoring labels: app.kubernetes.io/name: grafana app.kubernetes.io/component: datasources data: datasources.yaml: | apiVersion: 1 datasources: - name: Prometheus type: prometheus uid: prometheus url: http://prometheus-kube-prometheus-prometheus.monitoring:9090/ access: proxy isDefault: true editable: false jsonData: httpMethod: POST timeInterval: 30s - name: Alertmanager type: alertmanager uid: alertmanager url: http://prometheus-kube-prometheus-alertmanager.monitoring:9093/ access: proxy editable: false jsonData: handleGrafanaManagedAlerts: false implementation: prometheus - name: Loki type: loki uid: loki url: http://loki.monitoring.svc.cluster.local:3100 access: proxy isDefault: false editable: false jsonData: maxLines: 1000 - name: Tempo type: tempo uid: tempo url: http://tempo.monitoring.svc.cluster.local:3200 access: proxy isDefault: false editable: false jsonData: httpMethod: GET tracesToLogsV2: datasourceUid: loki spanStartTimeShift: -1h spanEndTimeShift: 1h tracesToMetrics: datasourceUid: prometheus serviceMap: datasourceUid: prometheus nodeGraph: enabled: true search: hide: false lokiSearch: datasourceUid: loki