Prepare participating clusters
Prepare your participating RECs to be part of an Active-Active database deployment.
Prepare participating clusters
Before you prepare your clusters to participate in an Active-Active database, make sure you've completed all the following steps and have gathered the information listed below each step.
-
Configure the admission controller and ValidatingWebhook.
-
Create two or more RedisEnterpriseCluster (REC) custom resources with enough memory resources.
- Name of each REC (
<rec-name>
) - Namespace for each REC (
<rec-namespace>
)
- Name of each REC (
-
Configure the REC
ingressOrRoutes
field and create DNS records.- REC API hostname (
api-<rec-name>-<rec-namespace>.<subdomain>
) - Database hostname suffix (
-db-<rec-name>-<rec-namespace>.<subdomain>
)
- REC API hostname (
Next you'll collect credentials for your participating clusters and create secrets for the RedisEnterprsieRemoteCluster (RERC) to use.
For a list of example values used throughout this article, see the Example values section.
Preview versions
If you are using a preview version of these features (operator version 6.4.2-4 or 6.4.2-5), you'll need to enable the Active-Active controller with the following steps. You need to do this only once per cluster. We recommend using the fully supported 6.4.2-6 version.
-
Download the custom resource definitions (CRDs) for the most recent release (6.4.2-4) from redis-enterprise-k8s-docs Github.
-
Apply the new CRDs for the Redis Enterprise Active-Active database (REAADB) and Redis Enterprise remote cluster (RERC) to install those controllers.
kubectl apply -f crds/reaadb_crd.yaml kubectl apply -f crds/rerc_crd.yaml
-
Enable the Active-Active and remote cluster controllers on the operator ConfigMap.
kubectl patch cm operator-environment-config --type merge --patch "{\"data\": \ {\"ACTIVE_ACTIVE_DATABASE_CONTROLLER_ENABLED\":\"true\", \ \"REMOTE_CLUSTER_CONTROLLER_ENABLED\":\"true\"}}"
Collect REC credentials
To communicate with other clusters, all participating clusters will need access to the admin credentials for all other clusters.
-
Create a file to hold the admin credentials for all participating RECs (such as
all-rec-secrets.yaml
). -
Within that file, create a new secret for each participating cluster named
redis-enterprise-<rerc-name>
.The example below shows a file (
all-rec-secrets.yaml
) holding secrets for two participating clusters:apiVersion: v1 data: password: username: kind: Secret metadata: name: redis-enterprise-rerc-ohare type: Opaque --- apiVersion: v1 data: password: username: kind: Secret metadata: name: redis-enterprise-rerc-reagan type: Opaque
-
Get the REC credentials secret for each participating cluster.
kubectl get secret -o yaml <rec-name>
The admin credentials secret for an REC named
rec-chicago
would be similar to this:apiVersion: v1 data: password: ABcdef12345 username: GHij56789 kind: Secret metadata: name: rec-chicago type: Opaque
-
Add the username and password to the new secret for that REC and namespace.
This example shows the collected secrets file (
all-rec-secrets.yaml
) forrerc-ohare
(representingrec-chicago
in namespacens-illinois
) andrerc-reagan
(representingrec-arlington
in namespacens-virginia
).apiVersion: v1 data: password: ABcdef12345 username: GHij56789 kind: Secret metadata: name: redis-enterprise-rerc-ohare type: Opaque --- apiVersion: v1 data: password: KLmndo123456 username: PQrst789010 kind: Secret metadata: name: redis-enterprise-rerc-reagan type: Opaque
-
Apply the file of collected secrets to every participating REC.
kubectl apply -f <all-rec-secrets-file>
If the admin credentials for any of the clusters changes, the file will need to be updated and reapplied to all clusters.
Next steps
Now you are ready to create your Redis Enterprise Active-Active database.
Example values
This article uses the following example values:
Example cluster 1
- REC name:
rec-chicago
- REC namespace:
ns-illinois
- RERC name:
rerc-ohare
- RERC secret name:
redis-enterprise-rerc-ohare
- API FQDN:
api-rec-chicago-ns-illinois.example.com
- DB FQDN suffix:
-db-rec-chicago-ns-illinois.example.com
Example cluster 2
- REC name:
rec-arlington
- REC namespace:
ns-virginia
- RERC name:
rerc-raegan
- RERC secret name:
redis-enterprise-rerc-reagan
- API FQDN:
api-rec-arlington-ns-virginia.example.com
- DB FQDN suffix:
-db-rec-arlington-ns-virginia.example.com