A Golang based redis operator that will make/oversee Redis standalone and cluster mode setup on top of the Kubernetes. It can create a redis cluster setup with best practices on Cloud as well as the Bare metal environment. Also, it provides an in-built monitoring capability using redis-exporter.
For documentation, please refer to https://ot-container-kit.github.io/redis-operator/
Architecture
Purpose
The purpose of creating this operator was to provide an easy and production grade setup of Redis on Kubernetes. It doesn't care if you have a plain on-prem Kubernetes or cloud-based.
Supported Features
Here the features which are supported by this operator:-
- Redis cluster and standalone mode setup
- Redis cluster failover and recovery
- Inbuilt monitoring with prometheus exporter
- Dynamic storage provisioning with pvc template
- Resources restrictions with k8s requests and limits
- Password/Password-less setup
- Node selector and affinity
- Priority class to manage setup priority
- SecurityContext to manipulate kernel parameters
Getting Started
If you want to deploy redis-operator from scratch to a local Minikube cluster, begin with the Getting started document. It will guide your through the setup step-by-step.
Example
The configuration of Redis setup should be described in Redis CRD. You will find all the examples manifests in example folder.
Prerequisites
Redis operator requires a Kubernetes cluster of version >=1.8.0
. If you have just started with Operators, its highly recommended to use latest version of Kubernetes.
Quickstart
The setup can be done by using helm. If you want to see more example, please go through the example folder.
But you can simply use the helm chart for installation.
# Add the helm chart
$ helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/
# Deploy the redis-operator
$ helm upgrade redis-operator ot-helm/redis-operator --install --namespace redis-operator
After deployment, verify the installation of operator
$ helm test redis-operator --namespace redis-operator
Creating redis cluster or standalone setup.
# Create redis cluster setup
$ helm upgrade redis-cluster ot-helm/redis-cluster \
--set redisCluster.clusterSize=3 --install \
--namespace redis-operator
# Create redis standalone setup
$ helm upgrade redis ot-helm/redis \
--install --namespace redis-operator
If you want to customize the value file by yourself while initializing the helm command, the values files for reference are present here
Monitoring with Prometheus
To monitor redis performance we will be using prometheus. In any case, extra prometheus configuration will not be required because we will be using the Prometheus service discover pattern. For that we already have set these annotations:-
annotations:
redis.opstreelabs.in: "true"
prometheus.io/scrape: "true"
prometheus.io/port: "9121"
Development
Please see our DEVELOPMENT.md for details.
Release History
Please see our CHANGELOG.md for details.
Documentation
Please see our GETTING_STARTED.md for details.