The Rook project, as well as its thriving community, has continued to grow and evolve since the initial public release in November 2016. As the code base has matured through a series of minor releases, starting with the humble beginnings of v0.1 and reaching v0.9 late last year, we are incredibly pleased to finally announce the first major release of Rook, version 1.0!

We will dive into some of the exciting new features included in this release, but let’s start with a community stats update first. In somewhat serendipitous timing, the project has just now surpassed over 5,000 stars on GitHub. That’s a delicious cherry on top of the v1.0 release in our opinion.

Let’s take a quick look at the growth of the Rook community since it was accepted into the CNCF Incubator in late September of last year:

2 releases (v0.9 and v1.0)

16.3M to 39.4M+ container downloads

900+ new commits

3,450 to 5,000+ GitHub stars

90 to 150+ Contributors

1,950 to 3,050+ Twitter followers

900 to 1,610+ Slack members

Those numbers clearly show a ton of hard work from the developers and a lot of new interest and excitement from the users. We are really proud of the entire community!

Alongside with this v1.0 release, we felt that the rook.io website was starting to show its age and needed an update to capture all the amazing progress that the project has seen. Head on over to rook.io and let us know what you think of the new experience, artwork, user guides, and documentation layout!

Ceph

Similar to previous releases of Rook, the Ceph operator has seen a ton of contributions and advancements. For starters, the quick-start basic use case has been simplified even further to streamline the user experience. You may have thought it was already easy to get started using Ceph storage with Rook, but it’s even easier now than it was before.

Ceph Nautilus

The latest major version of Ceph is now supported by the Rook operator. This means that all the latest features, functionality, and stability available in Ceph Nautilus are also available in Rook. This new support is in addition to the previous versions of Ceph that Rook still supports, Luminous and Mimic. The choice of which particular Ceph version you want to run in your cluster is up to you, as explained in detail in a previous blog post.

One key impact of this new support is that the messenger v2 protocol is also now supported, which focuses on some great security enhancements such as encrypting all data traffic over the wire within the cluster.

Automation and Upgrades

Some long awaited additions to the scenarios that Rook supports in a completely automated fashion are now available, removing difficult and error-prone manual scenarios from the hands of the user. As new nodes and devices are added to your cluster, Rook will automatically detect them and include them in the Ceph cluster if needed, as well as rebalance the data around the newly expanded cluster.

The Ceph upgrade procedure has become completely automated as well. When the user updates the cluster configuration to specify a new version of Ceph, the operator will automatically notice this and perform the necessary steps to roll out the new version to all the various Ceph components in a staggered fashion. The operator will pay careful attention to the health and performance of the cluster during this rolling upgrade operation to ensure minimal disruptions.

CSI

Last but not least, the Ceph CSI driver is now available for testing. The Container Storage Interface support in Kubernetes is a drastic improvement in both functionality and reliability over the previous FlexVolume that Rook originally implemented. While Rook is responsible for deploying, configuring and managing the underlying Ceph storage fabric, the CSI driver is responsible for on-demand provisioning of storage volumes for consumers of the cluster (e.g. pods). As the CSI driver continues to mature, the two will continue to work hand in hand to manage the full life-cycle of the cluster and consumption of its storage. Full integration of the CSI driver is expected in the next release. For now consider it experimental.

EdgeFS

The EdgeFS contributors have also been very hard at work and have made a lot of advancements within the Rook project in this v1.0 release. The biggest announcement is that EdgeFS support is now in Beta! This is a great step towards declaring EdgeFS stable and ready for production and is certainly no small feat. To upgrade from the existing Alpha support, we have provided an upgrade guide that will walk you through the process. As EdgeFS moves to stable, this upgrade progress will become more automated, similar to what we have seen with Ceph.

New Storage Protocols

EdgeFS adds to its existing set of file, block, and object storage a few new supported storage protocols. Object storage has been broadened by adding new support for OpenStack Swift to complement the existing S3 support. Additionally, a new iSCSI block storage CSI driver has been included in the release. These new additions further cement EdgeFS a versatile storage solution, as there are multiple options and protocols for how you can read and write to the underlying storage fabric.

Management Experience

The management experience has been significantly improved in this release. There is a new management GUI that will walk you through steps to create and provision EdgeFS storage with simple to follow “wizard” flows that will collect simple information and generate the corresponding EdgeFS CRDs underneath. Of course, you can work directly in YAML to create these resources, but the more friendly wizard option is now available.

Prometheus support and integration has been included as well, which allows key monitoring, metrics, and insight into the EdgeFS storage system. You’ll be able to use the Prometheus operator to set up collectors/exporters that will gather data about EdgeFS and also launch a Grafana dashboard to get insightful visualizations on the collected data.

Finally, it is now possible to specify failure domains that will help EdgeFS understand the geographic layout of your data and make informed decisions about where replicas need to be balanced in the cluster to make your data as durable and available as possible.

Performance

A performance focus was taken during this release as well that has streamlined and optimized the EdgeFS components. It’s now possible to run in an “embedded mode” that enables very low resources deployments in constrained or edge environments. In this mode, it’s possible to run with only 1GB of memory and 2 CPU cores.

NFS

Until this release, the NFS operator had previously only supported static provisioning of volumes for your applications, so it is a great addition to the usability of Rook’s NFS operator that dynamic provisioning is now supported. Starting with v1.0, when your pod requests a NFS file system, Rook will on demand provision and prepare it without any manual intervention. This makes consuming NFS storage much more streamlined and removes some points of friction that were prone to error.

Minio

The Rook Minio operator saw a few updates during this release as well. The operator’s reconciliation loop was made more responsive, so that when updates are made to the Minio CRD, the operator will automatically and immediately update the cluster to reflect those changes. This extends the operator’s responsibilities to a more full management of the Minio object storage.

“Readiness” and “Liveness” probes were also incorporated into the Minio cluster so that health checks and deployment rollouts have more data to make informed choices about automated cluster management decisions.

Beyond v1.0

We are very grateful for all the efforts from the entire Rook community, not just to get this major v1.0 release out, but for the entire experience over the past couple years to get to where we are today. A very sincere thank you to everyone.

There are already many exciting features in the works for future milestones beyond v1.0. You can read more about them on the full roadmap. Besides continuing to progress and mature the various storage providers supported by Rook, we also want to invest further in the Rook framework, as well as explore dynamic provisioning of new resource types by integrating with Crossplane, the open-source multi-cloud control plane founded by Upbound, the founding maintainers of Rook.

Looking ahead, we are very excited to be heading to Barcelona in May for the next Kubecon Europe! We were fortunate enough to have a few talks accepted, so we encourage you to come out and meet us. We’ll also have a booth in the exhibition hall, so there will be plenty of opportunities to meet new and old friends alike. All the Rook related talks can be found on this schedule search results page.

There are many different ways to continue getting involved in the Rook project, both from the user side and the developer side. Please join us in helping the project continue to grow on its way beyond the v1.0 major milestone to what we hope to be the next big achievement as a CNCF hosted project: full graduation!

Rook on!