OpenShift Container Platform 4.2 introduced support for the CSI operator-framework-driven API. This CSI API runs on the control-plane nodes to orchestrate and manage configuration and tear-down of data-path storage operations. While storage driver plug-in support was available in earlier Kubernetes releases, it required the integration of volume plug-ins into the core Kubernetes codebase. Kubernetes version 1.21 is integrated into OpenShift Container Platform 4.8.
CSI was released in Kubernetes v1.13, replacing the volume plug-in system. Volume plug-ins were built as part of the Kubernetes source code, meaning that changes to various volume plug-ins provided by storage vendors had to be made in lockstep with the core Kubernetes release schedule. The CSI specification aims to standardize the exposure of block and file storage systems to workloads running on container orchestration systems such as Kubernetes. Kubernetes can now be readily extended to support any storage solution with CSI drivers that the vendor provides. Vendors can manage the life cycle of their drivers directly, using an operator, without waiting until the next core Kubernetes release.
Drivers are typically shipped as container images. These images are not platform-aware, so additional components are required to enable interaction between OpenShift Container Platform and the driver image. An external CSI controller running on infrastructure nodes has three containers: an attacher, provisioner, and driver. The attacher and provisioner containers serve as translators, mapping OpenShift Container Platform calls to corresponding calls to the CSI driver. No other communication to the CSI driver is allowed. On each compute node, a CSI driver daemon set is created containing the CSI driver and a CSI registrar. The registrar registers the driver with the openshift-node service, which then directly connects to the driver.
The following figure shows this architecture:
Figure 10. CSI architecture
Support for snapshots of CSI volumes was added in Kubernetes v1.19 and is available in OpenShift Container Platform 4.8. OpenShift provides the CSI Snapshot Controller Operator, which manages snapshot objects. An external snapshot sidecar container must be implemented in the CSI driver to enable snapshot functionality. All Dell Technologies CSI storage drivers support snapshots. For information about production-grade cluster backup and restore functionality, see Data protection.
The CSI drivers that are provided as open source by Dell Technologies enable a wide range of storage options to be employed with OpenShift. For information about all the available CSI drivers, including their features and capabilities for each of the supported Dell storage options, see the Dell Technologies CSM/CSI Drivers GitHub.