123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459 |
- {{- define "grafana.pod" -}}
- {{- if .Values.schedulerName }}
- schedulerName: "{{ .Values.schedulerName }}"
- {{- end }}
- serviceAccountName: {{ template "grafana.serviceAccountName" . }}
- {{- if .Values.securityContext }}
- securityContext:
- {{ toYaml .Values.securityContext | indent 2 }}
- {{- end }}
- {{- if .Values.hostAliases }}
- hostAliases:
- {{ toYaml .Values.hostAliases | indent 2 }}
- {{- end }}
- {{- if .Values.priorityClassName }}
- priorityClassName: {{ .Values.priorityClassName }}
- {{- end }}
- {{- if ( or .Values.persistence.enabled .Values.dashboards .Values.sidecar.datasources.enabled .Values.sidecar.notifiers.enabled .Values.extraInitContainers) }}
- initContainers:
- {{- end }}
- {{- if ( and .Values.persistence.enabled .Values.initChownData.enabled ) }}
- - name: init-chown-data
- {{- if .Values.initChownData.image.sha }}
- image: "{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}@sha256:{{ .Values.initChownData.image.sha }}"
- {{- else }}
- image: "{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}"
- {{- end }}
- imagePullPolicy: {{ .Values.initChownData.image.pullPolicy }}
- securityContext:
- runAsUser: 0
- command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.runAsGroup }}", "/var/lib/grafana"]
- resources:
- {{ toYaml .Values.initChownData.resources | indent 6 }}
- volumeMounts:
- - name: storage
- mountPath: "/var/lib/grafana"
- {{- if .Values.persistence.subPath }}
- subPath: {{ .Values.persistence.subPath }}
- {{- end }}
- {{- end }}
- {{- if .Values.dashboards }}
- - name: download-dashboards
- {{- if .Values.downloadDashboardsImage.sha }}
- image: "{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}@sha256:{{ .Values.downloadDashboardsImage.sha }}"
- {{- else }}
- image: "{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}"
- {{- end }}
- imagePullPolicy: {{ .Values.downloadDashboardsImage.pullPolicy }}
- command: ["/bin/sh"]
- args: [ "-c", "mkdir -p /var/lib/grafana/dashboards/default && /bin/sh /etc/grafana/download_dashboards.sh" ]
- resources:
- {{ toYaml .Values.downloadDashboards.resources | indent 6 }}
- env:
- {{- range $key, $value := .Values.downloadDashboards.env }}
- - name: "{{ $key }}"
- value: "{{ $value }}"
- {{- end }}
- volumeMounts:
- - name: config
- mountPath: "/etc/grafana/download_dashboards.sh"
- subPath: download_dashboards.sh
- - name: storage
- mountPath: "/var/lib/grafana"
- {{- if .Values.persistence.subPath }}
- subPath: {{ .Values.persistence.subPath }}
- {{- end }}
- {{- range .Values.extraSecretMounts }}
- - name: {{ .name }}
- mountPath: {{ .mountPath }}
- readOnly: {{ .readOnly }}
- {{- end }}
- {{- end }}
- {{- if .Values.sidecar.datasources.enabled }}
- - name: {{ template "grafana.name" . }}-sc-datasources
- {{- if .Values.sidecar.image.sha }}
- image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
- {{- else }}
- image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
- {{- end }}
- imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
- env:
- - name: METHOD
- value: LIST
- - name: LABEL
- value: "{{ .Values.sidecar.datasources.label }}"
- - name: FOLDER
- value: "/etc/grafana/provisioning/datasources"
- - name: RESOURCE
- value: "both"
- {{- if .Values.sidecar.enableUniqueFilenames }}
- - name: UNIQUE_FILENAMES
- value: "{{ .Values.sidecar.enableUniqueFilenames }}"
- {{- end }}
- {{- if .Values.sidecar.datasources.searchNamespace }}
- - name: NAMESPACE
- value: "{{ .Values.sidecar.datasources.searchNamespace }}"
- {{- end }}
- {{- if .Values.sidecar.skipTlsVerify }}
- - name: SKIP_TLS_VERIFY
- value: "{{ .Values.sidecar.skipTlsVerify }}"
- {{- end }}
- resources:
- {{ toYaml .Values.sidecar.resources | indent 6 }}
- volumeMounts:
- - name: sc-datasources-volume
- mountPath: "/etc/grafana/provisioning/datasources"
- {{- end}}
- {{- if .Values.sidecar.notifiers.enabled }}
- - name: {{ template "grafana.name" . }}-sc-notifiers
- {{- if .Values.sidecar.image.sha }}
- image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
- {{- else }}
- image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
- {{- end }}
- imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
- env:
- - name: METHOD
- value: LIST
- - name: LABEL
- value: "{{ .Values.sidecar.notifiers.label }}"
- - name: FOLDER
- value: "/etc/grafana/provisioning/notifiers"
- - name: RESOURCE
- value: "both"
- {{- if .Values.sidecar.enableUniqueFilenames }}
- - name: UNIQUE_FILENAMES
- value: "{{ .Values.sidecar.enableUniqueFilenames }}"
- {{- end }}
- {{- if .Values.sidecar.notifiers.searchNamespace }}
- - name: NAMESPACE
- value: "{{ .Values.sidecar.notifiers.searchNamespace }}"
- {{- end }}
- {{- if .Values.sidecar.skipTlsVerify }}
- - name: SKIP_TLS_VERIFY
- value: "{{ .Values.sidecar.skipTlsVerify }}"
- {{- end }}
- resources:
- {{ toYaml .Values.sidecar.resources | indent 6 }}
- volumeMounts:
- - name: sc-notifiers-volume
- mountPath: "/etc/grafana/provisioning/notifiers"
- {{- end}}
- {{- if .Values.extraInitContainers }}
- {{ toYaml .Values.extraInitContainers | indent 2 }}
- {{- end }}
- {{- if .Values.image.pullSecrets }}
- imagePullSecrets:
- {{- range .Values.image.pullSecrets }}
- - name: {{ . }}
- {{- end}}
- {{- end }}
- containers:
- {{- if .Values.sidecar.dashboards.enabled }}
- - name: {{ template "grafana.name" . }}-sc-dashboard
- {{- if .Values.sidecar.image.sha }}
- image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}"
- {{- else }}
- image: "{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}"
- {{- end }}
- imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }}
- env:
- - name: METHOD
- value: {{ .Values.sidecar.dashboards.watchMethod }}
- - name: LABEL
- value: "{{ .Values.sidecar.dashboards.label }}"
- - name: FOLDER
- value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}"
- - name: RESOURCE
- value: "both"
- {{- if .Values.sidecar.enableUniqueFilenames }}
- - name: UNIQUE_FILENAMES
- value: "{{ .Values.sidecar.enableUniqueFilenames }}"
- {{- end }}
- {{- if .Values.sidecar.dashboards.searchNamespace }}
- - name: NAMESPACE
- value: "{{ .Values.sidecar.dashboards.searchNamespace }}"
- {{- end }}
- {{- if .Values.sidecar.skipTlsVerify }}
- - name: SKIP_TLS_VERIFY
- value: "{{ .Values.sidecar.skipTlsVerify }}"
- {{- end }}
- resources:
- {{ toYaml .Values.sidecar.resources | indent 6 }}
- volumeMounts:
- - name: sc-dashboard-volume
- mountPath: {{ .Values.sidecar.dashboards.folder | quote }}
- {{- end}}
- - name: {{ .Chart.Name }}
- {{- if .Values.image.sha }}
- image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}@sha256:{{ .Values.image.sha }}"
- {{- else }}
- image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
- {{- end }}
- imagePullPolicy: {{ .Values.image.pullPolicy }}
- {{- if .Values.command }}
- command:
- {{- range .Values.command }}
- - {{ . }}
- {{- end }}
- {{- end}}
- volumeMounts:
- - name: config
- mountPath: "/etc/grafana/grafana.ini"
- subPath: grafana.ini
- {{- if .Values.ldap.enabled }}
- - name: ldap
- mountPath: "/etc/grafana/ldap.toml"
- subPath: ldap.toml
- {{- end }}
- {{- range .Values.extraConfigmapMounts }}
- - name: {{ .name }}
- mountPath: {{ .mountPath }}
- subPath: {{ .subPath | default "" }}
- readOnly: {{ .readOnly }}
- {{- end }}
- - name: storage
- mountPath: "/var/lib/grafana"
- {{- if .Values.persistence.subPath }}
- subPath: {{ .Values.persistence.subPath }}
- {{- end }}
- {{- if .Values.dashboards }}
- {{- range $provider, $dashboards := .Values.dashboards }}
- {{- range $key, $value := $dashboards }}
- {{- if (or (hasKey $value "json") (hasKey $value "file")) }}
- - name: dashboards-{{ $provider }}
- mountPath: "/var/lib/grafana/dashboards/{{ $provider }}/{{ $key }}.json"
- subPath: "{{ $key }}.json"
- {{- end }}
- {{- end }}
- {{- end }}
- {{- end -}}
- {{- if .Values.dashboardsConfigMaps }}
- {{- range (keys .Values.dashboardsConfigMaps | sortAlpha) }}
- - name: dashboards-{{ . }}
- mountPath: "/var/lib/grafana/dashboards/{{ . }}"
- {{- end }}
- {{- end }}
- {{- if .Values.datasources }}
- - name: config
- mountPath: "/etc/grafana/provisioning/datasources/datasources.yaml"
- subPath: datasources.yaml
- {{- end }}
- {{- if .Values.notifiers }}
- - name: config
- mountPath: "/etc/grafana/provisioning/notifiers/notifiers.yaml"
- subPath: notifiers.yaml
- {{- end }}
- {{- if .Values.dashboardProviders }}
- - name: config
- mountPath: "/etc/grafana/provisioning/dashboards/dashboardproviders.yaml"
- subPath: dashboardproviders.yaml
- {{- end }}
- {{- if .Values.sidecar.dashboards.enabled }}
- - name: sc-dashboard-volume
- mountPath: {{ .Values.sidecar.dashboards.folder | quote }}
- {{ if .Values.sidecar.dashboards.SCProvider }}
- - name: sc-dashboard-provider
- mountPath: "/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml"
- subPath: provider.yaml
- {{- end}}
- {{- end}}
- {{- if .Values.sidecar.datasources.enabled }}
- - name: sc-datasources-volume
- mountPath: "/etc/grafana/provisioning/datasources"
- {{- end}}
- {{- if .Values.sidecar.notifiers.enabled }}
- - name: sc-notifiers-volume
- mountPath: "/etc/grafana/provisioning/notifiers"
- {{- end}}
- {{- range .Values.extraSecretMounts }}
- - name: {{ .name }}
- mountPath: {{ .mountPath }}
- readOnly: {{ .readOnly }}
- subPath: {{ .subPath | default "" }}
- {{- end }}
- {{- range .Values.extraVolumeMounts }}
- - name: {{ .name }}
- mountPath: {{ .mountPath }}
- subPath: {{ .subPath | default "" }}
- readOnly: {{ .readOnly }}
- {{- end }}
- {{- range .Values.extraEmptyDirMounts }}
- - name: {{ .name }}
- mountPath: {{ .mountPath }}
- {{- end }}
- ports:
- - name: {{ .Values.service.portName }}
- containerPort: {{ .Values.service.port }}
- protocol: TCP
- - name: {{ .Values.podPortName }}
- containerPort: 3000
- protocol: TCP
- env:
- {{- if not .Values.env.GF_SECURITY_ADMIN_USER }}
- - name: GF_SECURITY_ADMIN_USER
- valueFrom:
- secretKeyRef:
- name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }}
- key: {{ .Values.admin.userKey | default "admin-user" }}
- {{- end }}
- {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) }}
- - name: GF_SECURITY_ADMIN_PASSWORD
- valueFrom:
- secretKeyRef:
- name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }}
- key: {{ .Values.admin.passwordKey | default "admin-password" }}
- {{- end }}
- {{- 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: {{ .Values.smtp.userKey | default "user" }}
- - name: GF_SMTP_PASSWORD
- valueFrom:
- secretKeyRef:
- name: {{ .Values.smtp.existingSecret }}
- key: {{ .Values.smtp.passwordKey | default "password" }}
- {{- end }}
- {{ if .Values.imageRenderer.enabled }}
- - name: GF_RENDERING_SERVER_URL
- value: http://{{ template "grafana.fullname" . }}-image-renderer.{{ template "grafana.namespace" . }}:{{ .Values.imageRenderer.service.port }}/render
- - name: GF_RENDERING_CALLBACK_URL
- value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/
- {{ end }}
- {{- range $key, $value := .Values.envValueFrom }}
- - name: {{ $key | quote }}
- valueFrom:
- {{ toYaml $value | indent 10 }}
- {{- end }}
- {{- range $key, $value := .Values.env }}
- - name: "{{ tpl $key $ }}"
- value: "{{ tpl (print $value) $ }}"
- {{- end }}
- {{- if .Values.envFromSecret }}
- envFrom:
- - secretRef:
- name: {{ tpl .Values.envFromSecret . }}
- {{- end }}
- {{- if .Values.envRenderSecret }}
- envFrom:
- - secretRef:
- name: {{ template "grafana.fullname" . }}-env
- {{- end }}
- livenessProbe:
- {{ toYaml .Values.livenessProbe | indent 6 }}
- readinessProbe:
- {{ toYaml .Values.readinessProbe | indent 6 }}
- resources:
- {{ toYaml .Values.resources | indent 6 }}
- {{- with .Values.extraContainers }}
- {{ tpl . $ | indent 2 }}
- {{- end }}
- {{- with .Values.nodeSelector }}
- nodeSelector:
- {{ toYaml . | indent 2 }}
- {{- end }}
- {{- with .Values.affinity }}
- affinity:
- {{ toYaml . | indent 2 }}
- {{- end }}
- {{- with .Values.tolerations }}
- tolerations:
- {{ toYaml . | indent 2 }}
- {{- end }}
- volumes:
- - name: config
- configMap:
- name: {{ template "grafana.fullname" . }}
- {{- range .Values.extraConfigmapMounts }}
- - name: {{ .name }}
- configMap:
- name: {{ .configMap }}
- {{- end }}
- {{- if .Values.dashboards }}
- {{- range (keys .Values.dashboards | sortAlpha) }}
- - name: dashboards-{{ . }}
- configMap:
- name: {{ template "grafana.fullname" $ }}-dashboards-{{ . }}
- {{- end }}
- {{- end }}
- {{- if .Values.dashboardsConfigMaps }}
- {{ $root := . }}
- {{- range $provider, $name := .Values.dashboardsConfigMaps }}
- - name: dashboards-{{ $provider }}
- configMap:
- name: {{ tpl $name $root }}
- {{- end }}
- {{- end }}
- {{- if .Values.ldap.enabled }}
- - name: ldap
- secret:
- {{- if .Values.ldap.existingSecret }}
- secretName: {{ .Values.ldap.existingSecret }}
- {{- else }}
- secretName: {{ template "grafana.fullname" . }}
- {{- end }}
- items:
- - key: ldap-toml
- path: ldap.toml
- {{- end }}
- {{- if and .Values.persistence.enabled (eq .Values.persistence.type "pvc") }}
- - name: storage
- persistentVolumeClaim:
- claimName: {{ .Values.persistence.existingClaim | default (include "grafana.fullname" .) }}
- {{- else if and .Values.persistence.enabled (eq .Values.persistence.type "statefulset") }}
- # nothing
- {{- else }}
- - name: storage
- emptyDir: {}
- {{- end -}}
- {{- if .Values.sidecar.dashboards.enabled }}
- - name: sc-dashboard-volume
- emptyDir: {}
- {{- if .Values.sidecar.dashboards.SCProvider }}
- - name: sc-dashboard-provider
- configMap:
- name: {{ template "grafana.fullname" . }}-config-dashboards
- {{- end }}
- {{- end }}
- {{- if .Values.sidecar.datasources.enabled }}
- - name: sc-datasources-volume
- emptyDir: {}
- {{- end -}}
- {{- if .Values.sidecar.notifiers.enabled }}
- - name: sc-notifiers-volume
- emptyDir: {}
- {{- end -}}
- {{- range .Values.extraSecretMounts }}
- {{- if .secretName }}
- - name: {{ .name }}
- secret:
- secretName: {{ .secretName }}
- defaultMode: {{ .defaultMode }}
- {{- else if .projected }}
- - name: {{ .name }}
- projected: {{- toYaml .projected | nindent 6 }}
- {{- end }}
- {{- end }}
- {{- range .Values.extraVolumeMounts }}
- - name: {{ .name }}
- persistentVolumeClaim:
- claimName: {{ .existingClaim }}
- {{- end }}
- {{- range .Values.extraEmptyDirMounts }}
- - name: {{ .name }}
- emptyDir: {}
- {{- end -}}
- {{- if .Values.extraContainerVolumes }}
- {{ toYaml .Values.extraContainerVolumes | indent 2 }}
- {{- end }}
- {{- end }}
|