diff --git a/content/operate/kubernetes/re-clusters/multi-namespace.md b/content/operate/kubernetes/re-clusters/multi-namespace.md index 442591a8b1..4efea9e949 100644 --- a/content/operate/kubernetes/re-clusters/multi-namespace.md +++ b/content/operate/kubernetes/re-clusters/multi-namespace.md @@ -16,7 +16,9 @@ Multiple Redis Enterprise database resources (REDBs) can be associated with a si To learn more about designing a multi-namespace Redis Enterprise cluster, see [flexible deployment options]({{< relref "/operate/kubernetes/architecture/deployment-options.md" >}}). -{{}} Multi-namespace installations don't support Active-Active databases (REAADB). Only databases created with the REDB resource are supported in multi-namespace deployments at this time.{{}} +{{}} +Multi-namespace installations now support Active-Active databases (REAADB) with certain configuration requirements. For details, see [Multi-namespace Active-Active databases](#multi-namespace-active-active-databases). +{{}} ## Prerequisites @@ -98,7 +100,6 @@ kubectl apply -f role_binding.yaml -n If the REC is configured to watch a namespace without setting the role and role binding permissions, or a namespace that is not yet created, the operator will fail and halt normal operations. {{}} - ## Update Redis Enterprise operator ConfigMap There are two methods of updating the operator ConfigMap (`operator-environment-config`) to specify which namespaces to manage. @@ -108,6 +109,9 @@ There are two methods of updating the operator ConfigMap (`operator-environment- You can create this ConfigMap manually before deployment, or it will be created automatically after the operator was deployed. +{{}} +Only configure the operator to watch a namespace after the namespace is created and configured with the role/role_binding as explained above. If configured to watch a namespace without setting those permissions or a namespace that is not created yet, the operator will fail and not perform normal operations. +{{}} ### Method 1: Namespace label (available in versions 6.4.2-4 or later) @@ -185,6 +189,38 @@ kubectl patch ConfigMap/operator-environment-config \ -p '{"data":{"REDB_NAMESPACES": "}}). +3. In your REAADB custom resource, specify the target consumer namespace using `metadata.namespace`. For each participating cluster, use the `namespace` field under `spec.participatingClusters` to indicate the namespace where the REAADB should be deployed. +4. If you are using a [global database secret]({{}}), deploy the secret in each consumer namespace. + +{{}} +Apply the REAADB object to only one Kubernetes cluster. Based on the specified participating clusters and namespaces, the operator automatically creates the necessary resources in the other clusters. +{{}} + +For example: + +```yaml +apiVersion: app.redislabs.com/v1alpha1 +kind: RedisEnterpriseActiveActiveDatabase +metadata: + name: consumer-reaadb + namespace: consumer-namespace-main +spec: + participatingClusters: + - name: participating-cluster-main + - name: participating-cluster-peer + namespace: consumer-namespace-peer + globalConfigurations: + +``` + {{}} -Only configure the operator to watch a namespace after the namespace is created and configured with the role/role_binding as explained above. If configured to watch a namespace without setting those permissions or a namespace that is not created yet, the operator will fail and not perform normal operations. +Configure the operator to watch a namespace only after the namespace exists and the required `Role` and `RoleBinding` resources have been applied. If the operator is configured to watch a namespace that lacks these permissions or does not exist, it will fail and halt normal operations. {{}}