apiVersion: v1 kind: ConfigMap metadata: name: {{ .Values.common.configMapName }} namespace: {{ .Values.common.namespace }} labels: heritage: {{ .Release.Service | quote }} release: {{ .Release.Name | quote }} chart: {{ replace "+" "_" .Chart.Version | printf "%s-%s" .Chart.Name }} data: {{- if .Values.daemonset.nodeLabels }} nodeLabelsForPV: | {{- range $label := .Values.daemonset.nodeLabels }} - {{$label}} {{- end }} {{- end }} {{- if .Values.common.useAlphaAPI }} useAlphaAPI: "true" {{- end }} {{- if .Values.common.setPVOwnerRef }} setPVOwnerRef: "true" {{- end }} {{- if .Values.common.useJobForCleaning }} useJobForCleaning: "yes" {{- end}} {{- if .Values.common.useNodeNameOnly }} useNodeNameOnly: "true" {{- end }} {{- if .Values.common.minResyncPeriod }} minResyncPeriod: {{ .Values.common.minResyncPeriod | quote }} {{- end}} storageClassMap: | {{- range $classConfig := .Values.classes }} {{ $classConfig.name }}: hostDir: {{ $classConfig.hostDir }} mountDir: {{ if $classConfig.mountDir }} {{- $classConfig.mountDir -}} {{ else }} {{- $classConfig.hostDir -}} {{ end }} {{- if $classConfig.blockCleanerCommand }} blockCleanerCommand: {{- range $val := $classConfig.blockCleanerCommand }} - "{{ $val -}}"{{- end}} {{- end }} {{- if $classConfig.volumeMode }} volumeMode: {{ $classConfig.volumeMode }} {{- end }} {{- if $classConfig.fsType }} fsType: {{ $classConfig.fsType }} {{- end }} {{- end }} --- apiVersion: apps/v1 kind: DaemonSet metadata: name: {{ .Values.daemonset.name }} namespace: {{ .Values.common.namespace }} labels: app: local-volume-provisioner heritage: {{ .Release.Service | quote }} release: {{ .Release.Name | quote }} chart: {{ replace "+" "_" .Chart.Version | printf "%s-%s" .Chart.Name }} spec: selector: matchLabels: app: local-volume-provisioner template: metadata: labels: app: local-volume-provisioner spec: serviceAccountName: {{.Values.daemonset.serviceAccount}} {{- if .Values.daemonset.priorityClassName }} {{- if eq .Values.common.namespace "kube-system" }} priorityClassName: {{.Values.daemonset.priorityClassName}} {{- else }} {{- $systemCriticalClasses := list "system-cluster-critical" "system-node-critical" }} {{- if not (has .Values.daemonset.priorityClassName $systemCriticalClasses) }} priorityClassName: {{.Values.daemonset.priorityClassName}} {{- end }} {{- end }} {{- end }} {{- if .Values.daemonset.nodeSelector }} nodeSelector: {{ .Values.daemonset.nodeSelector | toYaml | trim | indent 8 }} {{- end }} {{- if .Values.daemonset.tolerations }} tolerations: {{ .Values.daemonset.tolerations | toYaml | trim | indent 8 }} {{- end }} containers: - image: "{{ .Values.daemonset.image }}" {{- if .Values.daemonset.imagePullPolicy }} imagePullPolicy: {{ .Values.daemonset.imagePullPolicy | quote }} {{- end }} name: provisioner securityContext: privileged: true {{- if .Values.daemonset.resources }} resources: {{ .Values.daemonset.resources | toYaml | trim | indent 12 }} {{- end }} env: - name: MY_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: MY_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: JOB_CONTAINER_IMAGE value: "{{ .Values.daemonset.image }}" {{- if .Values.daemonset.kubeConfigEnv }} - name: KUBECONFIG value: {{.Values.daemonset.kubeConfigEnv}} {{- end }} {{- if .Values.prometheus.operator.enabled }} ports: - containerPort: 8080 name: http {{- end }} volumeMounts: - mountPath: /etc/provisioner/config name: provisioner-config readOnly: true - mountPath: /dev name: provisioner-dev {{- range $classConfig := .Values.classes }} - mountPath: {{ if $classConfig.mountDir }} {{- $classConfig.mountDir -}} {{ else }} {{- $classConfig.hostDir -}} {{ end }} name: {{ $classConfig.name }} mountPropagation: "HostToContainer" {{- end }} volumes: - name: provisioner-config configMap: name: {{ .Values.common.configMapName }} - name: provisioner-dev hostPath: path: /dev {{- range $classConfig := .Values.classes }} - name: {{ $classConfig.name }} hostPath: path: {{ $classConfig.hostDir }} {{- end }} {{- $release := .Release }} {{- $chart := .Chart }} {{- range $val := .Values.classes }} {{- if $val.storageClass }} --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: {{ $val.name }} {{- if kindIs "map" $val.storageClass }} {{- if $val.storageClass.isDefaultClass }} annotations: storageclass.kubernetes.io/is-default-class: "true" {{- end }} {{- end }} labels: heritage: {{ $release.Service | quote }} release: {{ $release.Name | quote }} chart: {{ replace "+" "_" $chart.Version | printf "%s-%s" $chart.Name }} provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer {{- if kindIs "map" $val.storageClass }} reclaimPolicy: {{ $val.storageClass.reclaimPolicy | default "Delete" }} {{- else }} reclaimPolicy: Delete {{- end }} {{- end }} {{- end }} {{- if .Values.prometheus.operator.enabled }} --- apiVersion: v1 kind: Service metadata: name: {{ .Values.daemonset.name }} namespace: {{ .Values.common.namespace }} labels: app: local-volume-provisioner heritage: {{ .Release.Service | quote }} release: {{ .Release.Name | quote }} chart: {{ replace "+" "_" .Chart.Version | printf "%s-%s" .Chart.Name }} spec: type: ClusterIP ports: - port: 8080 targetPort: 8080 name: http selector: app: local-volume-provisioner --- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: {{ .Values.daemonset.name }} namespace: {{ .Values.prometheus.operator.serviceMonitor.namespace }} labels: app: local-volume-provisioner heritage: {{ .Release.Service | quote }} release: {{ .Release.Name | quote }} chart: {{ replace "+" "_" .Chart.Version | printf "%s-%s" .Chart.Name }} {{- if .Values.prometheus.operator.serviceMonitor.selector }} {{ toYaml .Values.prometheus.operator.serviceMonitor.selector }} {{- end -}} spec: jobLabel: app selector: matchLabels: app: local-volume-provisioner release: {{ .Release.Name | quote }} namespaceSelector: matchNames: - {{ .Values.common.namespace }} endpoints: - port: http interval: {{ .Values.prometheus.operator.serviceMonitor.interval }} scheme: http {{- end }}