to unify the storage interface of Container Orchestrator Systems (COs) like Kubernetes, Mesos etc. combined with storage vendors like Ceph, Portworx, NetApp etc. • a single CSI for a storage vendor is guaranteed to work with all COs.
All Functionality is implemented as a service • Segregation between Controller and Node Services. • Idempotency • Wire protocol: gRPC • Synchronous APIs.
CSI Identity : is mainly for identifying the plugin service, making sure it’s healthy, and returning basic information about the plugin itself. • CSI Controller : is responsible of controlling and managing the volumes, such as: creating, deleting, attaching/detaching, snapshotting, etc. • CSI Node: is responsible for controlling volume’s action in the Kubernetes node.
volume driver” container that implements the volume plugin behavior and exposes a gRPC interface via a unix domain socket, as defined in the CSI spec (including Controller, Node, and Identity services). • Bundle the “CSI volume driver” container with helper containers (external-attacher, external-provisioner, node-driver-registrar, cluster-driver-registrar, external-resizer, external-snapshotter, livenessprobe) • These helper containers will assist the “CSI volume driver” container in interacting with the Kubernetes system. • Deploy the above as DaemonSets, StatefulSets to enable the storage provider in your Kubernetes Cluster.