Skip to content

Rook

A Kubernetes operator that turns the Ceph storage system into a set of custom resources, so block, file, and object storage are declared and reconciled like any other Kubernetes object.

  • Category: Storage & Database
  • CNCF maturity: Graduated
  • Language: Go
  • License: Apache-2.0
  • Repository: rook/rook
  • Documented at commit: 63eed4e (2026-06-19, master)

What it is

Rook is an operator for running Ceph on Kubernetes. It does not implement a storage engine of its own. Instead it packages Ceph, an established distributed storage system, and drives it through Custom Resource Definitions so that an administrator declares the desired cluster in YAML and Rook reconciles the running Ceph daemons toward that state.

The whole project ships as a single Go binary named rook whose ceph operator subcommand runs the operator, while other subcommands act as in-pod helpers (cmd/rook/main.go:27). The operator registers one controller per storage concept (pools, filesystems, object stores, and more) and translates each custom resource into Ceph monitors, managers, OSDs, and the CSI driver that carries the actual data path.

It sits at the storage layer of a cluster. An application requests a PersistentVolumeClaim, the Ceph CSI driver provisions it from a pool that Rook configured, and Rook keeps the underlying mon/mgr/OSD topology healthy as nodes and disks come and go.

When to use it

  • You need block, file, and S3-compatible object storage from a single system, all provisioned inside Kubernetes.
  • You want to run Ceph but do not want to manage its daemons, keyrings, and upgrades by hand.
  • You run stateful workloads on-premises or across cloud nodes where managed storage is unavailable.
  • Avoid it when one volume type is enough and operational simplicity matters more; a lighter project such as Longhorn carries far less learning cost than Ceph's CRUSH maps and placement groups.
  • Avoid it on tiny clusters where Ceph's CPU and memory overhead outweighs the benefit.

In this deep-dive

  • History: origin at Upbound, the move to CNCF, and the narrowing to Ceph.
  • Architecture: the operator, its controllers, and how a CephCluster is reconciled.
  • Adoption & Ecosystem: cited adopters, signals, and alternatives.
  • Internals: the CephCluster reconcile path, read from source.
  • Getting Started: install the operator and create a first cluster.

Sources

  1. rook/rook GitHub repository
  2. Rook Ceph Documentation (Getting Started)
  3. CNCF to host the Rook project
  4. CNCF Announces Rook Graduation
  5. Rook Expands Support, Ceph Moves to Stable (Upbound)
  6. Rook.io homepage
  7. Longhorn vs OpenEBS vs Rook-Ceph 2025 (onidel)
  8. Kubernetes Storage Showdown 2025 (darumatic)
  9. ADOPTERS.md (rook/rook)
  10. OWNERS.md / GOVERNANCE.md (rook/rook)