{{/* This template serves as the blueprint for the mountPermissions job that is run before chart installation. */}} {{- define "common.class.mountPermissions" -}} {{- if .Values.persistence -}} {{- $jobName := include "common.names.fullname" . -}} {{- $user := 568 -}} {{- $group := 568 -}} {{- if .Values.env -}} {{- $user = dig "PUID" $user .Values.env -}} {{- $group = dig "PGID" $group .Values.env -}} {{- end -}} {{- $user = dig "runAsUser" $user .Values.podSecurityContext -}} {{- $group = dig "fsGroup" $group .Values.podSecurityContext -}} {{- $hostPathMounts := dict -}} {{- range $name, $mount := .Values.persistence -}} {{- if and $mount.enabled $mount.setPermissions -}} {{- $name = default ( $name| toString ) $mount.name -}} {{- $_ := set $hostPathMounts $name $mount -}} {{- end -}} {{- end }} {{- if $hostPathMounts -}} --- apiVersion: batch/v1 kind: Job metadata: name: {{ printf "%s-auto-permissions" $jobName }} labels: {{- include "common.labels" . | nindent 4 }} annotations: "helm.sh/hook": pre-install,pre-upgrade "helm.sh/hook-weight": "-10" "helm.sh/hook-delete-policy": hook-succeeded,hook-failed,before-hook-creation spec: template: metadata: spec: restartPolicy: Never containers: - name: set-mount-permissions image: alpine:3.3 command: - /bin/sh - -c - | {{- range $_, $hpm := $hostPathMounts }} chown -R {{ printf "%d:%d %s" (int $user) (int $group) $hpm.mountPath }} {{- end }} volumeMounts: {{- range $name, $hpm := $hostPathMounts }} - name: {{ printf "hostpathmounts-%s" $name }} mountPath: {{ $hpm.mountPath }} {{- if $hpm.subPath }} subPath: {{ $hpm.subPath }} {{- end }} {{- end }} volumes: {{- range $name, $hpm := $hostPathMounts }} - name: {{ printf "hostpathmounts-%s" $name }} {{- /* Always prefer an emptyDir next if that is set */}} {{- $emptyDir := false -}} {{- if $hpm.emptyDir -}} {{- if $hpm.emptyDir.enabled -}} {{- $emptyDir = true -}} {{- end -}} {{- end -}} {{- if $emptyDir }} {{- if or $hpm.emptyDir.medium $hpm.emptyDir.sizeLimit }} emptyDir: {{- with $hpm.emptyDir.medium }} medium: "{{ . }}" {{- end }} {{- with $hpm.emptyDir.sizeLimit }} sizeLimit: "{{ . }}" {{- end }} {{- else }} emptyDir: {} {{- end }} {{- else }} hostPath: path: {{ required "hostPath not set" $hpm.hostPath }} {{ end }} {{- end }} {{- end -}} {{- end -}} {{- end -}}