CSI - Get Rook Up and Running in 5 minutes

Storage is a crucial aspect for running applications, a great way to deploy storage with your clusters is to use Rook.

To make it quick and easy we have a curated, verified and test repository of called Kool Kubernetes that is hosting a step by step rook deployment. It takes 5 minutes in total!

Below are the steps from the repository to get you going, see the full guide here.

CSI with ROOK and ceph on Platform9 Managed Kubernetes Freedom Plan

Rook turns distributed storage systems into self-managing, self-scaling, self-healing storage services. It automates the tasks such as deployment, configuration, scaling, upgrading, monitoring, resource management etc. for the distributed storage like ceph on top of kubernetes. It supports multiple storage providers Ceph, EdgeFS, CockroachDB etc. ceph being the favourite one.


  1. platform9 freedom tier with three worker nodes and one Master node
  2. Each worker node should have at least three free disks attached to it
  3. Metallb loadbalancer configured on bare metal cluster

Deploying the rook, ceph on kubernetes:

Clone the Kool Kubernetes repository on any machine from where the kubectl can deploy json manifests to your kubernetes cluster.

$ git clone https://github.com/KoolKubernetes/csi.git

Deploy first yaml.

$ kubectl apply -f rook/internal-ceph/1-common.yaml

Deploy the second yaml for rook operator

$ kubectl apply -f rook/internal-ceph/2-operator.yaml
configmap/rook-ceph-operator-config created
deployment.apps/rook-ceph-operator created

Verify the rook pods are running before proceeding with next deployment yaml.

$ k get all -n rook-ceph
NAME                                      READY   STATUS    RESTARTS   AGE
pod/rook-ceph-operator-848b8bc676-bdhc6   1/1     Running   0          64m
pod/rook-discover-7w89l                   1/1     Running   0          64m
pod/rook-discover-cm5vm                   1/1     Running   0          64m
pod/rook-discover-lddn2                   1/1     Running   0          64m

daemonset.apps/rook-discover   3         3         3       3            3           <none>          64m

NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/rook-ceph-operator   1/1     1            1           64m

NAME                                            DESIRED   CURRENT   READY   AGE
replicaset.apps/rook-ceph-operator-848b8bc676   1         1         1       64m

Deploy third yaml to create the ceph cluster.

$ kubectl apply -f rook/internal-ceph/3-cluster.yaml
cephcluster.ceph.rook.io/rook-ceph created

Verify all ceph pods are running. The rook-ceph-osd-prepare pods will be in completed status.

$ kubectl get po -n rook-ceph

To deploy the Rook Dashboard and more see the full guide on Kool Kubernetes.