--- apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources namespace: monitoring data: prometheus.yaml: | apiVersion: 1 datasources: - name: Prometheus type: prometheus access: proxy url: http://prometheus:9090 isDefault: true editable: false --- apiVersion: v1 kind: ConfigMap metadata: name: grafana-dashboards-config namespace: monitoring data: dashboards.yaml: | apiVersion: 1 providers: - name: 'default' orgId: 1 folder: 'Bakery IA' type: file disableDeletion: false updateIntervalSeconds: 10 allowUiUpdates: true options: path: /var/lib/grafana/dashboards --- apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: monitoring labels: app: grafana spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: containers: - name: grafana image: grafana/grafana:12.3.0 ports: - containerPort: 3000 name: http env: - name: GF_SECURITY_ADMIN_USER value: admin - name: GF_SECURITY_ADMIN_PASSWORD value: admin - name: GF_SERVER_ROOT_URL value: "http://monitoring.bakery-ia.local/grafana" - name: GF_SERVER_SERVE_FROM_SUB_PATH value: "true" - name: GF_AUTH_ANONYMOUS_ENABLED value: "false" - name: GF_INSTALL_PLUGINS value: "" volumeMounts: - name: grafana-storage mountPath: /var/lib/grafana - name: grafana-datasources mountPath: /etc/grafana/provisioning/datasources - name: grafana-dashboards-config mountPath: /etc/grafana/provisioning/dashboards - name: grafana-dashboards mountPath: /var/lib/grafana/dashboards resources: requests: memory: "256Mi" cpu: "100m" limits: memory: "512Mi" cpu: "500m" livenessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 5 periodSeconds: 5 volumes: - name: grafana-storage persistentVolumeClaim: claimName: grafana-storage - name: grafana-datasources configMap: name: grafana-datasources - name: grafana-dashboards-config configMap: name: grafana-dashboards-config - name: grafana-dashboards configMap: name: grafana-dashboards --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: grafana-storage namespace: monitoring spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi --- apiVersion: v1 kind: Service metadata: name: grafana namespace: monitoring labels: app: grafana spec: type: ClusterIP ports: - port: 3000 targetPort: 3000 protocol: TCP name: http selector: app: grafana