Containerized applications help enterprises modernize legacy software and implement new, cloud-native architectures. Kubernetes is the de facto standard platform for container scheduling and orchestration. Its emerging ubiquity and the abundance of distribution options—on-premises and in the cloud, as a self-managed or fully managed service (KaaS), and automatic scalability—are among the many advantages of adopting Kubernetes. Also, Kubernetes plays a significant role in facilitating the transition of applications from on-premises to the cloud by facilitating workload portability and supporting hybrid-cloud deployments. It does this in a fully automated manner, using consistent, well-defined principles.
Redis is the #1 database technology running one of the most popular databases on containers, with over two billion Dockerhub launches (5,000,000+/day). With Kubernetes production adoption reaching 78%, many developers and operators are now running Redis on Kubernetes and using Kubernetes to manage their Redis deployments.
The Redis Enterprise cluster is a group of nodes with a shared nothing/symmetrical architecture. “Share nothing” means that the various Redis shards (Redis instances) that run inside a node have no awareness of each other and are isolated to prevent them from affecting one another.
For an operator, that means you can efficiently run multiple database instances on the same cluster, serving various applications and use-cases. This allows Redis Labs runs hundreds of customer databases on a handful of Redis Enterprise clusters in our Redis Cloud Essentials Database-as-a-Service (DBaaS) product.
“Symmetrical” refers to the fact that the Redis Enterprise cluster nodes all know the same things: They each have all the required information to take over the cluster roles, which means the cluster can survive nodes going down or being replaced. More importantly, it can scale linearly simply by adding more nodes.
The Redis Enterprise cluster provides a management API, graphical UI, and a proxy that, among other things, offers a single end-point for applications, making database sharding transparent to developers and applications. It also takes care of data replication, shard placement in the cluster, and shard failover.
Kubernetes provides primitives that work well as the Redis Enterprise cluster infrastructure:
There are two systems at play when running Redis Enterprise cluster on Kubernetes: One is a Redis instance, or shard, orchestration system, which is the Redis Enterprise cluster. The other is the Kubernetes container orchestration and infrastructure abstraction system. The Redis Enterprise Kubernetes Operator ensures these two systems work together in harmony. The Redis Enterprise cluster custom resource aggregates the Kubernetes elements: StatefulSet, Services, Secrets, Roles, and others.
The Redis Enterprise Kubernetes Operator manages the cluster custom resource by automating the deployments and configuration of the Kubernetes primitives, scaling, upgrades, and recoveries of Redis Enterprise cluster elements—things that a human admin would do are delegated to the Redis Enterprise Operator. Many admin tasks can be delegated to the Operator, from reconciling the state of the Redis Enterprise cluster custom resource, through repointing a database service when its master shards move and up to automatically recovering a cluster from quorum loss.
At Redis Labs, we have extensive experience running Redis-as-a-Service over the last several years including:
That experience was poured into the Enterprise Operator so that you, the human operator, won’t have to develop that expertise of running an Enterprise Cluster.