Ceph CSI

June 4, 2026 ยท View on GitHub

GitHub release Mergify Status Go Report
Card TODOs CII Best Practices

This repo contains the Ceph Container Storage Interface (CSI) driver for RBD, CephFS and Kubernetes sidecar deployment YAMLs to support CSI functionality: provisioner, attacher, resizer, driver-registrar and snapshotter.

Overview

Ceph CSI plugins implement an interface between a CSI-enabled Container Orchestrator (CO) and Ceph clusters. They enable dynamically provisioning Ceph volumes and attaching them to workloads.

Independent CSI plugins are provided to support RBD and CephFS backed volumes,

  • For details about configuration and deployment of RBD plugin, please refer rbd doc and for CephFS plugin configuration and deployment please refer cephFS doc.
  • For example usage of the RBD and CephFS CSI plugins, see examples in examples/.
  • Stale resource cleanup, please refer cleanup doc.

NOTE:

  • Ceph CSI Arm64 support is experimental.

Project status

Status: GA

Known to work CO platforms

Ceph CSI drivers are currently developed and tested exclusively in Kubernetes environments.

Ceph CSI VersionContainer Orchestrator NameVersion Tested
devel (v3.18.0)Kubernetesv1.34, v1.35, v1.36
v3.17.0Kubernetesv1.33, v1.34, v1.35
v3.16.2Kubernetesv1.32, v1.33, v1.34
v3.16.1Kubernetesv1.32, v1.33, v1.34
v3.16.0Kubernetesv1.32, v1.33, v1.34

There is work in progress to make this CO-independent and thus support other orchestration environments (Nomad, Mesos..etc).

NOTE:

The supported window of Ceph CSI versions is "N.(x-1)": (N (Latest major release) . (x (Latest minor release) - 1)).

For example, if the Ceph CSI latest major version is 3.9.0 today, support is provided for the versions above 3.8.0. If users are running an unsupported Ceph CSI version, they will be asked to upgrade when requesting support.

Support Matrix

Ceph-CSI features and available versions

Please refer rbd nbd mounter for its support details.

PluginFeaturesFeature StatusCSI Driver VersionCSI Spec VersionCeph Cluster VersionKubernetes Version
RBDDynamically provision, de-provision Block mode RWO volumeGA>= v1.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.14.0
Dynamically provision, de-provision Block mode RWX volumeGA>= v1.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.14.0
Dynamically provision, de-provision Block mode RWOP volumeAlpha>= v3.5.0>= v1.5.0Pacific (>=v16.2.0)>= v1.22.0
Dynamically provision, de-provision File mode RWO volumeGA>= v1.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.14.0
Dynamically provision, de-provision File mode RWOP volumeAlpha>= v3.5.0>= v1.5.0Pacific (>=v16.2.0)>= v1.22.0
Provision File Mode ROX volume from snapshotAlpha>= v3.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.17.0
Provision File Mode ROX volume from another volumeAlpha>= v3.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.16.0
Provision Block Mode ROX volume from snapshotAlpha>= v3.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.17.0
Provision Block Mode ROX volume from another volumeAlpha>= v3.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.16.0
Creating and deleting snapshotGA>= v1.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.17.0
Provision volume from snapshotGA>= v1.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.17.0
Provision volume from another volumeGA>= v1.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.16.0
Expand volumeBeta>= v2.0.0>= v1.1.0Pacific (>=v16.2.0)>= v1.15.0
Volume/PV Metrics of File Mode VolumeGA>= v1.2.0>= v1.1.0Pacific (>=v16.2.0)>= v1.15.0
Volume/PV Metrics of Block Mode VolumeGA>= v1.2.0>= v1.1.0Pacific (>=v16.2.0)>= v1.21.0
Topology Aware Provisioning SupportAlpha>= v2.1.0>= v1.1.0Pacific (>=v16.2.0)>= v1.14.0
RBD-NBD QoS by VolumeAttributesClassAlpha>= v3.17.0>= v1.12.0Pacific (>=v16.2.0)>= v1.34.0
CephFSDynamically provision, de-provision File mode RWO volumeGA>= v1.1.0>= v1.0.0Pacific (>=v16.2.0)>= v1.14.0
Dynamically provision, de-provision File mode RWX volumeGA>= v1.1.0>= v1.0.0Pacific (>=v16.2.0)>= v1.14.0
Dynamically provision, de-provision File mode ROX volumeAlpha>= v3.0.0>= v1.0.0Pacific (>=v16.2.0)>= v1.14.0
Dynamically provision, de-provision File mode RWOP volumeAlpha>= v3.5.0>= v1.5.0Pacific (>=v16.2.0)>= v1.22.0
Creating and deleting snapshotGA>= v3.1.0>= v1.0.0Pacific (>=v16.2.0)>= v1.17.0
Creating and deleting volume group snapshotAlpha>= v3.11.0>= v1.9.0Squid (>=v19.0.0)>= v1.31.0
Provision volume from snapshotGA>= v3.1.0>= v1.0.0Pacific (>=v16.2.0)>= v1.17.0
Provision volume from another volumeGA>= v3.1.0>= v1.0.0Pacific (>=v16.2.0)>= v1.16.0
Expand volumeBeta>= v2.0.0>= v1.1.0Pacific (>=v16.2.0)>= v1.15.0
Volume/PV Metrics of File Mode VolumeGA>= v1.2.0>= v1.1.0Pacific (>=v16.2.0)>= v1.15.0
NFSDynamically provision, de-provision File mode RWO volumeAlpha>= v3.6.0>= v1.0.0Pacific (>=v16.2.0)>= v1.14.0
Dynamically provision, de-provision File mode RWX volumeAlpha>= v3.6.0>= v1.0.0Pacific (>=v16.2.0)>= v1.14.0
Dynamically provision, de-provision File mode ROX volumeAlpha>= v3.6.0>= v1.0.0Pacific (>=v16.2.0)>= v1.14.0
Dynamically provision, de-provision File mode RWOP volumeAlpha>= v3.6.0>= v1.5.0Pacific (>=v16.2.0)>= v1.22.0
Expand volumeAlpha>= v3.7.0>= v1.1.0Pacific (>=v16.2.0)>= v1.15.0
Creating and deleting snapshotAlpha>= v3.7.0>= v1.1.0Pacific (>=v16.2.0)>= v1.17.0
Provision volume from snapshotAlpha>= v3.7.0>= v1.1.0Pacific (>=v16.2.0)>= v1.17.0
Provision volume from another volumeAlpha>= v3.7.0>= v1.1.0Pacific (>=v16.2.0)>= v1.16.0
Modify volume parameters with ControllerModifyVolumeAlpha>= v3.17.0>= v1.12.0Pacific (>=v16.2.0)>= v1.34.0
NVMe-oFDynamically provision, de-provision Block mode RWO volumeAlpha>= v3.16.0>= v1.0.0Tentacle (>=v20.2.0)>= v1.14.0
Dynamically provision, de-provision Block mode RWX volumeAlpha>= v3.16.0>= v1.0.0Tentacle (>=v20.2.0)>= v1.14.0
Dynamically provision, de-provision Block mode RWOP volumeAlpha>= v3.16.0>= v1.5.0Tentacle (>=v20.2.0)>= v1.22.0
Dynamically provision, de-provision File mode RWO volumeAlpha>= v3.16.0>= v1.0.0Tentacle (>=v20.2.0)>= v1.14.0
Dynamically provision, de-provision File mode RWOP volumeAlpha>= v3.16.0>= v1.5.0Tentacle (>=v20.2.0)>= v1.22.0
Provision File Mode ROX volume from snapshotAlpha>= v3.16.0>= v1.0.0Tentacle (>=v20.2.0)>= v1.17.0
Provision File Mode ROX volume from another volumeAlpha>= v3.16.0>= v1.0.0Tentacle (>=v20.2.0)>= v1.16.0
Provision Block Mode ROX volume from snapshotAlpha>= v3.16.0>= v1.0.0Tentacle (>=v20.2.0)>= v1.17.0
Provision Block Mode ROX volume from another volumeAlpha>= v3.16.0>= v1.0.0Tentacle (>=v20.2.0)>= v1.16.0
Expand volumeAlpha>= v3.16.0>= v1.1.0Tentacle (>=v20.2.0)>= v1.33.0
Creating and deleting snapshotAlpha>= v3.16.1>= v1.1.0Tentacle (>=v20.2.0)>= v1.33.0
Provision volume from snapshotAlpha>= v3.16.1>= v1.1.0Tentacle (>=v20.2.0)>= v1.33.0
Modify volume parameters with ControllerModifyVolumeAlpha>= v3.16.0>= v1.12.0Tentacle (>=v20.2.0)>= v1.34.0
Secure authentication between host and gateway (DH-CHAP)Alpha>= v3.17.0>= v1.0.0Tentacle (>=v20.2.0)>= v1.34.0

NOTE: The Alpha status reflects possible non-backward compatible changes in the future, and is thus not recommended for production use.

CSI spec and Kubernetes version compatibility

Please refer to the matrix in the Kubernetes documentation.

Ceph CSI Container images and release compatibility

Ceph CSI Release/BranchContainer image nameImage Tag
devel (Branch)quay.io/cephcsi/cephcsicanary
v3.17.0 (Release)quay.io/cephcsi/cephcsiv3.17.0
v3.16.2 (Release)quay.io/cephcsi/cephcsiv3.16.2
v3.16.1 (Release)quay.io/cephcsi/cephcsiv3.16.1
v3.16.0 (Release)quay.io/cephcsi/cephcsiv3.16.0
Deprecated Ceph CSI Release/BranchContainer image nameImage Tag
v3.15.1 (Release)quay.io/cephcsi/cephcsiv3.15.1
v3.15.0 (Release)quay.io/cephcsi/cephcsiv3.15.0
v3.14.2 (Release)quay.io/cephcsi/cephcsiv3.14.2
v3.14.1 (Release)quay.io/cephcsi/cephcsiv3.14.1
v3.14.0 (Release)quay.io/cephcsi/cephcsiv3.14.0
v3.13.1 (Release)quay.io/cephcsi/cephcsiv3.13.1
v3.13.0 (Release)quay.io/cephcsi/cephcsiv3.13.0
v3.12.3 (Release)quay.io/cephcsi/cephcsiv3.12.3
v3.12.2 (Release)quay.io/cephcsi/cephcsiv3.12.2
v3.12.1 (Release)quay.io/cephcsi/cephcsiv3.12.1
v3.12.0 (Release)quay.io/cephcsi/cephcsiv3.12.0
v3.11.0 (Release)quay.io/cephcsi/cephcsiv3.11.0
v3.10.2 (Release)quay.io/cephcsi/cephcsiv3.10.2
v3.10.1 (Release)quay.io/cephcsi/cephcsiv3.10.1
v3.10.0 (Release)quay.io/cephcsi/cephcsiv3.10.0
v3.9.0 (Release)quay.io/cephcsi/cephcsiv3.9.0
v3.8.1 (Release)quay.io/cephcsi/cephcsiv3.8.1
v3.8.0 (Release)quay.io/cephcsi/cephcsiv3.8.0
v3.7.2 (Release)quay.io/cephcsi/cephcsiv3.7.2
v3.7.1 (Release)quay.io/cephcsi/cephcsiv3.7.1
v3.7.0 (Release)quay.io/cephcsi/cephcsiv3.7.0
v3.6.1 (Release)quay.io/cephcsi/cephcsiv3.6.1
v3.6.0 (Release)quay.io/cephcsi/cephcsiv3.6.0
v3.5.1 (Release)quay.io/cephcsi/cephcsiv3.5.1
v3.5.0 (Release)quay.io/cephcsi/cephcsiv3.5.0
v3.4.0 (Release)quay.io/cephcsi/cephcsiv3.4.0
v3.3.1 (Release)quay.io/cephcsi/cephcsiv3.3.1
v3.3.0 (Release)quay.io/cephcsi/cephcsiv3.3.0
v3.2.2 (Release)quay.io/cephcsi/cephcsiv3.2.2
v3.2.1 (Release)quay.io/cephcsi/cephcsiv3.2.1
v3.2.0 (Release)quay.io/cephcsi/cephcsiv3.2.0
v3.1.2 (Release)quay.io/cephcsi/cephcsiv3.1.2
v3.1.1 (Release)quay.io/cephcsi/cephcsiv3.1.1
v3.1.0 (Release)quay.io/cephcsi/cephcsiv3.1.0
v3.0.0 (Release)quay.io/cephcsi/cephcsiv3.0.0
v2.1.2 (Release)quay.io/cephcsi/cephcsiv2.1.2
v2.1.1 (Release)quay.io/cephcsi/cephcsiv2.1.1
v2.1.0 (Release)quay.io/cephcsi/cephcsiv2.1.0
v2.0.1 (Release)quay.io/cephcsi/cephcsiv2.0.1
v2.0.0 (Release)quay.io/cephcsi/cephcsiv2.0.0
v1.2.2 (Release)quay.io/cephcsi/cephcsiv1.2.2
v1.2.1 (Release)quay.io/cephcsi/cephcsiv1.2.1
v1.2.0 (Release)quay.io/cephcsi/cephcsiv1.2.0
v1.1.0 (Release)quay.io/cephcsi/cephcsiv1.1.0
v1.0.0 (Branch)quay.io/cephcsi/cephfspluginv1.0.0
v1.0.0 (Branch)quay.io/cephcsi/rbdpluginv1.0.0

Contributing to this repo

Please follow development-guide and coding style guidelines if you are interested to contribute to this repo.

Troubleshooting

Please submit an issue at: Issues

Weekly Bug Triage call

We conduct weekly bug triage calls at our slack channel on Tuesdays. More details are available here

Dev standup

A regular dev standup takes place every Monday at 12:00 PM UTC Convert to your local timezone by executing command date -d "12:00 UTC" on terminal

Any changes to the meeting schedule will be added to the agenda doc.

Anyone who wants to discuss the direction of the project, design and implementation reviews, or general questions with the broader community is welcome and encouraged to join.

Contact

Please use the following to reach members of the community: