--- apiVersion: v1 kind: Namespace metadata: name: katbox --- apiVersion: storage.k8s.io/v1 kind: CSIDriver metadata: name: katbox.csi.paypal.com spec: # Supports persistent and ephemeral inline volumes. volumeLifecycleModes: - Ephemeral # To determine at runtime which mode a volume uses, pod info and its # "csi.storage.k8s.io/ephemeral" entry are needed. podInfoOnMount: true attachRequired: false --- kind: DaemonSet apiVersion: apps/v1 metadata: name: csi-katboxplugin namespace: katbox spec: selector: matchLabels: app: csi-katboxplugin template: metadata: labels: app: csi-katboxplugin spec: hostNetwork: true tolerations: - key: "node-role.kubernetes.io/master" operator: "Exists" effect: "NoSchedule" - operator: "Exists" containers: - name: node-driver-registrar image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.0.1 args: - --v=5 - --csi-address=/csi/csi.sock - --kubelet-registration-path=/var/lib/kubelet/plugins/csi-katbox/csi.sock securityContext: # This is necessary only for systems with SELinux, where # non-privileged sidecar containers cannot access unix domain socket # created by privileged CSI driver container. privileged: true env: - name: KUBE_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName volumeMounts: - mountPath: /csi name: socket-dir - mountPath: /registration name: registration-dir - mountPath: /csi-data-dir name: csi-data-dir - name: katbox image: quay.io/katbox/katboxplugin:v1.0.0 args: - "--drivername=katbox.csi.paypal.com" - "--v=5" - "--endpoint=$(CSI_ENDPOINT)" - "--nodeid=$(KUBE_NODE_NAME)" - "--afterlifespan=3h" - "--headroom=.1" env: - name: CSI_ENDPOINT value: unix:///csi/csi.sock - name: KUBE_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName securityContext: privileged: true ports: - containerPort: 9898 name: healthz protocol: TCP livenessProbe: failureThreshold: 5 httpGet: path: /healthz port: healthz initialDelaySeconds: 10 timeoutSeconds: 3 periodSeconds: 10 volumeMounts: - mountPath: /csi name: socket-dir - mountPath: /var/lib/kubelet/pods mountPropagation: Bidirectional name: mountpoint-dir - mountPath: /var/lib/kubelet/plugins mountPropagation: Bidirectional name: plugins-dir - mountPath: /csi-data-dir name: csi-data-dir - mountPath: /dev name: dev-dir - name: liveness-probe volumeMounts: - mountPath: /csi name: socket-dir image: k8s.gcr.io/sig-storage/livenessprobe:v2.2.0 args: - --csi-address=/csi/csi.sock - --health-port=9898 volumes: - hostPath: path: /var/lib/kubelet/plugins/csi-katbox type: DirectoryOrCreate name: socket-dir - hostPath: path: /var/lib/kubelet/pods type: DirectoryOrCreate name: mountpoint-dir - hostPath: path: /var/lib/kubelet/plugins_registry type: Directory name: registration-dir - hostPath: path: /var/lib/kubelet/plugins type: Directory name: plugins-dir - hostPath: # 'path' is where PV data is persisted on host. # using /tmp is also possible while the PVs will not available after plugin container recreation or host reboot path: /var/lib/csi-katbox-data/ type: DirectoryOrCreate name: csi-data-dir - hostPath: path: /dev type: Directory name: dev-dir