We're talking new releases & fast AI at Redis Released. Join us in your city.

Register now

Local Kubernetes Development Using Minikube and Redis Enterprise

January 05, 2018

Kubernetes is an open-source container orchestration system used to deploy, scale and manage containerized applications. Kubernetes is a project hosted by the Cloud Native Computing Foundation (CNCF). At a very high level, it contains two types of resources: a master node (which is the cluster coordinator) and nodes, which are the workers that run containerized applications.

Minikube is a tool used to run a Kubernetes cluster on a local machine. Minikube is a single-node Kubernetes cluster inside a VM on your laptop. Minikube can be used to try out Kubernetes and or develop with it day-to-day.

The Redis Enterprise offering extends Redis, the most popular database used with Docker containers. Redis Enterprise delivers high performance, low latency and high availability to organizations. This blog post will show you the basics steps needed to setup Minikube and run a 3-node Redis Enterprise cluster on your local laptop.

Installation

We are going to use the homebrew package manager to install minikube and kubernetes command line tool on your local laptop.

Starting Minikube

Minikube offers the ability to change the Virtual Machine (VM) driver. For this blog post, we used the vmwarefusion driver.

The output of the command should look like:

Minikube startup output

Minikube startup output

Verify Minikube installation

We will use the Kubernetes command-line tool, kubectl, to verify the Minikube installation. You can verify the Minikube install using:

The output should look like:

Redis Enterprise on Minikube

Installation

Minikube is now running on your laptop and kubectl cli was able to successfully query the master node to get the status of the cluster. We will now deploy the Redis Enterprise service in Minikube with three replica sets. The yaml configuration for the Redis Enterprise deployment and service can be found here.

We will use the yaml to create the deployment and service in the Kubernetes cluster.

We can verify that three pods were created by issuing the command

Output of kubectl get pods

Output: kubectl get pods -o wide

Prerequisite for Cluster Configuration

We need to change the binding of the CCS from local loopback address 127.0.0.1 to 0.0.0.0.

Configuration of Cluster

We need to setup the Redis Enterprise cluster as a master node by logging into the pod and issuing a `create cluster` command.

We will use the rladmin utility to create the new cluster:

We will use the rladmin utility to join the 2 nodes to cluster

and

Database creation on cluster

We will use the Rest API of Redis Enterprise to create a database on the master node:

We can look at the status of the cluster and database using the rladmin utility included in Redis Enterprise download:

rladmin cluster status

rladmin cluster status

  • You can read more about Redis Enterprise’s shard placement policy and proxy policy on our documentation page.
  • Redis Enterprise includes replication and persistence by default. You can read about persistence on our Redis Enterprise database documentation page.

Redis Enterprise Dashboard access

You can access the Redis Enterprise dashboard, which is running on port 8443, by setting up a secure tunnel between local port and the pod port. Once the tunnel is established, you can reach the Redis Enterprise dashboard at https://127.0.0.1:8443:

kubectl port-forward <my-pod-name> <localport>:<pod-port>

Example: kubectl port-forward redis5-58dc568c56-7qk22 8443:8443

Redis Enterprise Dashboard

Redis Enterprise Dashboard – Nodes

Redis Enterprise Dashboard - Database

Redis Enterprise Dashboard – Database

Local access to Redis Enterprise

You can connect to your database using the IP of the node and the port specified during database creation:

What’s next

We are working on a Kubernetes native Redis Enterprise container that will take advantage of the new primitives introduced in Kubernetes 1.8 and above. We are working on releasing a new version of the Redis Enterprise container image that will leverage both the new Persistent Sets and the Storage class primitives while providing a better cluster bootstrapping experience. In the meantime, learn more about the Redis Enterprise offering.