CSI – Container Storage Interface. This is an industry standard interface that can be used by any storage system provider and works across various container orchestration systems, such as Kubernetes, Mesos and Cloud Foundry. Envisage a storage supplier writing a single CSI plugin so their storage could be used by containers orchestrated by any CSI-supporting orchestrator.

The specification is formally described here. With it, a container orchestrator interacts with a plugin though remote procedure calls (RPCs.) These, also known as Application Programming Interface (API) calls, are used for;

  • Dynamic provisioning and deprovisioning of a volume.
  • Attaching or detaching a volume from a node.
  • Mounting/unmounting a volume from a node.
  • Consumption of both block and mountable volumes.
  • Local storage providers (e.g., device mapper, lvm).
  • Creating and deleting a snapshot (source of the snapshot is a volume).
  • Provisioning a new volume from a snapshot (reverting snapshot, where data in the original volume is erased and replaced with data in the snapshot, is out of scope).