--- # Source: grafana/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: default labels: helm.sh/chart: grafana-8.13.1 app.kubernetes.io/name: grafana app.kubernetes.io/instance: grafana app.kubernetes.io/version: "11.6.1" spec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: grafana strategy: type: RollingUpdate template: metadata: labels: helm.sh/chart: grafana-8.13.1 app.kubernetes.io/name: grafana app.kubernetes.io/instance: grafana app.kubernetes.io/version: "11.6.1" annotations: checksum/config: d247383d611034ff04b37cc27677f166bc48f1eb6f5bb108696cb8a488b1c954 checksum/dashboards-json-config: 495e1c22f129c999f0023fc9328b482ab76cc69ab7db8fd42f6b03604712e205 checksum/sc-dashboard-provider-config: e70bf6a851099d385178a76de9757bb0bef8299da6d8443602590e44f05fdf24 kubectl.kubernetes.io/default-container: grafana spec: serviceAccountName: grafana automountServiceAccountToken: true shareProcessNamespace: false securityContext: fsGroup: 472 runAsGroup: 472 runAsNonRoot: true runAsUser: 472 initContainers: - name: download-dashboards image: "docker.io/curlimages/curl:8.9.1" imagePullPolicy: IfNotPresent command: ["/bin/sh"] args: [ "-c", "mkdir -p /var/lib/grafana/dashboards/default && /bin/sh -x /etc/grafana/download_dashboards.sh" ] env: securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL seccompProfile: type: RuntimeDefault volumeMounts: - name: config mountPath: "/etc/grafana/download_dashboards.sh" subPath: download_dashboards.sh - name: storage mountPath: "/var/lib/grafana" enableServiceLinks: true containers: - name: grafana image: "docker.io/grafana/grafana:11.6.1" imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL seccompProfile: type: RuntimeDefault volumeMounts: - name: config mountPath: "/etc/grafana/grafana.ini" subPath: grafana.ini - name: storage mountPath: "/var/lib/grafana" - name: config mountPath: "/etc/grafana/provisioning/datasources/datasources.yaml" subPath: "datasources.yaml" - name: config mountPath: "/etc/grafana/provisioning/alerting/contactpoints.yaml" subPath: "contactpoints.yaml" - name: config mountPath: "/etc/grafana/provisioning/alerting/rules.yaml" subPath: "rules.yaml" - name: config mountPath: "/etc/grafana/provisioning/dashboards/dashboardproviders.yaml" subPath: "dashboardproviders.yaml" ports: - name: grafana containerPort: 3000 protocol: TCP - name: gossip-tcp containerPort: 9094 protocol: TCP - name: gossip-udp containerPort: 9094 protocol: UDP - name: profiling containerPort: 6060 protocol: TCP env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: GF_SECURITY_ADMIN_USER valueFrom: secretKeyRef: name: grafana-credentials key: admin-user - name: GF_SECURITY_ADMIN_PASSWORD valueFrom: secretKeyRef: name: grafana-credentials key: admin-password - name: GF_PATHS_DATA value: /var/lib/grafana/ - name: GF_PATHS_LOGS value: /var/log/grafana - name: GF_PATHS_PLUGINS value: /var/lib/grafana/plugins - name: GF_PATHS_PROVISIONING value: /etc/grafana/provisioning livenessProbe: failureThreshold: 10 httpGet: path: /api/health port: 3000 initialDelaySeconds: 60 timeoutSeconds: 30 readinessProbe: httpGet: path: /api/health port: 3000 volumes: - name: config configMap: name: grafana - name: dashboards-default configMap: name: grafana-dashboards-default - name: storage emptyDir: {}