kind: Deployment apiVersion: apps/v1 metadata: name: {{ include "ceph-csi-cephfs.provisioner.fullname" . }} labels: app: {{ include "ceph-csi-cephfs.name" . }} chart: {{ include "ceph-csi-cephfs.chart" . }} component: {{ .Values.provisioner.name }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} spec: replicas: {{ .Values.provisioner.replicas }} selector: matchLabels: app: {{ include "ceph-csi-cephfs.name" . }} component: {{ .Values.provisioner.name }} release: {{ .Release.Name }} template: metadata: labels: app: {{ include "ceph-csi-cephfs.name" . }} chart: {{ include "ceph-csi-cephfs.chart" . }} component: {{ .Values.provisioner.name }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} spec: serviceAccountName: {{ include "ceph-csi-cephfs.serviceAccountName.provisioner" . }} containers: - name: csi-provisioner image: "{{ .Values.provisioner.image.repository }}:{{ .Values.provisioner.image.tag }}" args: - "--csi-address=$(ADDRESS)" - "--v=5" - "--timeout=60s" - "--enable-leader-election=true" - "--leader-election-type=leases" - "--retry-interval-start=500ms" env: - name: ADDRESS value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}" imagePullPolicy: {{ .Values.provisioner.image.pullPolicy }} volumeMounts: - name: socket-dir mountPath: {{ .Values.socketDir }} resources: {{ toYaml .Values.provisioner.resources | indent 12 }} {{ if .Values.attacher.enabled }} - name: csi-attacher image: "{{ .Values.attacher.image.repository }}:{{ .Values.attacher.image.tag }}" args: - "--v=5" - "--csi-address=$(ADDRESS)" - "leader-election=true" - "--leader-election-type=leases" env: - name: ADDRESS value: "{{ .Values.socketDir }}/{{ .Values.socketFile }}" imagePullPolicy: {{ .Values.attacher.image.pullPolicy }} volumeMounts: - name: socket-dir mountPath: {{ .Values.socketDir }} {{ end }} - name: csi-cephfsplugin securityContext: privileged: true capabilities: add: ["SYS_ADMIN"] allowPrivilegeEscalation: true image: "{{ .Values.nodeplugin.plugin.image.repository }}:{{ .Values.nodeplugin.plugin.image.tag }}" args : - "--nodeid=$(NODE_ID)" - "--type=cephfs" - "--endpoint=$(CSI_ENDPOINT)" - "--v=5" - "--drivername=$(DRIVER_NAME)" - "--metadatastorage=k8s_configmap" env: - name: DRIVER_NAME value: {{ .Values.driverName }} - name: NODE_ID valueFrom: fieldRef: fieldPath: spec.nodeName - name: CSI_ENDPOINT value: "unix:/{{ .Values.socketDir }}/{{ .Values.socketFile }}" imagePullPolicy: {{ .Values.nodeplugin.plugin.image.pullPolicy }} volumeMounts: - name: socket-dir mountPath: {{ .Values.socketDir }} - name: host-rootfs mountPath: "/rootfs" - name: ceph-csi-config mountPath: /etc/ceph-csi-config/ - name: keys-tmp-dir mountPath: /tmp/csi/keys resources: {{ toYaml .Values.nodeplugin.plugin.resources | indent 12 }} volumes: - name: socket-dir emptyDir: {} #FIXME this seems way too much. Why is it needed at all for this? - name: host-rootfs hostPath: path: / - name: ceph-csi-config configMap: name: {{ .Values.configMapName | quote }} - name: keys-tmp-dir emptyDir: { medium: "Memory" } {{- if .Values.provisioner.affinity -}} affinity: {{ toYaml .Values.provisioner.affinity . | indent 8 }} {{- end -}} {{- if .Values.provisioner.nodeSelector -}} nodeSelector: {{ toYaml .Values.provisioner.nodeSelector | indent 8 }} {{- end -}} {{- if .Values.provisioner.tolerations -}} tolerations: {{ toYaml .Values.provisioner.tolerations | indent 8 }} {{- end -}}