apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: veza-production labels: app: grafana component: monitoring spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: containers: - name: grafana image: grafana/grafana:latest ports: - name: http containerPort: 3000 env: - name: GF_SECURITY_ADMIN_USER value: "admin" - name: GF_SECURITY_ADMIN_PASSWORD valueFrom: secretKeyRef: name: veza-secrets key: grafana-password optional: true - name: GF_USERS_ALLOW_SIGN_UP value: "false" - name: GF_SERVER_ROOT_URL value: "https://grafana.veza.com" - name: GF_INSTALL_PLUGINS value: "grafana-clock-panel,grafana-simple-json-datasource" volumeMounts: - name: grafana-storage mountPath: /var/lib/grafana - name: grafana-datasources mountPath: /etc/grafana/provisioning/datasources - name: grafana-dashboards mountPath: /etc/grafana/provisioning/dashboards resources: requests: cpu: "200m" memory: "512Mi" limits: cpu: "1000m" memory: "2Gi" readinessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 10 periodSeconds: 5 livenessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 30 periodSeconds: 10 volumes: - name: grafana-storage persistentVolumeClaim: claimName: grafana-storage - name: grafana-datasources configMap: name: grafana-datasources - name: grafana-dashboards configMap: name: grafana-dashboards --- apiVersion: v1 kind: Service metadata: name: grafana namespace: veza-production labels: app: grafana spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: grafana --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: grafana-storage namespace: veza-production spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources namespace: veza-production data: prometheus.yaml: | apiVersion: 1 datasources: - name: Prometheus type: prometheus access: proxy url: http://prometheus:9090 isDefault: true editable: true --- apiVersion: v1 kind: ConfigMap metadata: name: grafana-dashboards namespace: veza-production data: dashboard-provider.yaml: | apiVersion: 1 providers: - name: 'Veza Dashboards' orgId: 1 folder: '' type: file disableDeletion: false editable: true options: path: /etc/grafana/provisioning/dashboards