apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources namespace: monitoring data: datasources.yaml: | apiVersion: 1 datasources: - name: Prometheus type: prometheus access: proxy url: http://prometheus.monitoring.svc:9090 isDefault: true --- apiVersion: v1 kind: Secret metadata: name: grafana-admin namespace: monitoring stringData: admin-user: adamcarr admin-password: planck-lab-admin --- apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: monitoring spec: replicas: 1 selector: matchLabels: {app: grafana} template: metadata: labels: {app: grafana} spec: containers: - name: grafana image: grafana/grafana:12.0.2 env: - {name: GF_SECURITY_ADMIN_USER, valueFrom: {secretKeyRef: {name: grafana-admin, key: admin-user}}} - {name: GF_SECURITY_ADMIN_PASSWORD, valueFrom: {secretKeyRef: {name: grafana-admin, key: admin-password}}} - {name: GF_AUTH_ANONYMOUS_ENABLED, value: "true"} ports: - containerPort: 3000 resources: requests: {cpu: 50m, memory: 128Mi} limits: {memory: 512Mi} volumeMounts: - {name: datasources, mountPath: /etc/grafana/provisioning/datasources} - {name: dashboard-provider, mountPath: /etc/grafana/provisioning/dashboards} - {name: dashboards, mountPath: /var/lib/grafana/dashboards} volumes: - name: datasources configMap: {name: grafana-datasources} - name: dashboard-provider configMap: {name: grafana-dashboard-provider} - name: dashboards configMap: {name: grafana-dashboards} --- apiVersion: v1 kind: Service metadata: name: grafana namespace: monitoring spec: selector: {app: grafana} ports: - port: 3000 targetPort: 3000