Deployment of CSI and CSM is done through sidecar containers. Some of these containers are required (dark blue) by the CSI specification, others are optional and enabled by default (turquoise), or optional and disabled by default (light blue). The latter enable certain features that can be standard CSI or Dell extensions for CSM.
Figure 8. Driver sidecar containers
Each sidecar has tasks related to either boilerplate generic functions or specific actions. For the controller, we have:
- The controller driver, which sends API calls to Unisphere.
- The provisioner, which watches the Kubernetes API server for PersistentVolumeClaim objects. If a claim appears, the registrar creates the volume; if a claim disappears, the registrar removes the volume.
- The attacher, which watches the Kubernetes API server for VolumeAttachment objects and then publishes or unpublishes the volumes.
- The resizer, which watches for the volume expansion requests.
- The snapshotter, which deals with requests related to volume snapshots (create, restore in new PVC, and delete).
- The volume health to expose metrics (volume size and used, inodes used, and so on) to kube-state API.
- The Dell Replication, which watches for Dell Replication Controller requests and provisions replicated LUNs or triggers failover/failback actions.
- The Dell Reverse Proxy, which is a reverse proxy specific to the CSI Driver for PowerMax. It helps to load-balance API requests between multiple Unisphere endpoints and throttles the requests to the endpoints.
- The Dell Authorization Proxy, which communicates with the CSM for authorization.
.