Rook — Cloud-Native Storage Orchestrator for Kubernetes
Rook turns Ceph into a first-class Kubernetes citizen by deploying, configuring, and healing distributed block, file, and object storage through an operator and a family of CRDs.
What it is
Rook is a CNCF-graduated storage orchestrator for Kubernetes. It deploys and manages Ceph -- a distributed storage system -- as native Kubernetes resources. Through a Kubernetes operator and custom resource definitions (CRDs), Rook handles provisioning, scaling, healing, and upgrading of storage clusters.
Rook targets platform teams that need persistent storage in Kubernetes without managing Ceph infrastructure manually. It provides block storage (RBD), shared filesystems (CephFS), and S3-compatible object storage (RGW).
How it saves time or tokens
Managing Ceph manually requires deep expertise in distributed storage, monitor quorums, OSD placement, and failure recovery. Rook encodes this expertise in a Kubernetes operator that handles the operational complexity. A CephCluster custom resource replaces pages of manual configuration.
Rook also handles automatic recovery: when an OSD fails, the operator detects it and rebuilds the data on healthy nodes.
How to use
- Deploy the Rook operator:
git clone --single-branch --branch release-1.14 https://github.com/rook/rook.git
cd rook/deploy/examples
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
- Create a Ceph cluster:
# cluster.yaml
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: rook-ceph
namespace: rook-ceph
spec:
dataDirHostPath: /var/lib/rook
mon:
count: 3
storage:
useAllNodes: true
useAllDevices: true
kubectl create -f cluster.yaml
- Create a StorageClass for dynamic provisioning:
kubectl create -f csi/rbd/storageclass.yaml
Example
# PersistentVolumeClaim using Rook-managed Ceph
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-data
spec:
accessModes: [ReadWriteOnce]
storageClassName: rook-ceph-block
resources:
requests:
storage: 10Gi
---
# Pod using the PVC
apiVersion: v1
kind: Pod
metadata:
name: app
spec:
containers:
- name: app
image: myapp:latest
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: app-data
Related on TokRepo
- AI Tools for DevOps -- Kubernetes and infrastructure management tools
- AI Tools for Self-Hosted -- Self-hosted infrastructure components
Common pitfalls
- Rook requires raw block devices or empty partitions on Kubernetes nodes. Using devices that already have filesystems causes deployment failures.
- Minimum 3 nodes with storage devices for a production Ceph cluster. Single-node deployments work for testing but have no redundancy.
- Ceph is resource-intensive. Each OSD daemon needs 2-4GB RAM. Plan node resources accordingly.
Frequently Asked Questions
Rook is the Kubernetes operator. Ceph is the underlying distributed storage system. Rook automates Ceph's lifecycle (deploy, scale, upgrade, heal) on Kubernetes. You interact with Rook CRDs; Rook manages Ceph.
Rook historically supported multiple storage backends, but the project now focuses exclusively on Ceph. NFS support is available through CephNFS resources.
Yes. Rook deploys Ceph's RADOS Gateway (RGW) for S3-compatible object storage. Create a CephObjectStore resource and Rook provisions the gateway endpoints.
Yes. Rook is a CNCF-graduated project used in production by many organizations. The operator handles rolling upgrades, automatic OSD recovery, and cluster scaling.
Longhorn is simpler and lighter, suitable for small clusters. Rook/Ceph is more feature-rich (block, file, object storage) and handles larger scale deployments. Choose Longhorn for simplicity, Rook for full-featured distributed storage.
Citations (3)
- Rook GitHub Repository— Rook is a CNCF-graduated storage orchestrator for Kubernetes
- Rook Documentation— Deploys and manages Ceph through Kubernetes operator and CRDs
- Rook Ceph Documentation— Supports block, file, and object storage via Ceph
Related on TokRepo
Discussion
Related Assets
Conda — Cross-Platform Package and Environment Manager
Install, update, and manage packages and isolated environments for Python, R, C/C++, and hundreds of other languages from a single tool.
Sphinx — Python Documentation Generator
Generate professional documentation from reStructuredText and Markdown with cross-references, API autodoc, and multiple output formats.
Neutralinojs — Lightweight Cross-Platform Desktop Apps
Build desktop applications with HTML, CSS, and JavaScript using a tiny native runtime instead of bundling Chromium.