Chapter 2. Architecture of IBM Spectrum Scale CSI Driver – IBM Spectrum Scale CSI Driver for Container Persistent Storage

Architecture of IBM Spectrum Scale CSI Driver
This chapter describes the architecture of IBM Spectrum Scale CSI diver. It describes various components of the driver and interaction between them. It also covers the architecture of IBM Spectrum Scale CSI operator that is used for driver deployment.
This chapter will help with the understanding of subsequent chapters like “Solutions and Use Cases”, ““Planning for IBM Spectrum Scale CSI driver deployment” and “Deployment and Administration”. Though not mandatory, this chapter is recommended for all users.
This chapter covers the following topics:
2.1 CSI Component Overview
The Container Storage Interface (CSI) is a standard for exposing arbitrary block and file storage systems to containerized workloads on Container Orchestration Systems (COs), such as Kubernetes.
Kubernetes supports a number of sidecar containers, which provide the logic to watch the Kubernetes API and trigger the appropriate operations against the CSI Volume Driver Container.
For more details about the Kubernetes CSI reference architecture, see the following website:
The CSI Specification references two types of Storage Plug-ins:
Node Plugin: A gRPC endpoint serving CSI RPCs that must be run on the Node whereupon an SP-provisioned volume will be published
Controller Plugin: A gRPC endpoint serving CSI RPCs that can be run anywhere
2.2 IBM Spectrum Scale CSI driver architecture
This section provides a component level overview of the CSI driver. It describes the deployment model of CSI driver with OpenShift/Kubernetes cluster and an IBM Spectrum Scale cluster. Figure 2-1 illustrates the deployment architecture of various CSI driver and IBM Spectrum Scale components, and the interaction between the driver and the IBM Spectrum Scale cluster.
Figure 2-1 Block Diagram of IBM Spectrum Scale CSI Driver with Kubernetes Cluster
The IBM Spectrum Scale Container Storage Interface (CSI) driver enables IBM Spectrum Scale to be used as persistent storage for stateful applications running in Kubernetes clusters. Through this CSI Driver, Kubernetes persistent volumes (PVs) can be provisioned from IBM Spectrum Scale.
The IBM Spectrum Scale CSI driver supports the following features:
Operator-based deployment: Availability of an operator to deploy the CSI driver
Static provisioning: Ability to use existing directories as persistent volumes
Lightweight dynamic provisioning: Ability to create directory-based volumes dynamically
File Set-based dynamic provisioning: Ability to create file set-based volumes dynamically
Multiple file systems support: Volumes can be created across multiple file systems
Remote mount support: Volumes can be created on a remotely mounted file system
IBM implements the CSI Specification of Storage Plug-ins in the following manner shown in Figure 2-2.
Figure 2-2 IBMs implementation of the CSI specification of storage plug-ins
IBM Spectrum Scale CSI Operator architecture
IBM Spectrum Scale CSI Operator is an Ansible-based operator for deployment and management of IBM Spectrum Scale CSI driver, Figure 2-3. This section describes the architecture of the CSI operator.
Figure 2-3 Component diagram of IBM Spectrum Scale CSI Operator
Operator is deployed as a Kubernetes deployment object. It consists of a POD with two containers:
Ansible
Ansible container is responsible for running playbooks for CSI driver management and deployment. This is responsible for bringing up the CSI driver.
Operator
Operator container watches for changes in CSI driver resources, such as daemonset and statefulset, and takes appropriate action if any change is detected. Operator container also handles changes in GUI secret that can typically happen after GUI password change or expiry. For more details, go to the following link:
For more details about provisioning storage within a container environment, see Chapter 5, “Deployment and Administration” on page 29.