Skip to main content
Version: 1.18.0

Install RookFS

RookFS brings persistent storage to your EGS Kubernetes cluster, powered by Rook/Ceph. After RookFS is installed, your cluster gets two storage options your workloads can use that are described in the following table.

Storage ClassBest for
rook-ceph-blockDatabases and single-pod applications
rook-cephfsAI/ML models, shared datasets, or any workload where multiple pods need to read/write the same volume
note

Installing RookFS is optional on your cluster and solely depends on your storage requirements.

Prerequisites

Before you begin, make sure you have:

  • kubectl installed and able to reach your cluster
  • helm installed (required for production installs)
  • Your cluster's kubeconfig file

Step 1: Choose Your Storage Nodes

Decide which nodes in your cluster will host storage. These nodes can still run other workloads alongside storage. They are not dedicated unless you dedicate them to storage.

To select nodes to host storage, use the following commands:

kubectl label node <node1> node-role.rookfs/storage=true
kubectl label node <node2> node-role.rookfs/storage=true
kubectl label node <node3> node-role.rookfs/storage=true
info

For production, we recommend 3 or more storage nodes for full data redundancy.

Step 2: Run the Installer Script

Download the install-rookfs.sh from the egs-installation repository.

Use the following command to install Rook FS in production environments:

./install-rookfs.sh \
--mode prod \
--osd-mode pvc \
--block-sc <your-cloud-storageclass> \
--storage-nodes "node1,node2,node3" \
--label-nodes \
--osd-size 200Gi \
--enable-monitoring \
--enable-snapshots \
--kubeconfig my-cluster.yaml

Use the following command to install RookFS in test/UAT environments:

./install-rookfs.sh \
--osd-mode pvc \
--block-sc <your-cloud-storageclass> \
--storage-node-label node-role.rookfs/storage=true \
--kubeconfig my-cluster.yaml

If your storage nodes are reserved for GPU workloads (through EGS node reservation), add --toleration-key kubeslice.io/egs --toleration-value dedicated-node so storage services can still run there.

Step 3: Validate the Installation

Validate the RookFS installation using the following commands:

kubectl get storageclass | grep rook
kubectl -n rook-ceph exec deploy/rook-ceph-tools -- ceph status

A healthy production cluster shows HEALTH_OK with all OSDs up.

Use Your New Storage

After RookFS is installed, request storage in any pod or deployment just like you would with any Kubernetes StorageClass as follows:

storageClassName: rook-ceph-block   # or rook-cephfs for shared access

Plan Your Storage Size

Production storage uses replication for data protection, so usable space is less than raw disk capacity. As a rule of thumb, use this formula:

Usable space ≈ (number of storage nodes x disk size per node) ÷ 3 x 0.8

Example: 3 nodes x 200Gi each ≈ 160Gi usable in production.

Backup and Restore Snapshots

Production installs support point-in-time snapshots of your data, so you can back up and restore volumes as needed.

Troubleshoot

Contact the EGS support team if you run into installation issues. Our team can help troubleshoot cluster-specific configurations.