Redis Enterprise for Kubernetes and cluster can be installed via CLI tools OpenShift
| Redis Enterprise for Kubernetes |
|---|
Use these steps to set up a Redis Enterprise Software cluster with OpenShift.
To see which version of Redis Enterprise for Kubernetes supports your OpenShift version, see Supported Kubernetes distributions.
Create a new project.
oc new-project <your-project-name>
Verify the newly created project.
oc project <your-project-name>
Get the deployment files.
git clone https://github.com/RedisLabs/redis-enterprise-k8s-docs
Deploy the OpenShift operator bundle.
If you are using version 6.2.18-41 or earlier, you must apply the security context constraint before the operator bundle.
oc apply -f openshift.bundle.yaml
openshift.bundle.yaml file can cause unexpected results.Verify that your redis-enterprise-operator deployment is running.
oc get deployment
A typical response looks like this:
NAME READY UP-TO-DATE AVAILABLE AGE
redis-enterprise-operator 1/1 1 1 0m36s
Versions 7.22.0-6 and later run in without permissions to allow automatic resource adjustment. If you use the recommended default security constraints, remove the existing redis-enterprise-scc-v2 SCC and unbind it from the REC service account after upgrading.
Apply the RedisEnterpriseCluster resource file (rec_rhel.yaml).
You can rename the file to <your_cluster_name>.yaml, but it is not required. Examples below use <rec_rhel>.yaml. Options for Redis Enterprise clusters has more info about the Redis Enterprise cluster (REC) custom resource, or see the Redis Enterprise cluster API for a full list of options.
The REC name cannot be changed after cluster creation.
Apply the custom resource file to create your Redis Enterprise cluster.
oc apply -f <rec_rhel>.yaml
The operator typically creates the REC within a few minutes.
Check the cluster status.
oc get pod
You should receive a response similar to the following:
NAME | READY | STATUS | RESTARTS | AGE |
| -------------------------------- | ----- | ------- | -------- | --- |
| rec-name-0 | 2/2 | Running | 0 | 1m |
| rec-name-1 | 2/2 | Running | 0 | 1m |
| rec-name-2 | 2/2 | Running | 0 | 1m |
| rec-name-controller-x-x | 1/1 | Running | 0 | 1m |
| Redis-enterprise-operator-x-x | 1/1 | Running | 0 | 5m |
Verify the admission-tls secret exists.
kubectl get secret admission-tls
The output should look similar to
NAME TYPE DATA AGE
admission-tls Opaque 2 2m43s
Save the certificate to a local environment variable.
CERT=`kubectl get secret admission-tls -o jsonpath='{.data.cert}'`
Create a Kubernetes validating webhook, replacing <namespace> with the namespace where the REC was installed.
The webhook.yaml template can be found in redis-enterprise-k8s-docs/admission
sed 's/OPERATOR_NAMESPACE/<namespace>/g' webhook.yaml | kubectl create -f -
Create a patch file for the Kubernetes validating webhook.
cat > modified-webhook.yaml <<EOF
webhooks:
- name: redisenterprise.admission.redislabs
clientConfig:
caBundle: $CERT
EOF
Patch the webhook with the certificate.
kubectl patch ValidatingWebhookConfiguration \
redis-enterprise-admission --patch "$(cat modified-webhook.yaml)"
If not limited, the webhook intercepts requests from all namespaces. If you have several REC objects in your Kubernetes cluster, limit the webhook to the relevant namespaces. If you aren't using multiple namespaces, skip this step.
Verify your namespace is labeled and the label is unique to this namespace, as shown in the next example.
apiVersion: v1
kind: Namespace
metadata:
labels:
namespace-name: staging
name: staging
Patch the webhook spec with the namespaceSelector field.
cat > modified-webhook.yaml <<EOF
webhooks:
- name: redisenterprise.admission.redislabs
namespaceSelector:
matchLabels:
namespace-name: staging
EOF
Apply the patch.
oc patch ValidatingWebhookConfiguration \
redis-enterprise-admission --patch "$(cat modified-webhook.yaml)"
For releases before 6.4.2-4, use this command instead:
oc patch ValidatingWebhookConfiguration \
redb-admission --patch "$(cat modified-webhook.yaml)"
The 6.4.2-4 release introduces a new ValidatingWebhookConfiguration to replace redb-admission. See the 6.4.2-4 release notes.
Apply an invalid resource as shown below to force the admission controller to reject it. If it applies successfully, the admission controller is not installed correctly.
oc apply -f - << EOF
apiVersion: app.redislabs.com/v1alpha1
kind: RedisEnterpriseDatabase
metadata:
name: redis-enterprise-database
spec:
evictionPolicy: illegal
EOF
You should see this error from the admission controller webhook redisenterprise.admission.redislabs.
Error from server: error when creating "STDIN": admission webhook "redisenterprise.admission.redislabs" denied the request: eviction_policy: u'illegal' is not one of [u'volatile-lru', u'volatile-ttl', u'volatile-random', u'allkeys-lru', u'allkeys-random', u'noeviction', u'volatile-lfu', u'allkeys-lfu']
The operator uses the instructions in the Redis Enterprise database (REDB) custom resources to manage databases on the Redis Enterprise cluster.
Create a RedisEnterpriseDatabase custom resource.
This example creates a test database. For production databases, see create a database and RedisEnterpriseDatabase API reference.
cat << EOF > /tmp/redis-enterprise-database.yml
apiVersion: app.redislabs.com/v1alpha1
kind: RedisEnterpriseDatabase
metadata:
name: redis-enterprise-database
spec:
memorySize: 100MB
EOF
Apply the newly created REDB resource.
oc apply -f /tmp/redis-enterprise-database.yml