mrkeyoor.com_
Sat 05 Sept 18:33 UTC
Self-Hostedevaluationupdated 05 Sept 2026

rook review

Rook runs and manages Ceph storage inside Kubernetes. It turns Kubernetes resources into block volumes, shared file systems, and S3-compatible object stores, saving operators from deploying every Ceph service by hand.

trackingstars / 7d
Verdict

Our Rook run built in 221 seconds, but 3 of 103 tests failed in the Ceph integration package, so adoption should include a real cluster trial rather than end at compilation. Use Rook when a Kubernetes platform team needs Ceph's block, file, and object storage and is ready to own 3-node operations. Choose a narrower system if all you need is persistent block volumes or if nobody on call understands Ceph health and disk recovery.

We ran it

Lab card: what happened when we ran rookScreenshot of rook (rook.io)
Install✓ · 215s638 packages
Build✓ · 221s
Tests✗ · 159s100 passed · 3 failed of 103 (go test)
Repo1330 files~208,115 lines of source · 14.5 MB · 29 CI workflows · tests dir

Answers from our run

Does rook build from source?

Dependencies installed in 215 seconds (638 packages), and the build succeeded in 221 seconds. We cloned commit d364b1e into a clean Debian container with 3 CPUs and no project-specific setup.

Do rook's tests pass?

Not all of them: 100 of 103 passed and 3 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use rook?

Clusters outside Kubernetes v1.31 through v1.37, or nodes outside amd64 and arm64: those are the ranges in the current prerequisites.

What are the alternatives to rook?

Longhorn, OpenEBS, Ceph. Our Rook run built in 221 seconds, but 3 of 103 tests failed in the Ceph integration package, so adoption should include a real cluster trial rather than end at compilation.

Setup2/5Build passed, but 3 integration suites failed and a cluster is required
Docs5/5Prerequisites, upgrades, health checks, and destructive cleanup are explicit
Community5/513,637 stars with a September 2026 release and issue activity
Maturity4/5CNCF-graduated and stable, with active upgrade and cleanup concerns

Who it’s for

Kubernetes platform teams that need self-hosted block, shared-file, and object storage from one Ceph cluster.
Operators with at least 3 production nodes, suitable disks, and enough Ceph knowledge to investigate health warnings.
Organizations that want storage declared through Kubernetes resources and provisioned through CSI.
Infrastructure teams prepared to own version compatibility, monitoring, recovery, and disk retirement.

Who it’s NOT for

Clusters outside Kubernetes v1.31 through v1.37, or nodes outside amd64 and arm64: those are the ranges in the current prerequisites.
Small teams seeking production storage on one node: Rook's architecture guide requires 3 or more nodes for a resilient production platform.
Operators without raw unformatted devices, block-mode persistent volumes, udev, and the host access Ceph needs: the quickstart explicitly warns users to test in a VM so local disks are not consumed by mistake.
Teams wanting a direct upgrade from an older Rook series into v1.20: the current guide covers v1.19.x to v1.20.x, official releases only, and requires a separate CSI-driver migration.
Organizations that treat a completed cleanup Job as proof of disk erasure: open issue 18089 reproduces a sanitization failure that still exits 0.
Security policies that accept the encryption setting without a network check: issue 18319 reports a CRC connection to a monitor on Rook v1.19.10 despite encryption being enabled.

Setup reality

Our sandbox installed Rook in 215 seconds with 638 packages, and the build succeeded in 221 seconds. Tests failed after 159 seconds: 100 passed and 3 failed out of 103. The failing top-level suites were the Ceph object, smoke, and upgrade integration suites; the log tail did not state a cause.

Rook needs a Kubernetes cluster, cluster-level permissions, Ceph images, and either manifests or Helm configuration. A production bare-metal cluster requires at least 3 worker nodes plus raw unformatted devices or block-mode persistent volumes. Some layouts also need LVM on every storage node. No hosted API credential is part of the standard path.

Supported Kubernetes versions are v1.31 through v1.37 on amd64 or arm64. Storage nodes need udev, RBD-capable kernels for block storage, and suitable CephFS kernel support. Rook v1.20 also moves CSI drivers to a separate operator, while teardown reaches Kubernetes resources, host paths, and disks.

Rook manages 3 storage interfaces through Ceph

Rook 1.20 exposes 3 kinds of storage to Kubernetes applications: block volumes, shared file systems, and S3-compatible object stores. The operator turns custom resources into Ceph monitors, managers, storage daemons, metadata servers, gateways, pools, and buckets. CSI handles volume provisioning and mounts. Rook stays out of the data path, so application I/O goes through Ceph rather than through the operator. That is the right architecture for storage, but it also means Rook does not make Ceph's failure modes disappear.

Version 1.20 packages a broad control plane around Ceph rather than a single storage driver. A block claim can mount on one node, CephFS can supply shared access to several nodes, and the object gateway gives applications an S3 endpoint plus credentials in a Kubernetes Secret. Rook watches the declared state and replaces or adjusts Ceph services as the cluster changes. Advanced placement groups and CRUSH settings remain available through Ceph tools when the simplified resources are not enough.

Production bare metal starts at 3 worker nodes

Rook's production bare-metal example requires at least 3 worker nodes, while the test manifest is meant for environments such as Minikube. The supported Kubernetes range is v1.31 through v1.37, and released images target amd64 and arm64. The quickstart warns users to test inside a virtual machine because its storage discovery can consume local devices. That warning deserves attention: a storage operator works below the level where a mistaken device choice is easy to undo.

Each storage node needs a running udev daemon and eligible storage, such as a raw device, an unformatted partition, an unformatted logical volume, or a block-mode persistent volume. LVM must be installed for encrypted devices, metadata devices, or more than 1 OSD per device. RBD needs kernel support. CephFS recommends kernel 4.17 or newer so requested PVC sizes are enforced, while kernel 5.4 or newer unlocks extra RBD image features documented by the project.

What happened when we ran it

Our sandbox installed commit d364b1e in 215 seconds and added 638 packages. The build succeeded in 221 seconds. The test command ran for 159 seconds, then exited 1 with 100 passed and 3 failed out of 103. Those 3 failures make the result mixed: the Go code compiled, and most tests passed, but the complete command did not finish cleanly in our fresh Debian container with 3 CPUs and 8 GB of RAM.

Our harness recorded TestCephObjectSuite, TestCephSmokeSuite, and TestCephUpgradeSuite as the failing top-level cases in the integration package. The upgrade suite tail also printed labels for Ceph-to-Squid, Ceph-to-Tentacle, Helm, and Rook upgrade cases. It did not include an assertion message or environmental cause, so we will not supply one. The 14.5 MB checkout contained 1,330 files and about 208,115 source lines, with 29 CI workflows, a tests directory, and no Dockerfile.

Rook v1.20 makes CSI a separate admin-managed layer

Rook v1.20 stops deploying CSI drivers itself and hands that job to the Ceph CSI operator. The documented Helm order is now rook-ceph, then ceph-csi-drivers, then rook-ceph-cluster. Existing CSI settings need to move from the old ConfigMap or chart values into the new resources. The current upgrade guide supports v1.19.x to v1.20.x and official releases only. It also warns that storage can be briefly unavailable and that an upgrade can damage cluster health or cause data loss.

Ceph versions have their own compatibility line. Rook 1.20 supports Squid v19.2.0 or newer and Tentacle v20.2.1 or newer. The docs advise against Tentacle v20.2.0 because read affinity can trigger a known data-corruption problem. Rook performs rolling daemon updates and stops when Ceph reports HEALTH_ERR, but the operator cannot replace pre-upgrade health checks and an observed maintenance window. A Rook upgrade and a Ceph upgrade are separate changes even when Helm starts both.

Teardown has 3 places to clear and one unreliable success signal

Across a 3-node production cluster, the cleanup guide identifies 3 surfaces that must be cleared: Kubernetes resources, files under dataDirHostPath on every node, and devices used by OSDs. Applications and their claims should go first, or volumes can hang and nodes may need a restart. Deleting the CephCluster after setting the confirmation string permanently removes data. If automated cleanup cannot finish, the manual instructions reach host directories, partition tables, LVM metadata, and finalizers. Teardown needs the same change control as infrastructure retirement.

Open issue 18089 shows why cleanup needs independent verification. Its reproduction deliberately blocked device access, causing the sanitization commands to fail, yet the Job completed with exit code 0. The report traces errors that are logged without reaching the process status. It does not claim that a live decommission left readable data, and neither do we. It does show that a green Job status alone cannot prove erasure. Check the logs and inspect each device before reassigning or disposing of it.

Version 1.20.7 is active, while encryption still needs a wire check

Rook v1.20.7 was released on September 2, 2026, and GitHub recorded a repository push on September 3. A new issue arrived September 4, so both code and issue activity are current. The repository had 13,637 stars and 132 combined open issues and pull requests when fetched on September 5. The patch release includes Ceph operator fixes, CSI 3.17.1, security-related changes, and upgrade documentation. The combined open count is an activity signal, not a count of confirmed defects.

Issue 18319 reports that a Rook v1.19.10 cluster accepted an unencrypted CRC connection to a Ceph monitor even with network encryption and messenger v2 required. The report is specific to that environment and does not establish the behavior of every v1.20.7 cluster. It is still a good acceptance test for deployments where encryption is mandatory. Teams that can run these checks have a workable Ceph operator. Teams trying to avoid storage engineering should choose a narrower system.

Alternatives

ProjectWhat it isPick it when
LonghornA Kubernetes-native distributed block-storage system with its own management UI.pick this instead when persistent block volumes are the main job and Ceph's file and object services would add unused machinery.
OpenEBSA Kubernetes storage project with several data engines and deployment choices.pick this instead when you want to choose among Kubernetes storage engines rather than standardize on Ceph.
CephThe distributed block, file, and object storage system that Rook operates.pick this instead when Ceph must run outside Kubernetes or you want to manage its services directly.

What people are saying

  1. [github-trending] rook/rook

Sources

  1. Rook quickstart
  2. Rook prerequisites
  3. Rook v1.20 upgrade guide
  4. Rook Ceph upgrade guide
  5. Rook cleanup guide
  6. Rook v1.20.7 release
  7. Disk sanitization success-reporting issue
  8. Monitor encryption report

More self-hosted reviews

go2rtc · openfga · matomo · signoz · SmartTube · copyparty · the whole board →