lmilbaum/ember-csi

Description: Multi-vendor CSI plugin supporting over 80 storage drivers

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 2 hours ago
Added to GitGenius on June 22nd, 2026
Created on September 20th, 2018
Open Issues & Pull Requests: 3 (+0)
Number of forks: 0
Total Stargazers: 0 (+0)
Total Subscribers: 1 (+0)

Issue Activity (beta)

Open issues: 0
New in 7 days: 0
Closed in 7 days: 0
Avg open age: N/A days
Stale 30+ days: 0
Stale 90+ days: 0

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Ember CSI is a multi-vendor Container Storage Interface plugin written in Python that consolidates support for over 80 storage drivers into a single unified plugin. It provides both block and mount storage capabilities to container orchestration systems like Kubernetes, eliminating the need to deploy separate CSI drivers for different storage backends.

The plugin implements the latest CSI specifications and includes support for snapshot operations, a feature recently introduced to the CSI standard. The comprehensive feature set covers volume creation and deletion, snapshot creation and deletion, volume listing with pagination, snapshot listing with pagination, volume attachment and detachment, storage capacity reporting, node probing, and plugin information retrieval. The driver maintains compatibility with CSI specification versions 0.2 and 1.0, allowing flexibility in deployment scenarios.

Ember CSI depends on Cinder v11.0 or later as its foundational storage abstraction layer. The installation process requires first installing the Cinder Python package, followed by the ember-csi package itself from PyPi. Beyond these base requirements, the plugin accommodates numerous storage-specific dependencies. For controller operations, these include specialized client libraries for vendors like HPE 3PAR, Pure Storage, Dell EMC VMAX, IBM systems, Kaminario, Fujitsu, and others. Node-level operations require additional packages depending on the connection protocol, such as iSCSI initiator tools and device-mapper-multipath for iSCSI backends, or ceph-common for RBD/Ceph deployments.

Configuration occurs entirely through environmental variables, with no configuration files required. Key variables include CSI_ENDPOINT for service binding, CSI_MODE to specify whether the service runs as controller, node, or both, and X_CSI_SPEC_VERSION to select the CSI specification version. Backend-specific configuration is provided through X_CSI_BACKEND_CONFIG, while X_CSI_EMBER_CONFIG handles global settings for the Ember and cinderlib layers. The X_CSI_SYSTEM_FILES variable allows operators to inject driver-specific files by pointing to tar archives that get extracted into the root filesystem.

The repository includes comprehensive examples for both baremetal and containerized deployments. Baremetal examples cover LVM, Ceph/RBD, and XtremIO backends with detailed environment configurations. A sample Dockerfile and bash scripts enable containerized testing, with the akrog/ember-csi container image available on Docker Hub. Testing is facilitated through the CSC tool, which simulates container orchestration system commands for operations like volume creation, attachment, and deletion.

The plugin currently supports only the SINGLE_MODE_WRITER access mode, though it will accept and mount SINGLE_MODE_READER_ONLY requests as read-write volumes. Debugging capabilities include configurable logging levels through environmental variables, with support for both local debugging via pdb and remote debugging through rpdb on port 4444. The tested operational mode combines controller and node servicers in a single service instance, while separate controller and node modes are acknowledged as having known issues.

ember-csi
by
lmilbaumlmilbaum/ember-csi

Repository Details

Fetching additional details & charts...