Rook: storage orchestration for Kubernetes

Rook logo

Storage in Kubernetes is hard, one of the missing piece in the ecosystem. Although CSI is slowly gaining traction, the problem is still there and many people prefer to delegate to cloud giants such as GCE and Azure. Rook labels itself as “Open-Source, Cloud-Native Storage for Kubernetes”, “Production ready File, Block and Object Storage”. Caught your interest? Let’s take a look.

Discover Rook: storage for Kubernetes

Rook turns distributed storage systems into self-managing, self-scaling, self-healing storage services. It automates the tasks of a storage administrator: deployment, bootstrapping, configuration, provisioning, scaling, upgrading, migration, disaster recovery, monitoring, and resource management.

Rook uses the power of the Kubernetes platform to deliver its services: cloud-native container management, scheduling, and orchestration.

Rook was initially born as a solution to containerize and manage Ceph on a Kubernetes cluster. Up until version 1.0 Ceph was the only available storage providers supported by Rook. Then the CNCF acquired the project and Rook started supporting other storage providers. Under CNCF it is now an Incubating project.

In a nutshell Rook enables you to easily provision, deploy and scale a complex storage solution like Ceph within your Kubernetes cluster. This enables you to provision PV, PVC and StorageClasses leveraging Ceph well-known resiliency, self-healing and clustering capabilities.

Know how you can simply request storage

Rook and “The new providers”

As of the time of writing this article Rook lists the following providers:

  • Ceph
  • EdgeFS
  • Minio
  • CockroachDB
  • Cassandra
  • NFS

Of all the providers only the first is considered stable whilst only the second is considered beta quality. Everything else is alpha quality. In the future we can expect that every provider will reach acceptable quality.

EdgeFS: a filesytem for the cloud

EdgeFS is high-performance and low-latency object storage system released under Apache License v2.0 developed in C/Go. It provides Kubernetes integrated Multi-Head Scale-Out NFS (POSIX compliant, Distributed RW access to files), Amazon S3 compatible API, iSCSI or NBD block interfaces, advanced global versioning with file-level granularity unlimited snapshots, global data deduplication and Geo-transparent access to data from on-prem, private/public clouds or small footprint edge (IoT) devices.

Rook started as a Ceph “installer” and manager, but Ceph itself is quite a complex system thought to reach petabyte-scale and survive common disasters. Although Ceph makes a great storage solution per se, Kubernetes may need something more.

EdgeFS can operate over geographically distributed sites at low latency with an optimized data path written in Go/C. EdgeFS supports the usual NFS, S3-API and even NBD interfaces, so it can be used as a drop-in replacement where these interface are already in use. For more information about how ti works, you can visit the official site.

TL;DR spin up a Ceph cluster with Rook!

Download the example files, then do:

kubectl create -f common.yaml
kubectl create -f operator.yaml
kubectl create -f cluster-test.yaml

Review these yaml manifests in order to tweak your Ceph cluster.

Image courtesy of mark | marksei

You may also like...

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.