content/operate/kubernetes/7.4.6/active-active/prepare-clusters.md
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]({{< relref "/operate/kubernetes/7.4.6/deployment/quick-start.md#enable-the-admission-controller/" >}}).
Create two or more [RedisEnterpriseCluster (REC) custom resources]({{< relref "/operate/kubernetes/7.4.6/deployment/quick-start#create-a-redis-enterprise-cluster-rec" >}}) with enough [memory resources]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md" >}}).
<rec-name>)<rec-namespace>)Configure the REC [ingressOrRoutes field]({{< relref "/operate/kubernetes/7.4.6/networking/ingressorroutespec.md" >}}) and [create DNS records]({{< relref "/operate/kubernetes/7.4.6/networking/ingressorroutespec#configure-dns/" >}}).
api-<rec-name>-<rec-namespace>.<subdomain>)-db-<rec-name>-<rec-namespace>.<subdomain>)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.
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\"}}"
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) for rerc-ohare (representing rec-chicago in namespace ns-illinois) and rerc-reagan (representing rec-arlington in namespace ns-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.
Now you are ready to [create your Redis Enterprise Active-Active database]({{< relref "/operate/kubernetes/7.4.6/active-active/create-reaadb.md" >}}).
This article uses the following example values:
rec-chicagons-illinoisrerc-ohareredis-enterprise-rerc-ohareapi-rec-chicago-ns-illinois.example.com-db-rec-chicago-ns-illinois.example.comrec-arlingtonns-virginiarerc-raeganredis-enterprise-rerc-reaganapi-rec-arlington-ns-virginia.example.com-db-rec-arlington-ns-virginia.example.com