Giriş
1. Önce bir Data Source eklenir. Data Source ConfigMap'in volume olarak yüklenmesi ile olur. ConfigMap'teki data ismi "prometheus.yaml" olmalıdır
Mutlaka olması gereken volume'lar şöyle
1. /var/lib/grafana
2. /etc/grafana/provisioning/datasources
Hazır dashboard kullanmak istiyorsak bunlar şöyle olabilir
1. /etc/grafana/provisioning/dashboards
2. /grafana-dashboard-definitions/0/pods
3. Dashboard yaratılır
Helm
Şöyle yaparız
> helm repo add grafana https://grafana.github.io/helm-charts > helm pull grafana/grafana --untar --untardir helm
Örnek
Şöyle yaparız. Burada storageClassName bir ortam değişkeni
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: grafana-storage spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: STORAGE_CLASS_TYPE
Deployment için şöyle yaparız. Burada 3 tane ConfigMap kullanılıyor. Birincisi Data Source için. Diğer ikisi de hazır Dashboard için. "configMap:name" için kullanılan isim ile kind: ConfigMap içindeki metadata:name aynı olmalı
apiVersion: apps/v1 kind: Deployment metadata: labels: app: grafana name: grafana spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: containers: - image: grafana/grafana:GRAFANA_VERSION name: grafana ports: - containerPort: 3000 name: http resources: limits: cpu: 200m memory: 200Mi requests: cpu: 100m memory: 100Mi volumeMounts: - mountPath: /var/lib/grafana subPath: grafana name: grafana-storage readOnly: false - mountPath: /etc/grafana/provisioning/datasources name: grafana-datasources readOnly: false - mountPath: /etc/grafana/provisioning/dashboards name: grafana-dashboards readOnly: false - mountPath: /grafana-dashboard-definitions/0/pods name: grafana-dashboard-pods readOnly: false securityContext: runAsNonRoot: true runAsUser: 65534 fsGroup: 472 serviceAccountName: grafana volumes: - persistentVolumeClaim: claimName: grafana-storage name: grafana-storage - name: grafana-datasources configMap: name: grafana-datasources - configMap: name: grafana-dashboards name: grafana-dashboards - configMap: name: grafana-dashboard-pods name: grafana-dashboard-pods
Data Source için ConfigMap şöyle
apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources data: prometheus.yaml: |- { "apiVersion": 1, "datasources": [ { "access": "proxy", "editable": false, "name": "prometheus", "orgId": 1, "type": "prometheus", "url": "http://prometheus-k8s.CUSTOM_NAMESPACE.svc:9090", "version": 1 } ] }
Dashboardlar için ConfigMap burada
Örnek
Bur örnekte dashboard kopyalanıyor. Deployment şöyle. Burada "grafana-storage" isimli volumeMounts bir PVC'ye atıfta bulunmuyor. Aksine aynı yaml'daki "volume" tanımına atıfta bulunuyor
apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: monitoring spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: name: grafana labels: app: grafana spec: containers: - name: grafana image: grafana/grafana:latest ports: - name: grafana containerPort: 3000 resources: limits: memory: "1Gi" cpu: "1000m" requests: memory: 500M cpu: "500m" volumeMounts: - mountPath: /var/lib/grafana name: grafana-storage - mountPath: /etc/grafana/provisioning/datasources name: grafana-datasources readOnly: false volumes: - name: grafana-storage emptyDir: {} - name: grafana-datasources configMap: defaultMode: 420 name: grafana-datasources
Data Source için ConfigMap şöyle
apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources namespace: monitoring data: prometheus.yaml: |- { "apiVersion": 1, "datasources": [ { "access":"proxy", "editable": true, "name": "prometheus", "orgId": 1, "type": "prometheus", "url": "http://prometheus-service.monitoring.svc:8080", "version": 1 } ] }
Hiç yorum yok:
Yorum Gönder