- Quick Start Guide for Ceph-CSI-Operator
Before deploying the Ceph-CSI-Operator, ensure the following requirements are met:
- A Kubernetes cluster (supported version recommended) or OpenShift 4.x cluster
- Ceph cluster (supported version recommended)
kubectlCLI installed (orocCLI for OpenShift)
Note: In this guide, we will use minimal configurations to deploy the Ceph-CSI-Operator and drivers. You can customize the configurations as per your requirements.
kubectl create -f deploy/all-in-one/install.yamlFor OpenShift clusters, use the OpenShift-specific installer that includes the required SecurityContextConstraints:
kubectl create -f deploy/all-in-one/install-openshift.yamlverify the installation:
kubectl get pods -n ceph-csi-operator-system
NAME READY STATUS RESTARTS AGE
ceph-csi-operator-controller-manager-67d45fd9ff-zgst7 2/2 Running 0 40sOnce the operator is installed, deploy the Ceph-CSI drivers:
echo '
apiVersion: csi.ceph.io/v1
kind: Driver
metadata:
name: rbd.csi.ceph.com
namespace: ceph-csi-operator-system
' | kubectl create -f -echo '
apiVersion: csi.ceph.io/v1
kind: Driver
metadata:
name: cephfs.csi.ceph.com
namespace: ceph-csi-operator-system
' | kubectl create -f -echo '
apiVersion: csi.ceph.io/v1
kind: Driver
metadata:
name: nvmeof.csi.ceph.com
namespace: ceph-csi-operator-system
' | kubectl create -f -echo '
apiVersion: csi.ceph.io/v1
kind: Driver
metadata:
name: nfs.csi.ceph.com
namespace: ceph-csi-operator-system
' | kubectl create -f -To verify the installation, check the status of the Ceph-CSI components:
kubectl get pod -n ceph-csi-operator-system
NAME READY STATUS RESTARTS AGE
ceph-csi-operator-controller-manager-744dc99cb5-scxxh 2/2 Running 0 45s
cephfs.csi.ceph.com-ctrlplugin-5847c998b5-xf85m 5/5 Running 0 27s
cephfs.csi.ceph.com-nodeplugin-r6pkt 2/2 Running 0 27s
nvmeof.csi.ceph.com-ctrlplugin-6936b889a4-ya99h 5/5 Running 0 27s
nvmeof.csi.ceph.com-nodeplugin-ab67g 2/2 Running 0 27s
nfs.csi.ceph.com-ctrlplugin-76fd4f5b4c-smk2g 5/5 Running 0 27s
nfs.csi.ceph.com-nodeplugin-kbzms 2/2 Running 0 27s
rbd.csi.ceph.com-ctrlplugin-6965dcfdb8-w88kn 5/5 Running 0 4m35s
rbd.csi.ceph.com-nodeplugin-lnm4n 2/2 Running 0 4m35sCreate a CephConnection CR to connect to the Ceph cluster:
echo '
apiVersion: csi.ceph.io/v1
kind: CephConnection
metadata:
name: ceph-connection
namespace: ceph-csi-operator-system
spec:
monitors:
- 10.98.44.171:6789
' | kubectl create -f -Create a ClientProfile CR to define the client configuration which points to the CephConnection CR and the CephFS and RBD configurations:
echo '
apiVersion: csi.ceph.io/v1
kind: ClientProfile
metadata:
name: storage
namespace: ceph-csi-operator-system
spec:
cephConnectionRef:
name: ceph-connection
cephFs:
subVolumeGroup: csi
' | kubectl create -f -Important
The ClientProfile name (storage in this example) will be used as the clusterID parameter in your StorageClass and VolumeSnapshotClass resources.
Before creating storage classes, create Kubernetes Secrets with Ceph credentials for CSI operations.
For detailed instructions on creating Ceph users and Kubernetes Secrets, refer to the upstream Ceph-CSI documentation:
- Secret Examples:
- RBD Secret Example
- CephFS Secret Example (also used for NFS)
- Ceph Capabilities: Required Ceph Capabilities
Note
- Create secrets in the namespace where your applications will create PVCs
- NFS volumes use the same CephFS secret format since NFS is built on CephFS
Create StorageClasses using the upstream Ceph-CSI examples:
- RBD StorageClass Example
- CephFS StorageClass Example
- NFS StorageClass Example
- NVMe-oF StorageClass Example
Important
ClusterID and ClientProfile Mapping
The clusterID parameter must match your ClientProfile CR name:
# In your StorageClass
parameters:
clusterID: storage # Must match the ClientProfile name from step 6For snapshot support, use the upstream Ceph-CSI VolumeSnapshotClass examples:
Ensure the clusterID parameter matches your ClientProfile name:
parameters:
clusterID: storage # Must match your ClientProfile nameTest your setup using the Ceph-CSI PVC examples:
The PVC should reach Bound status, indicating successful provisioning.
To clean up the resources, delete the cepconnection, clientprofile and drivers:
kubectl delete cephconnection ceph-connection -n ceph-csi-operator-system
kubectl delete clientprofile storage -n ceph-csi-operator-system
kubectl delete driver rbd.csi.ceph.com -n ceph-csi-operator-system
kubectl delete driver cephfs.csi.ceph.com -n ceph-csi-operator-system
kubectl delete driver nvmeof.csi.ceph.com -n ceph-csi-operator-system
kubectl delete driver nfs.csi.ceph.com -n ceph-csi-operator-systemTo uninstall the Ceph-CSI-Operator, delete the operator:
For standard Kubernetes:
kubectl delete -f deploy/all-in-one/install.yamlFor OpenShift:
kubectl delete -f deploy/all-in-one/install-openshift.yamlVerify the deletion:
kubectl get pods -n ceph-csi-operator-system
No resources found in ceph-csi-operator-system namespace.