apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources namespace: besu-network data: datasources.yaml: | apiVersion: 1 datasources: - name: Prometheus type: prometheus access: proxy url: http://prometheus:9090 isDefault: true editable: true - name: Loki type: loki access: proxy url: http://loki:3100 editable: true --- apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: besu-network labels: app: grafana spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: containers: - name: grafana image: grafana/grafana:10.1.0 ports: - name: http containerPort: 3000 env: - name: GF_SECURITY_ADMIN_USER valueFrom: secretKeyRef: name: grafana-secrets key: admin-user - name: GF_SECURITY_ADMIN_PASSWORD valueFrom: secretKeyRef: name: grafana-secrets key: admin-password - name: GF_SERVER_ROOT_URL value: "http://grafana.besu-network.svc.cluster.local:3000" volumeMounts: - name: grafana-storage mountPath: /var/lib/grafana - name: datasources mountPath: /etc/grafana/provisioning/datasources - name: dashboards mountPath: /etc/grafana/provisioning/dashboards resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "500m" memory: "512Mi" volumes: - name: grafana-storage persistentVolumeClaim: claimName: grafana-storage - name: datasources configMap: name: grafana-datasources - name: dashboards configMap: name: grafana-dashboards --- apiVersion: v1 kind: Service metadata: name: grafana namespace: besu-network labels: app: grafana spec: ports: - port: 3000 targetPort: http protocol: TCP selector: app: grafana --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: grafana-storage namespace: besu-network spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: managed-premium