apiVersion: apps/v1beta2 kind: Deployment metadata: name: {{ template "grafana.fullname" . }} labels: app: {{ template "grafana.name" . }} chart: {{ template "grafana.chart" . }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} {{- with .Values.annotations }} annotations: {{ toYaml . | indent 4 }} {{- end }} spec: replicas: {{ .Values.replicas }} selector: matchLabels: app: {{ template "grafana.name" . }} release: {{ .Release.Name }} strategy: type: {{ .Values.deploymentStrategy }} template: metadata: labels: app: {{ template "grafana.name" . }} release: {{ .Release.Name }} {{- with .Values.podAnnotations }} annotations: {{ toYaml . | indent 8 }} {{- end }} spec: serviceAccountName: {{ template "grafana.serviceAccountName" . }} {{- if .Values.schedulerName }} schedulerName: "{{ .Values.schedulerName }}" {{- end }} {{- if .Values.dashboards }} initContainers: - name: download-dashboards image: "{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}" imagePullPolicy: {{ .Values.downloadDashboardsImage.pullPolicy }} command: ["sh", "/etc/grafana/download_dashboards.sh"] volumeMounts: - name: config mountPath: "/etc/grafana/download_dashboards.sh" subPath: download_dashboards.sh - name: storage mountPath: "/var/lib/grafana" subPath: {{ .Values.persistence.subPath }} {{- range .Values.extraSecretMounts }} - name: {{ .name }} mountPath: {{ .mountPath }} readOnly: {{ .readOnly }} {{- end }} {{- end }} {{- if .Values.image.pullSecrets }} imagePullSecrets: {{- range .Values.image.pullSecrets }} - name: {{ . }} {{- end}} {{- end }} containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} volumeMounts: - name: config mountPath: "/etc/grafana/grafana.ini" subPath: grafana.ini - name: ldap mountPath: "/etc/grafana/ldap.toml" subPath: ldap.toml {{- if .Values.dashboards }} {{- range $key, $value := .Values.dashboards }} {{ if hasKey $value "json" }} - name: dashboards-json mountPath: "/var/lib/grafana/dashboards/{{ $key }}.json" subPath: {{ $key }}.json {{- end }} {{- end }} {{- end -}} {{- if .Values.datasources }} - name: config mountPath: "/etc/grafana/provisioning/datasources/datasources.yaml" subPath: datasources.yaml {{- end }} {{- if .Values.dashboardProviders }} - name: config mountPath: "/etc/grafana/provisioning/dashboards/dashboardproviders.yaml" subPath: dashboardproviders.yaml {{- end }} - name: storage mountPath: "/var/lib/grafana" subPath: {{ .Values.persistence.subPath }} ports: - name: service containerPort: {{ .Values.service.port }} protocol: TCP - name: grafana containerPort: 3000 protocol: TCP env: - name: GF_SECURITY_ADMIN_USER valueFrom: secretKeyRef: name: {{ template "grafana.fullname" . }} key: admin-user - name: GF_SECURITY_ADMIN_PASSWORD valueFrom: secretKeyRef: name: {{ template "grafana.fullname" . }} key: admin-password {{- if .Values.plugins }} - name: GF_INSTALL_PLUGINS valueFrom: configMapKeyRef: name: {{ template "grafana.fullname" . }} key: plugins {{- end }} {{- if .Values.smtp.existingSecret }} - name: GF_SMTP_USER valueFrom: secretKeyRef: name: {{ .Values.smtp.existingSecret }} key: user - name: GF_SMTP_PASSWORD valueFrom: secretKeyRef: name: {{ .Values.smtp.existingSecret }} key: password {{- end }} {{- range $key, $value := .Values.env }} - name: "{{ $key }}" value: "{{ $value }}" {{- end }} {{- if .Values.envFromSecret }} envFrom: - secretRef: name: {{ .Values.envFromSecret }} {{- end }} livenessProbe: httpGet: path: /api/health port: 3000 readinessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 60 timeoutSeconds: 30 failureThreshold: 10 periodSeconds: 10 resources: {{ toYaml .Values.resources | indent 12 }} {{- with .Values.nodeSelector }} nodeSelector: {{ toYaml . | indent 8 }} {{- end }} {{- with .Values.affinity }} affinity: {{ toYaml . | indent 8 }} {{- end }} {{- with .Values.tolerations }} tolerations: {{ toYaml . | indent 8 }} {{- end }} volumes: - name: config configMap: name: {{ template "grafana.fullname" . }} - name: dashboards-json configMap: name: {{ template "grafana.fullname" . }}-dashboards-json - name: ldap secret: {{- if .Values.ldap.existingSecret }} secretName: {{ .Values.ldap.existingSecret }} {{- else }} secretName: {{ template "grafana.fullname" . }} {{- end }} items: - key: ldap-toml path: ldap.toml - name: storage {{- if .Values.persistence.enabled }} persistentVolumeClaim: claimName: {{ .Values.persistence.existingClaim | default (include "grafana.fullname" .) }} {{- else }} emptyDir: {} {{- end -}} {{- range .Values.extraSecretMounts }} - name: {{ .name }} secret: secretName: {{ .secretName }} {{- end }}