From bf122c7fa8d1e2e4cdab0b2cc3bfb6134b03b34f Mon Sep 17 00:00:00 2001 From: Kaitlyn Michael Date: Mon, 11 Aug 2025 12:27:44 -0500 Subject: [PATCH 1/7] add yaml embeds to multi-ns --- .../kubernetes/re-clusters/multi-namespace.md | 92 ++----------------- 1 file changed, 9 insertions(+), 83 deletions(-) diff --git a/content/operate/kubernetes/re-clusters/multi-namespace.md b/content/operate/kubernetes/re-clusters/multi-namespace.md index b13513f4d..8a32e1d45 100644 --- a/content/operate/kubernetes/re-clusters/multi-namespace.md +++ b/content/operate/kubernetes/re-clusters/multi-namespace.md @@ -26,68 +26,20 @@ Before configuring a multi-namespace deployment, you must have a running [Redis ## Create role and role binding for managed namespaces -Both the operator and the RedisEnterpriseCluster (REC) resource need access to each namespace the REC will manage. For each **managed** namespace, create a `role.yaml` and `role_binding.yaml` file within the managed namespace, as shown in the examples below. +Both the operator and the RedisEnterpriseCluster (REC) resource need access to each namespace the REC will manage. For each **managed** namespace, create a `consumer_role.yaml` and `consumer_role_binding.yaml` file within the managed namespace, as shown in the examples below. {{}}These will need to be reapplied each time you [upgrade]({{< relref "/operate/kubernetes/upgrade/upgrade-redis-cluster" >}}). {{}} Replace `` with the namespace the REC resides in. Replace `` with your own value (defaults to the REC name). -`role.yaml` example: +`consumer_role.yaml` example: -```yaml -kind: Role -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: redb-role - labels: - app: redis-enterprise -rules: - - apiGroups: - - app.redislabs.com - resources: ["redisenterpriseclusters", "redisenterpriseclusters/status", "redisenterpriseclusters/finalizers", - "redisenterprisedatabases", "redisenterprisedatabases/status", "redisenterprisedatabases/finalizers", - "redisenterpriseremoteclusters", "redisenterpriseremoteclusters/status", - "redisenterpriseremoteclusters/finalizers", - "redisenterpriseactiveactivedatabases", "redisenterpriseactiveactivedatabases/status", - "redisenterpriseactiveactivedatabases/finalizers"] - verbs: ["delete", "deletecollection", "get", "list", "patch", "create", "update", "watch"] - - apiGroups: [""] - resources: ["secrets"] - verbs: ["update", "get", "read", "list", "listallnamespaces", "watch", "watchlist", - "watchlistallnamespaces", "create","patch","replace","delete","deletecollection"] - - apiGroups: [""] - resources: ["endpoints"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["events"] - verbs: ["create"] - - apiGroups: [""] - resources: ["services"] - verbs: ["get", "watch", "list", "update", "patch", "create", "delete"] -``` +{{}} -`role_binding.yaml` example: +`consumer_role_binding.yaml` example: -```yaml -kind: RoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: redb-role - labels: - app: redis-enterprise -subjects: -- kind: ServiceAccount - name: redis-enterprise-operator - namespace: -- kind: ServiceAccount - name: - namespace: -roleRef: - kind: Role - name: redb-role - apiGroup: rbac.authorization.k8s.io -``` +{{}} {{}} **Alternative approach**: Instead of creating individual `Role` objects for each namespace, you can create a single `ClusterRole` and bind it with multiple `RoleBinding` objects. This reduces the number of objects and simplifies role management. @@ -101,8 +53,8 @@ To use this approach: Apply the files, replacing `` with your own values: ```sh -kubectl apply -f role.yaml -n -kubectl apply -f role_binding.yaml -n +kubectl apply -f consumer_role.yaml -n +kubectl apply -f consumer_role_binding.yaml -n ``` {{}} @@ -128,37 +80,11 @@ Only configure the operator to watch a namespace after the namespace is created `operator_cluster_role.yaml` example: - ```yaml - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRole - metadata: - name: redis-enterprise-operator-consumer-ns - labels: - app: redis-enterprise - rules: - - apiGroups: [""] - resources: ["namespaces"] - verbs: ["list", "watch"] - ``` +{{}} `operator_cluster_role_binding.yaml` example: - ```yaml - kind: ClusterRoleBinding - apiVersion: rbac.authorization.k8s.io/v1 - metadata: - name: redis-enterprise-operator-consumer-ns - labels: - app: redis-enterprise - subjects: - - kind: ServiceAccount - name: redis-enterprise-operator - namespace: - roleRef: - kind: ClusterRole - name: redis-enterprise-operator-consumer-ns - apiGroup: rbac.authorization.k8s.io - ``` +{{}} 2. Apply the files. From 134e9852a9fc7cc07645fa8fdb1fe476f13454a0 Mon Sep 17 00:00:00 2001 From: Kaitlyn Michael Date: Mon, 11 Aug 2025 12:51:07 -0500 Subject: [PATCH 2/7] remove AA preview note --- .../kubernetes/active-active/_index.md | 21 ------------------- .../kubernetes/active-active/edit-rerc.md | 9 +++++--- .../active-active/prepare-clusters.md | 20 ------------------ 3 files changed, 6 insertions(+), 44 deletions(-) diff --git a/content/operate/kubernetes/active-active/_index.md b/content/operate/kubernetes/active-active/_index.md index d34689c32..89fc0dfa9 100644 --- a/content/operate/kubernetes/active-active/_index.md +++ b/content/operate/kubernetes/active-active/_index.md @@ -52,27 +52,6 @@ For versions 6.4.2 or earlier, this Active-Active setup method includes the foll To create an Active-Active Redis Enterprise deployment for Kubernetes with these new features, first [prepare participating clusters]({{< relref "/operate/kubernetes/active-active/prepare-clusters" >}}) then [create an Active-Active database]({{< relref "/operate/kubernetes/active-active/create-reaadb" >}}). -### 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. - -1. Download the custom resource definitions (CRDs) for the most recent release (6.4.2-4) from [redis-enterprise-k8s-docs Github](https://github.com/RedisLabs/redis-enterprise-k8s-docs/tree/master/crds). - -1. Apply the new CRDs for the Redis Enterprise Active-Active database (REAADB) and Redis Enterprise remote cluster (RERC) to install those controllers. - - ```sh - kubectl apply -f crds/reaadb_crd.yaml - kubectl apply -f crds/rerc_crd.yaml - ``` - -1. Enable the Active-Active and remote cluster controllers on the operator ConfigMap. - - ```sh - kubectl patch cm operator-environment-config --type merge --patch "{\"data\": \ - {\"ACTIVE_ACTIVE_DATABASE_CONTROLLER_ENABLED\":\"true\", \ - \"REMOTE_CLUSTER_CONTROLLER_ENABLED\":\"true\"}}" - - ### REAADB custom resource Redis Enterprise Active-Active database (REAADB) contains a link to the RERC for each participating cluster, and provides configuration and status to the management plane. diff --git a/content/operate/kubernetes/active-active/edit-rerc.md b/content/operate/kubernetes/active-active/edit-rerc.md index f5a3bdbb7..6cc0189c6 100644 --- a/content/operate/kubernetes/active-active/edit-rerc.md +++ b/content/operate/kubernetes/active-active/edit-rerc.md @@ -73,10 +73,13 @@ If the credentials are changed or updated for a REC participating cluster, you n ```sh kubectl get reaadb reaadb-boeing - - NAME STATUS SPEC STATUS LINKED REDBS REPLICATION STATUS - reaadb-boeing active Valid up ``` + The output should look similar to: + + ```sh + NAME STATUS SPEC STATUS LINKED REDBS REPLICATION STATUS + reaadb-boeing active Valid up + ``` To troubleshoot invalid configurations, view the RERC custom resource events and the [Redis Enterprise operator logs]({{< relref "/operate/kubernetes/logs/" >}}). diff --git a/content/operate/kubernetes/active-active/prepare-clusters.md b/content/operate/kubernetes/active-active/prepare-clusters.md index df8fcad85..8aad8660f 100644 --- a/content/operate/kubernetes/active-active/prepare-clusters.md +++ b/content/operate/kubernetes/active-active/prepare-clusters.md @@ -29,26 +29,6 @@ Next you'll [collect credentials](#collect-rec-credentials) for your participati For a list of example values used throughout this article, see the [Example values](#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. - -1. Download the custom resource definitions (CRDs) for the most recent release (6.4.2-4) from [redis-enterprise-k8s-docs Github](https://github.com/RedisLabs/redis-enterprise-k8s-docs/tree/master/crds). - -1. Apply the new CRDs for the Redis Enterprise Active-Active database (REAADB) and Redis Enterprise remote cluster (RERC) to install those controllers. - - ```sh - kubectl apply -f crds/reaadb_crd.yaml - kubectl apply -f crds/rerc_crd.yaml - ``` - -1. Enable the Active-Active and remote cluster controllers on the operator ConfigMap. - - ```sh - 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. From c9f0f29df56b4b544ff6d69b4718fa31116b282f Mon Sep 17 00:00:00 2001 From: Kaitlyn Michael Date: Mon, 11 Aug 2025 12:52:26 -0500 Subject: [PATCH 3/7] use AA yaml embeds --- content/embeds/k8s/reaadb-boeing.md | 14 +++++++ content/embeds/k8s/rerc-ohare.md | 12 ++++++ content/embeds/k8s/rerc-raegan.md | 12 ++++++ .../kubernetes/active-active/create-reaadb.md | 41 ++----------------- .../kubernetes/active-active/edit-clusters.md | 2 +- .../reference/yaml/active-active.md | 16 +++++++- 6 files changed, 56 insertions(+), 41 deletions(-) create mode 100644 content/embeds/k8s/reaadb-boeing.md create mode 100644 content/embeds/k8s/rerc-ohare.md create mode 100644 content/embeds/k8s/rerc-raegan.md diff --git a/content/embeds/k8s/reaadb-boeing.md b/content/embeds/k8s/reaadb-boeing.md new file mode 100644 index 000000000..22a2fedfe --- /dev/null +++ b/content/embeds/k8s/reaadb-boeing.md @@ -0,0 +1,14 @@ +```yaml +apiVersion: app.redislabs.com/v1alpha1 +kind: RedisEnterpriseActiveActiveDatabase +metadata: + name: reaadb-boeing +spec: + globalConfigurations: + databaseSecretName: + memorySize: 200MB + shardCount: 3 + participatingClusters: + - name: rerc-ohare + - name: rerc-raegan +``` diff --git a/content/embeds/k8s/rerc-ohare.md b/content/embeds/k8s/rerc-ohare.md new file mode 100644 index 000000000..661695f00 --- /dev/null +++ b/content/embeds/k8s/rerc-ohare.md @@ -0,0 +1,12 @@ +```yaml +apiVersion: app.redislabs.com/v1alpha1 +kind: RedisEnterpriseRemoteCluster +metadata: + name: rerc-ohare +spec: + recName: rec-chicago + recNamespace: ns-illinois + apiFqdnUrl: api-rec-chicago-ns-illinois.example.com + dbFqdnSuffix: -db-rec-chicago-ns-illinois.example.com + secretName: redis-enterprise-rerc-ohare +``` diff --git a/content/embeds/k8s/rerc-raegan.md b/content/embeds/k8s/rerc-raegan.md new file mode 100644 index 000000000..1c2dc5bbc --- /dev/null +++ b/content/embeds/k8s/rerc-raegan.md @@ -0,0 +1,12 @@ +```yaml +apiVersion: app.redislabs.com/v1alpha1 +kind: RedisEnterpriseRemoteCluster +metadata: + name: rerc-raegan +spec: + recName: rec-arlington + recNamespace: ns-virginia + apiFqdnUrl: test-example-api-rec-arlington-ns-virginia.example.com + dbFqdnSuffix: -example-cluster-rec-arlington-ns-virginia.example.com + secretName: redis-enterprise-rerc-raegan +``` diff --git a/content/operate/kubernetes/active-active/create-reaadb.md b/content/operate/kubernetes/active-active/create-reaadb.md index 100795006..35f0c3fb0 100644 --- a/content/operate/kubernetes/active-active/create-reaadb.md +++ b/content/operate/kubernetes/active-active/create-reaadb.md @@ -41,33 +41,11 @@ For a list of example values used throughout this article, see the [Example valu Example RERC (`rerc-ohare`) for the REC named `rec-chicago` in the namespace `ns-illinois`: - ```yaml - apiVersion: app.redislabs.com/v1alpha1 - kind: RedisEnterpriseRemoteCluster - metadata: - name: rerc-ohare - spec: - recName: rec-chicago - recNamespace: ns-illinois - apiFqdnUrl: api-rec-chicago-ns-illinois.example.com - dbFqdnSuffix: -db-rec-chicago-ns-illinois.example.com - secretName: redis-enterprise-rerc-ohare - ``` + {{}} Example RERC (`rerc-raegan`) for the REC named `rec-arlington` in the namespace `ns-virginia`: - ```yaml - apiVersion: app.redislabs.com/v1alpha1 - kind: RedisEnterpriseRemoteCluster - metadata: - name: rerc-reagan - spec: - recName: rec-arlington - recNamespace: ns-virginia - apiFqdnUrl: test-example-api-rec-arlington-ns-virginia.example.com - dbFqdnSuffix: -example-cluster-rec-arlington-ns-virginia.example.com - secretName: redis-enterprise-rerc-reagan - ``` + {{}} For more details on RERC fields, see the [RERC API reference]({{}}). @@ -106,20 +84,7 @@ For a list of example values used throughout this article, see the [Example valu Example REAADB named `reaadb-boeing` linked to the REC named `rec-chicago` with two participating clusters and a global database configuration with shard count set to 3: - ```yaml - apiVersion: app.redislabs.com/v1alpha1 - kind: RedisEnterpriseActiveActiveDatabase - metadata: - name: reaadb-boeing - spec: - globalConfigurations: - databaseSecretName: - memorySize: 200MB - shardCount: 3 - participatingClusters: - - name: rerc-ohare - - name: rerc-reagan - ``` + {{}} {{}}Sharding is disabled on Active-Active databases created with a `shardCount` of 1. Sharding cannot be enabled after database creation. {{}} diff --git a/content/operate/kubernetes/active-active/edit-clusters.md b/content/operate/kubernetes/active-active/edit-clusters.md index 680581dba..017cf9675 100644 --- a/content/operate/kubernetes/active-active/edit-clusters.md +++ b/content/operate/kubernetes/active-active/edit-clusters.md @@ -75,7 +75,7 @@ To communicate with other clusters, all participating clusters need access to th 1. From one of the existing participating clusters, create a `RedisEnterpriseRemoteCluster` (RERC) custom resource for the new participating cluster. - This example shows an RERC custom resource for an REC named `rec-boston` in the namespace `ns-massachusetts`. + This example (rerc-logan) shows an RERC custom resource for an REC named `rec-boston` in the namespace `ns-massachusetts`. ```yaml apiVersion: app.redislabs.com/v1alpha1 diff --git a/content/operate/kubernetes/reference/yaml/active-active.md b/content/operate/kubernetes/reference/yaml/active-active.md index a84309636..3b83c81b0 100644 --- a/content/operate/kubernetes/reference/yaml/active-active.md +++ b/content/operate/kubernetes/reference/yaml/active-active.md @@ -22,12 +22,18 @@ This example shows a two-cluster Active-Active setup: For complete deployment instructions, see [Active-Active databases]({{< relref "/operate/kubernetes/active-active" >}}). -## RERC for Chicago cluster +## RERC examples Create a RedisEnterpriseRemoteCluster (RERC) resource on each participating cluster that points to the other clusters. +Plain example: + {{}} +Customized example (matches Kubernetes Active-Active guide examples): + +{{}} + RERC configuration: - `metadata.name`: Unique name for this remote cluster reference - `spec.recName`: Name of the remote REC @@ -38,12 +44,18 @@ RERC configuration: Edit the values in the downloaded YAML file for your specific setup, updating the remote cluster details, API endpoints, and secret names to match your actual environment. -## Active-Active database +## Active-Active database examples The RedisEnterpriseActiveActiveDatabase (REAADB) resource defines the Active-Active database. +Plain example: + {{}} +Customized example (matches Kubernetes Active-Active guide examples): + +{{}} + REAADB configuration: - `metadata.name`: Active-Active database name - `spec.participatingClusters`: List of RERC names that participate in this database From dc6b0d79150e51b84bf0121e046b1712d781aab4 Mon Sep 17 00:00:00 2001 From: Kaitlyn Michael Date: Mon, 11 Aug 2025 12:56:40 -0500 Subject: [PATCH 4/7] create AA example files --- content/embeds/k8s/ns-illinois.md | 6 ++++++ content/embeds/k8s/ns-virginia.md | 6 ++++++ content/embeds/k8s/rec-arlington.md | 19 +++++++++++++++++++ content/embeds/k8s/rec-chicago.md | 19 +++++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 content/embeds/k8s/ns-illinois.md create mode 100644 content/embeds/k8s/ns-virginia.md create mode 100644 content/embeds/k8s/rec-arlington.md create mode 100644 content/embeds/k8s/rec-chicago.md diff --git a/content/embeds/k8s/ns-illinois.md b/content/embeds/k8s/ns-illinois.md new file mode 100644 index 000000000..89ee3870b --- /dev/null +++ b/content/embeds/k8s/ns-illinois.md @@ -0,0 +1,6 @@ +```yaml +apiVersion: v1 +kind: Namespace +metadata: + name: ns-illinois +``` diff --git a/content/embeds/k8s/ns-virginia.md b/content/embeds/k8s/ns-virginia.md new file mode 100644 index 000000000..ed8e04446 --- /dev/null +++ b/content/embeds/k8s/ns-virginia.md @@ -0,0 +1,6 @@ +```yaml +apiVersion: v1 +kind: Namespace +metadata: + name: ns-virginia +``` diff --git a/content/embeds/k8s/rec-arlington.md b/content/embeds/k8s/rec-arlington.md new file mode 100644 index 000000000..5ffe7dd63 --- /dev/null +++ b/content/embeds/k8s/rec-arlington.md @@ -0,0 +1,19 @@ +```yaml +apiVersion: app.redislabs.com/v1 +kind: RedisEnterpriseCluster +metadata: + name: rec-arlington + namespace: ns-virginia +spec: + nodes: 3 + persistentSpec: + enabled: true + volumeSize: 20Gi + redisEnterpriseNodeResources: + requests: + cpu: 2 + memory: 4Gi + limits: + cpu: 2 + memory: 4Gi +``` diff --git a/content/embeds/k8s/rec-chicago.md b/content/embeds/k8s/rec-chicago.md new file mode 100644 index 000000000..6c8e16fcc --- /dev/null +++ b/content/embeds/k8s/rec-chicago.md @@ -0,0 +1,19 @@ +```yaml +apiVersion: app.redislabs.com/v1 +kind: RedisEnterpriseCluster +metadata: + name: rec-chicago + namespace: ns-illinois +spec: + nodes: 3 + persistentSpec: + enabled: true + volumeSize: 20Gi + redisEnterpriseNodeResources: + requests: + cpu: 2 + memory: 4Gi + limits: + cpu: 2 + memory: 4Gi +``` From 7f0c57155d5d284f4d8d87a273a1cd07ee039af8 Mon Sep 17 00:00:00 2001 From: Kaitlyn Michael Date: Mon, 11 Aug 2025 13:30:12 -0500 Subject: [PATCH 5/7] revise AA examples page --- .../reference/yaml/active-active.md | 52 ++++++++++++------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/content/operate/kubernetes/reference/yaml/active-active.md b/content/operate/kubernetes/reference/yaml/active-active.md index 3b83c81b0..37b3531e4 100644 --- a/content/operate/kubernetes/reference/yaml/active-active.md +++ b/content/operate/kubernetes/reference/yaml/active-active.md @@ -12,29 +12,46 @@ weight: 30 This page provides YAML examples for deploying Active-Active Redis Enterprise databases across multiple Kubernetes clusters. Active-Active databases provide multi-master replication with conflict resolution, enabling global distribution and local read/write access. -To learn more, see [Active-Active databases]({{< relref "/operate/kubernetes/active-active" >}}). +For complete deployment instructions, see [Active-Active databases]({{< relref "/operate/kubernetes/active-active" >}}). -## Architecture +## Namespace examples -This example shows a two-cluster Active-Active setup: -- Cluster 1: `rec-chicago` in namespace `ns-chicago` -- Cluster 2: `rec-boston` in namespace `ns-boston` +A namespace is an abstraction used by Kubernetes to support multiple virtual clusters on the same physical cluster. -For complete deployment instructions, see [Active-Active databases]({{< relref "/operate/kubernetes/active-active" >}}). +`ns-illinois.yaml` is used in [Create Active-Active database]({{< relref "/operate/kubernetes/active-active/create-reaadb#example-values" >}}). + +{{}} + +`ns-virginia.yaml` is used in [Create Active-Active database]({{< relref "/operate/kubernetes/active-active/create-reaadb#example-values" >}}). + +{{}} + +## REC examples + +A Redis Enterprise cluster is a collection of Redis Enterprise nodes that pools system resources across nodes and supports multi-tenant database instances. + +`rec-chicago.yaml` is used in [Create Active-Active database]({{< relref "/operate/kubernetes/active-active/create-reaadb#prerequisites" >}}) and [Create RERC]({{< relref "/operate/kubernetes/active-active/create-reaadb#create-rerc" >}}). + +{{}} + +`rec-arlington.yaml` is used in [Create Active-Active database]({{< relref "/operate/kubernetes/active-active/create-reaadb#prerequisites" >}}) and [Create RERC]({{< relref "/operate/kubernetes/active-active/create-reaadb#create-rerc" >}}). + +{{}} ## RERC examples -Create a RedisEnterpriseRemoteCluster (RERC) resource on each participating cluster that points to the other clusters. +RedisEnterpriseRemoteCluster represents a remote participating cluster. + +`rerc-ohare.yaml` is used in the [Create RERC]({{< relref "/operate/kubernetes/active-active/create-reaadb#create-rerc" >}}) section. -Plain example: +{{}} -{{}} +`rerc-raegan.yaml` is used in the [Create RERC]({{< relref "/operate/kubernetes/active-active/create-reaadb#create-rerc" >}}) section. -Customized example (matches Kubernetes Active-Active guide examples): +{{}} -{{}} +### RERC configuration -RERC configuration: - `metadata.name`: Unique name for this remote cluster reference - `spec.recName`: Name of the remote REC - `spec.recNamespace`: Namespace of the remote REC @@ -46,17 +63,14 @@ Edit the values in the downloaded YAML file for your specific setup, updating th ## Active-Active database examples -The RedisEnterpriseActiveActiveDatabase (REAADB) resource defines the Active-Active database. - -Plain example: +Active-Active databases are geo-distributed databases that span multiple Redis Enterprise clusters and use multi-primary replication and conflict-free replicated data types (CRDTs). -{{}} +`reaadb-boeing.yaml` is used in [Create Active-Active database]({{< relref "/operate/kubernetes/active-active/create-reaadb#create-reaadb" >}}) section. -Customized example (matches Kubernetes Active-Active guide examples): +{{}} -{{}} +### REAADB configuration -REAADB configuration: - `metadata.name`: Active-Active database name - `spec.participatingClusters`: List of RERC names that participate in this database - `spec.globalConfigurations`: Database settings applied to all participating clusters From ed060b19cc3eadc3774d9fbe53887508aac8a42b Mon Sep 17 00:00:00 2001 From: Kaitlyn Michael Date: Mon, 11 Aug 2025 13:36:29 -0500 Subject: [PATCH 6/7] formatting and links --- .../reference/yaml/active-active.md | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/content/operate/kubernetes/reference/yaml/active-active.md b/content/operate/kubernetes/reference/yaml/active-active.md index 37b3531e4..2693c1929 100644 --- a/content/operate/kubernetes/reference/yaml/active-active.md +++ b/content/operate/kubernetes/reference/yaml/active-active.md @@ -14,6 +14,10 @@ This page provides YAML examples for deploying Active-Active Redis Enterprise da For complete deployment instructions, see [Active-Active databases]({{< relref "/operate/kubernetes/active-active" >}}). +## Applying the configuration + +To deploy Active-Active databases using these YAML files, follow [Create Active-Active database (REAADB)]({{< relref "/operate/kubernetes/active-active/create-reaadb" >}}), which provides detailed instructions for preparing clusters, creating RERC resources, and deploying REAADB configurations. + ## Namespace examples A namespace is an abstraction used by Kubernetes to support multiple virtual clusters on the same physical cluster. @@ -52,12 +56,12 @@ RedisEnterpriseRemoteCluster represents a remote participating cluster. ### RERC configuration -- `metadata.name`: Unique name for this remote cluster reference -- `spec.recName`: Name of the remote REC -- `spec.recNamespace`: Namespace of the remote REC -- `spec.apiFqdnUrl`: API endpoint URL for the remote cluster -- `spec.dbFqdnSuffix`: Database hostname suffix for the remote cluster -- `spec.secretName`: Secret containing authentication credentials +- [metadata.name]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api#appredislabscomv1alpha1" >}}): Unique name for this remote cluster reference +- [spec.recName]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api#spec" >}}): Name of the remote REC +- [spec.recNamespace]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api#spec" >}}): Namespace of the remote REC +- [spec.apiFqdnUrl]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api#spec" >}}): API endpoint URL for the remote cluster +- [spec.dbFqdnSuffix]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api#spec" >}}): Database hostname suffix for the remote cluster +- [spec.secretName]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api#spec" >}}): Secret containing authentication credentials Edit the values in the downloaded YAML file for your specific setup, updating the remote cluster details, API endpoints, and secret names to match your actual environment. @@ -71,19 +75,19 @@ Active-Active databases are geo-distributed databases that span multiple Redis E ### REAADB configuration -- `metadata.name`: Active-Active database name -- `spec.participatingClusters`: List of RERC names that participate in this database -- `spec.globalConfigurations`: Database settings applied to all participating clusters +- [metadata.name]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api#appredislabscomv1alpha1" >}}): Active-Active database name +- [spec.participatingClusters]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api#specparticipatingclusters" >}}): List of RERC names that participate in this database +- [spec.globalConfigurations]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api#specglobalconfigurations" >}}): Database settings applied to all participating clusters Edit the downloaded YAML file to add global database settings such as memory allocation, shard count, replication settings, database secrets, Redis modules, and database-specific Redis configuration. -## Applying the configuration - -To deploy Active-Active databases using these YAML files, follow [Create Active-Active database (REAADB)]({{< relref "/operate/kubernetes/active-active/create-reaadb" >}}), which provides detailed instructions for preparing clusters, creating RERC resources, and deploying REAADB configurations. - ## Related documentation +- [Active-Active databases (index)]({{< relref "/operate/kubernetes/active-active" >}}) +- [Prepare participating clusters]({{< relref "/operate/kubernetes/active-active/prepare-clusters" >}}) - [Create Active-Active database (REAADB)]({{< relref "/operate/kubernetes/active-active/create-reaadb" >}}) -- [REAADB API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api" >}}) +- [Edit global configuration]({{< relref "/operate/kubernetes/active-active/global-config" >}}) +- [Sync global database secret]({{< relref "/operate/kubernetes/active-active/global-db-secret" >}}) - [RERC API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api" >}}) +- [REAADB API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api" >}}) - [Networking configuration]({{< relref "/operate/kubernetes/networking" >}}) From 2fa7f2f5f0580420c3ff69c2a5a098763528bd26 Mon Sep 17 00:00:00 2001 From: Kaitlyn Michael Date: Mon, 11 Aug 2025 14:06:29 -0500 Subject: [PATCH 7/7] formatting edits --- .../kubernetes/active-active/_index.md | 4 + .../kubernetes/active-active/create-reaadb.md | 101 +++++++++--------- .../active-active/prepare-clusters.md | 6 +- 3 files changed, 57 insertions(+), 54 deletions(-) diff --git a/content/operate/kubernetes/active-active/_index.md b/content/operate/kubernetes/active-active/_index.md index 89fc0dfa9..3e1042f53 100644 --- a/content/operate/kubernetes/active-active/_index.md +++ b/content/operate/kubernetes/active-active/_index.md @@ -58,12 +58,16 @@ Redis Enterprise Active-Active database (REAADB) contains a link to the RERC for For a full list of fields and options, see the [REAADB API reference]({{}}). +For examples, see the [YAML examples]({{< relref "/operate/kubernetes/reference/yaml/active-active" >}}) section. + ### RERC custom resource Redis Enterprise remote cluster (RERC) custom resource contains configuration details for all the participating clusters. For a full list of fields and options, see the [RERC API reference]({{}}). +For examples, see the [YAML examples]({{< relref "/operate/kubernetes/reference/yaml/active-active" >}}) section. + ### Limitations * Existing Redis databases cannot be migrated to a REAADB. (DOC-3594) diff --git a/content/operate/kubernetes/active-active/create-reaadb.md b/content/operate/kubernetes/active-active/create-reaadb.md index 35f0c3fb0..1631ee551 100644 --- a/content/operate/kubernetes/active-active/create-reaadb.md +++ b/content/operate/kubernetes/active-active/create-reaadb.md @@ -33,92 +33,91 @@ To create an Active-Active database, make sure you've completed all the followin For a list of example values used throughout this article, see the [Example values](#example-values) section. -## Create `RedisEnterpriseRemoteCluster` resources {#create-rerc} +## Create RERC custom resources {#create-rerc} 1. Create a `RedisEnterpriseRemoteCluster` (RERC) custom resource file for each participating Redis Enterprise cluster (REC). - Below are examples of RERC resources for two participating clusters. Substitute your own values to create your own resource. +Below are examples of RERC resources for two participating clusters. Substitute your own values to create your own resource. - Example RERC (`rerc-ohare`) for the REC named `rec-chicago` in the namespace `ns-illinois`: +Example RERC (`rerc-ohare`) for the REC named `rec-chicago` in the namespace `ns-illinois`: - {{}} +{{}} - Example RERC (`rerc-raegan`) for the REC named `rec-arlington` in the namespace `ns-virginia`: +Example RERC (`rerc-raegan`) for the REC named `rec-arlington` in the namespace `ns-virginia`: - {{}} +{{}} - For more details on RERC fields, see the [RERC API reference]({{}}). +For more details on RERC fields, see the [RERC API reference]({{}}). -1. Create a Redis Enterprise remote cluster from each RERC custom resource file. +2. Create a Redis Enterprise remote cluster from each RERC custom resource file. - ```sh - kubectl create -f - ``` +```sh +kubectl create -f +``` -1. Check the status of your RERC. If `STATUS` is `Active` and `SPEC STATUS` is `Valid`, then your configurations are correct. +3. Check the status of your RERC. If `STATUS` is `Active` and `SPEC STATUS` is `Valid`, then your configurations are correct. - ```sh - kubectl get rerc - ``` +```sh +kubectl get rerc +``` - The output should look similar to: +The output should look similar to: - ```sh - kubectl get rerc rerc-ohare +```sh +kubectl get rerc rerc-ohare - NAME STATUS SPEC STATUS LOCAL - rerc-ohare Active Valid true - ``` +NAME STATUS SPEC STATUS LOCAL +rerc-ohare Active Valid true +``` - In case of errors, review the RERC custom resource events and the Redis Enterprise operator logs. +In case of errors, review the RERC custom resource events and the Redis Enterprise operator logs. -## Create `RedisEnterpriseActiveActiveDatabase` resource {#create-reaadb} +## Create the REAADB {#create-reaadb} 1. Create a `RedisEnterpriseActiveActiveDatabase` (REAADB) custom resource file meeting the naming requirements and listing the names of the RERC custom resources created in the last step. - Naming requirements: - * less than 63 characters - * contains only lowercase letters, numbers, or hyphens - * starts with a letter - * ends with a letter or digit +Naming requirements: +* less than 63 characters +* contains only lowercase letters, numbers, or hyphens +* starts with a letter +* ends with a letter or digit - Example REAADB named `reaadb-boeing` linked to the REC named `rec-chicago` with two participating clusters and a global database configuration with shard count set to 3: +Example REAADB named `reaadb-boeing` linked to the REC named `rec-chicago` with two participating clusters and a global database configuration with shard count set to 3: - {{}} +{{}} - {{}}Sharding is disabled on Active-Active databases created with a `shardCount` of 1. Sharding cannot be enabled after database creation. {{}} +{{}}Sharding is disabled on Active-Active databases created with a `shardCount` of 1. Sharding cannot be enabled after database creation. {{}} - For more details on RERC fields, see the [RERC API reference]({{}}). +For more details on RERC fields, see the [RERC API reference]({{}}). -1. Create a Redis Enterprise Active-Active database from the REAADB custom resource file. +2. Create a Redis Enterprise Active-Active database from the REAADB custom resource file. - ```sh - kubectl create -f - ``` +```sh +kubectl create -f +``` -1. Check the status of your RERC. If `STATUS` is `Active` and `SPEC STATUS` is `Valid`, your configurations are correct. +3. Check the status of your RERC. If `STATUS` is `Active` and `SPEC STATUS` is `Valid`, your configurations are correct. - ```sh - kubectl get reaadb - ``` +```sh +kubectl get reaadb +``` - The output should look similar to: +The output should look similar to: - ```sh - kubectl get reaadb reaadb-boeing - - NAME STATUS SPEC STATUS LINKED REDBS REPLICATION STATUS - reaadb-boeing active Valid up - ``` +```sh +kubectl get reaadb reaadb-boeing +NAME STATUS SPEC STATUS LINKED REDBS REPLICATION STATUS +reaadb-boeing active Valid up +``` - In case of errors, review the REAADB custom resource events and the Redis Enterprise operator logs. +In case of errors, review the REAADB custom resource events and the Redis Enterprise operator logs. ## Example values -This article uses the following example values: +This article uses the example values listed below. They can also be found in the [YAML examples]({{< relref "/operate/kubernetes/reference/yaml/active-active" >}}) section. -#### Example cluster 1 +Example cluster 1: * REC name: `rec-chicago` * REC namespace: `ns-illinois` @@ -127,7 +126,7 @@ This article uses the following example values: * API FQDN: `api-rec-chicago-ns-illinois.example.com` * DB FQDN suffix: `-db-rec-chicago-ns-illinois.example.com` -#### Example cluster 2 +Example cluster 2: * REC name: `rec-arlington` * REC namespace: `ns-virginia` diff --git a/content/operate/kubernetes/active-active/prepare-clusters.md b/content/operate/kubernetes/active-active/prepare-clusters.md index 8aad8660f..204a61454 100644 --- a/content/operate/kubernetes/active-active/prepare-clusters.md +++ b/content/operate/kubernetes/active-active/prepare-clusters.md @@ -122,9 +122,9 @@ Now you are ready to [create your Redis Enterprise Active-Active database]({{< r ## Example values -This article uses the following example values: +This article uses the example values listed below. They can also be found in the [YAML examples]({{< relref "/operate/kubernetes/reference/yaml/active-active" >}}) section. -#### Example cluster 1 +Example cluster 1: * REC name: `rec-chicago` * REC namespace: `ns-illinois` @@ -133,7 +133,7 @@ This article uses the following example values: * API FQDN: `api-rec-chicago-ns-illinois.example.com` * DB FQDN suffix: `-db-rec-chicago-ns-illinois.example.com` -#### Example cluster 2 +Example cluster 2: * REC name: `rec-arlington` * REC namespace: `ns-virginia`