Nirmata Integrations: Persistent Storage with Rook
According to recent bi-annual CNCF Survey, Production usage of CNCF projects has grown more than 200% on average since December 2017, and evaluation has jumped 372%. About 40% of respondents from enterprise companies (5000+) are running Kubernetes in production. Obviously, Kubernetes orchestrated containers are delivering on the promise of business agility, scalability, and portability.
That said, orchestrating containers through Kubernetes requires integrations for storage, networking, security, CI/CD, monitoring etc. to deliver an Enterprise-grade solution. While containers were designed for stateless applications and they are created and deleted as needed, this creates a challenge with managing data that needs to persist beyond the life of a container. Most of the corporate data fall in this category and requires a persistent storage solution.
And when you layer on the Enterprise-grade storage requirements for high availability, performance, replication, backup, snapshots, different storage types, databases, monitoring etc., the need for a container native storage management solution becomes apparent.
Rook is a CNCF open-source project built to deliver storage solution for Kubernetes leveraging battle-tested open-source storage technologies including Ceph, which has years of production deployments and runs some of the world’s largest clusters. Rook is available under Apache 2.0 license. While only 17% of respondents in CNCF Survey had Rook with production deployment, 83% are evaluating Rook as a storage solution.
Rook uses the operator pattern to make storage resources a first-class citizen in Kubernetes, meaning that they can be managed natively just like any other built-in Kubernetes resource. The heavy lifting necessary to provide this experience can now be easily adapted from Rook’s framework.
With Rook, you can either build dedicated storage clusters or hyper-converged clusters where your apps run alongside storage. Rook integrates Ceph with multiple storage presentations including object storage (compatible with S3 and swift), block storage, and POSIX-compliant shared file system.
Rook efficiently distributes and replicates your data across your cluster to minimize the risk of data loss. With snapshots, cloning and versioning, you can adopt Kubernetes without losing sleep over your data persistence.
The Rook operator is a container that provisions and monitors the storage cluster through custom resource definitions (CRD’s) for pools, object store, and file systems by initializing the pods and components to run the services. Rook also creates rook agent on every node that is responsible for creating volume plugins that interact with Kubernetes volume management framework that takes care of volume management and formatting.
Nirmata simplifies the integration with Rook in 4 easy steps –
- Nirmata creates custom resource definitions that can easily be applied to an existing cluster.
- Nirmata offers an environment construct for rook-ceph to easily create cluster roles and bindings.
- Nirmata provides storage class definitions that can be easily built into cluster policy.
- Nirmata allows for replication requirements within the environment namespace and you can create validated application YAMLs to dynamically provision persistent storage for the block, object or filesystem storage.
Here is detailed documentation to create and validate replicated persistent storage with Rook for a sample MySQL application through Nirmata.
What are your key considerations for multi-cloud workload management for Kubernetes?
As always, your comments and feedback are highly appreciated.