--- /dev/null
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+ name: grafana-pv
+ labels:
+ type: local
+spec:
+ storageClassName: manual
+ capacity:
+ storage: 1Gi
+ accessModes:
+ - ReadWriteOnce
+ hostPath:
+ path: "/home/aloussase/grafana-data"
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: grafana-pvc
+spec:
+ storageClassName: manual
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 1Gi
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ labels:
+ app: grafana
+ name: grafana
+spec:
+ selector:
+ matchLabels:
+ app: grafana
+ template:
+ metadata:
+ labels:
+ app: grafana
+ spec:
+ containers:
+ - name: grafana
+ image: grafana/grafana:latest
+ imagePullPolicy: IfNotPresent
+ ports:
+ - containerPort: 3000
+ name: http-grafana
+ protocol: TCP
+ readinessProbe:
+ failureThreshold: 3
+ httpGet:
+ path: /robots.txt
+ port: 3000
+ scheme: HTTP
+ initialDelaySeconds: 10
+ periodSeconds: 30
+ successThreshold: 1
+ timeoutSeconds: 2
+ livenessProbe:
+ failureThreshold: 3
+ initialDelaySeconds: 30
+ periodSeconds: 10
+ successThreshold: 1
+ tcpSocket:
+ port: 3000
+ timeoutSeconds: 1
+ resources:
+ requests:
+ cpu: 250m
+ memory: 750Mi
+ volumeMounts:
+ - mountPath: /var/lib/grafana
+ name: grafana-pv
+ volumes:
+ - name: grafana-pv
+ persistentVolumeClaim:
+ claimName: grafana-pvc
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: grafana
+spec:
+ ports:
+ - port: 3000
+ protocol: TCP
+ targetPort: http-grafana
+ selector:
+ app: grafana
+ sessionAffinity: None
+ type: NodePort