diff --git a/content/operate/kubernetes/7.8.4/_index.md b/content/operate/kubernetes/7.8.4/_index.md
index cdaa3cb661..4920e84057 100644
--- a/content/operate/kubernetes/7.8.4/_index.md
+++ b/content/operate/kubernetes/7.8.4/_index.md
@@ -10,6 +10,8 @@ description: The Redis Enterprise operators allows you to use Redis Enterprise f
hideListLinks: false
linkTitle: 7.8.4
weight: 50
+bannerText: This documentation applies to version 7.8.4. For documentation on the latest version, see [redis.io/docs/latest/operate/kubernetes/](https://redis.io/docs/latest/operate/kubernetes/).
+bannerChildren: true
url: '/operate/kubernetes/7.8.4/'
---
diff --git a/content/operate/kubernetes/7.8.4/deployment/_index.md b/content/operate/kubernetes/7.8.4/deployment/_index.md
index a6ee43506a..79673b5ccf 100644
--- a/content/operate/kubernetes/7.8.4/deployment/_index.md
+++ b/content/operate/kubernetes/7.8.4/deployment/_index.md
@@ -11,8 +11,6 @@ description: This section lists the different ways to set up and run Redis Enter
hideListLinks: false
linkTitle: Deployment
weight: 11
-bannerText: This page applies to version [7.8.2-6 and above](https://redis.io/docs/latest/operate/kubernetes/release-notes/7-8-2-releases). To install older versions, see the [7.4.6 documentation](https://redis.io/docs/latest/operate/kubernetes/7.4.6/).
-bannerChildren: true
url: '/operate/kubernetes/7.8.4/deployment/'
---
diff --git a/content/operate/kubernetes/7.8.4/upgrade/_index.md b/content/operate/kubernetes/7.8.4/upgrade/_index.md
index 5b6fcfbfc3..a8d91444e6 100644
--- a/content/operate/kubernetes/7.8.4/upgrade/_index.md
+++ b/content/operate/kubernetes/7.8.4/upgrade/_index.md
@@ -9,8 +9,6 @@ description: Information about upgrading your Redis Enterprise cluster on Kubern
hideListLinks: true
linkTitle: Upgrade
weight: 15
-bannerText: This page applies to version [7.8.2-6 and above](https://redis.io/docs/latest/operate/kubernetes/release-notes/7-8-2-releases). To install older versions, see the [7.4.6 documentation](https://redis.io/docs/latest/operate/kubernetes/7.4.6/).
-bannerChildren: true
url: '/operate/kubernetes/7.8.4/upgrade/'
---
diff --git a/content/operate/kubernetes/7.8.6/_index.md b/content/operate/kubernetes/7.8.6/_index.md
new file mode 100644
index 0000000000..73670e91e3
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/_index.md
@@ -0,0 +1,19 @@
+---
+Title: Redis Enterprise for Kubernetes
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: The Redis Enterprise operator allows you to use Redis Enterprise for
+ Kubernetes.
+hideListLinks: false
+linkTitle: 7.8.6
+weight: 50
+bannerText: This documentation applies to version 7.8.6. For documentation on the latest version, see [redis.io/docs/latest/operate/kubernetes/](https://redis.io/docs/latest/operate/kubernetes/).
+bannerChildren: true
+url: '/operate/kubernetes/7.8.6/'
+---
+
+Kubernetes provides enterprise orchestration of containers and has been widely adopted. Redis Enterprise for Kubernetes provides a simple way to get a Redis Enterprise cluster on Kubernetes and enables more complex deployment scenarios.
+
diff --git a/content/operate/kubernetes/7.8.6/active-active/_index.md b/content/operate/kubernetes/7.8.6/active-active/_index.md
new file mode 100644
index 0000000000..51b1e1c61d
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/active-active/_index.md
@@ -0,0 +1,99 @@
+---
+Title: Active-Active databases
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Content related to Active-Active Redis Enterprise databases for Kubernetes.
+hideListLinks: true
+linkTitle: Active-Active databases
+weight: 40
+url: '/operate/kubernetes/7.8.6/active-active/'
+---
+
+On Kubernetes, Redis Enterprise [Active-Active]({{< relref "/operate/rs/databases/active-active/" >}}) databases provide read and write access to the same dataset from different Kubernetes clusters.
+
+## Active-Active setup methods
+
+There are two methods for creating an Active-Active database with Redis Enterprise for Kubernetes:
+
+- The `RedisEnterpriseActiveActiveDatabase` (REAADB) custom resource is available for versions 6.4.2 and later.
+- The `crdb-cli` method is available for versions 6.4.2 or earlier.
+
+
+We recommend creating new Active-Active databases using the RedisEnterpriseActiveActiveDatabase (REAADB) custom resource. This allows you to manage your Active-Active database with the operator and ensures you have the latest features and functionality.
+
+### Active-Active controller method
+
+Versions 6.4.2-6 or later fully support the Active-Active controller. Some of these features were available as a preview in 6.4.2-4 and 6.4.2-5. Upgrade to 6.4.2-6 for the full set of general availability features and bug fixes.
+
+This setup method includes the following steps:
+
+1. Gather REC credentials and [prepare participating clusters]({{< relref "/operate/kubernetes/7.8.6/active-active/prepare-clusters.md" >}}).
+2. Create [`RedisEnterpriseRemoteCluster` (RERC)]({{< relref "/operate/kubernetes/7.8.6/active-active/create-reaadb#create-rerc" >}}) resources.
+3. Create [`RedisEnterpriseActiveActiveDatabase` (REAADB)]({{< relref "/operate/kubernetes/7.8.6/active-active/create-reaadb#create-reaadb" >}}) resource.
+
+### `crdb-cli` method
+
+For versions 6.4.2 or earlier, this Active-Active setup method includes the following steps:
+
+1. Install and configure an ingress.
+2. Gather configuration details.
+3. Add the `ActiveActive` field to the REC spec.
+4. Create the database with the `crdb-cli` tool.
+
+## Redis Enterprise Active-Active controller for Kubernetes
+
+{{}}These features are supported for general availability in releases 6.4.2-6 and later.{{}}
+
+[Active-Active]({{< relref "/operate/rs/databases/active-active/" >}}) databases give you read-and-write access to Redis Enterprise clusters (REC) in different Kubernetes clusters or namespaces. Active-Active deployments managed by the Redis Enterprise operator require two additional custom resources: Redis Enterprise Active-Active database (REAADB) and Redis Enterprise remote cluster (RERC).
+
+To create an Active-Active Redis Enterprise deployment for Kubernetes with these new features, first [prepare participating clusters]({{< relref "/operate/kubernetes/7.8.6/active-active/prepare-clusters.md" >}}) then [create an Active-Active database]({{< relref "/operate/kubernetes/7.8.6/active-active/create-reaadb.md" >}}).
+
+### 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.
+
+For a full list of fields and options, see the [REAADB API reference]({{}}).
+
+### 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]({{}}).
+
+### Limitations
+
+* Existing Redis databases cannot be migrated to a REAADB. (DOC-3594)
+* Admission is not blocking REAADB with `shardCount` which exceeds license quota. (RED-96301)
+ Workaround: Fix the problems with the REAADB and reapply.
+* The `/` value must be unique for each RERC resource. (RED-96302)
+* Only global database options are supported, no support for specifying configuration per location.
+* No support for migration from old (`crdb-cli`) Active-Active database method to new Active-Active controller.
+* No support for REAADB with participating clusters co-located within the same Kubernetes cluster, except for a single designated local participating cluster.
+
+## More information
+
+For more general information about Active-Active, see the [Redis Enterprise Software docs]({{< relref "/operate/rs/databases/active-active/" >}}).
diff --git a/content/operate/kubernetes/7.8.6/active-active/create-aa-crdb-cli.md b/content/operate/kubernetes/7.8.6/active-active/create-aa-crdb-cli.md
new file mode 100644
index 0000000000..5311f54985
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/active-active/create-aa-crdb-cli.md
@@ -0,0 +1,217 @@
+---
+Title: Create Active-Active databases with crdb-cli
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: This section shows how to set up an Active-Active Redis Enterprise database
+ on Kubernetes using the Redis Enterprise Software operator.
+linkTitle: Create Active-Active with crdb-cli
+weight: 99
+url: '/operate/kubernetes/7.8.6/active-active/create-aa-crdb-cli/'
+---
+{{}} Versions 6.4.2 and later support the Active-Active database controller. This controller allows you to create Redis Enterprise Active-Active databases (REAADB) and Redis Enterprise remote clusters (RERC) with custom resources. We recommend using the [REAADB method for creating Active-Active databases]({{< relref "/operate/kubernetes/7.8.6/active-active/create-reaadb.md" >}}).{{}}
+
+On Kubernetes, Redis Enterprise [Active-Active]({{< relref "/operate/rs/databases/active-active/" >}}) databases provide read-and-write access to the same dataset from different Kubernetes clusters. For more general information about Active-Active, see the [Redis Enterprise Software docs]({{< relref "/operate/rs/databases/active-active/" >}}).
+
+Creating an Active-Active database requires routing [network access]({{< relref "/operate/kubernetes/7.8.6/networking/" >}}) between two Redis Enterprise clusters residing in different Kubernetes clusters. Without the proper access configured for each cluster, syncing between the databases instances will fail.
+
+This process consists of:
+
+1. Documenting values to be used in later steps. It's important these values are correct and consistent.
+1. Editing the Redis Enterprise cluster (REC) spec file to include the `ActiveActive` section. This will be slightly different depending on the K8s distribution you are using.
+1. Creating the database with the `crdb-cli` command. These values must match up with values in the REC resource spec.
+
+## Prerequisites
+
+Before creating Active-Active databases, you'll need admin access to two or more working Kubernetes clusters that each have:
+
+- Routing for external access with an [ingress resources]({{< relref "/operate/kubernetes/7.8.6/networking/ingress.md" >}}) (or [route resources]({{< relref "/operate/kubernetes/7.8.6/networking/routes.md" >}}) on OpenShift).
+- A working [Redis Enterprise cluster (REC)]({{< relref "/operate/kubernetes/7.8.6/reference/redis_enterprise_cluster_api" >}}) with a unique name.
+- Enough memory resources available for the database (see [hardware requirements]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md" >}})).
+
+{{}} The `activeActive` field and the `ingressOrRouteSpec` field cannot coexist in the same REC. If you configured your ingress via the `ingressOrRouteSpec` field in the REC, create your Active-Active database with the RedisEnterpriseActiveActiveDatabase (REAADB) custom resource.{{}}
+
+## Document required parameters
+
+The most common mistake when setting up Active-Active databases is incorrect or inconsistent parameter values. The values listed in the resource file must match those used in the crdb-cli command.
+
+- **Database name** ``:
+ - Description: Combined with ingress suffix to create the Active-Active database hostname
+ - Format: string
+ - Example value: `myaadb`
+ - How you get it: you choose
+ - The database name requirements are:
+ - Maximum of 63 characters
+ - Only letter, number, or hyphen (-) characters
+ - Starts with a letter; ends with a letter or digit.
+ - Database name is not case-sensitive
+
+You'll need the following information for each participating Redis Enterprise cluster (REC):
+
+{{}}
+You'll need to create DNS aliases to resolve your API hostname ``,``, `` to the IP address for the ingress controller’s LoadBalancer (or routes in Openshift) for each database. To avoid entering multiple DNS records, you can use a wildcard in your alias (such as *.ijk.example.com).
+{{}}
+
+- **REC hostname** ``:
+ - Description: Hostname used to identify your Redis Enterprise cluster in the `crdb-cli` command. This MUST be different from other participating clusters.
+ - Format: `..svc.cluster.local`
+ - Example value: `rec01.ns01.svc.cluster.local`
+ - How to get it: List all your Redis Enterprise clusters
+ ```bash
+ kubectl get rec
+ ```
+- **API hostname** ``:
+ - Description: Hostname used to access the Redis Enterprise cluster API from outside the K8s cluster
+ - Format: string
+ - Example value: `api.ijk.example.com`
+- **Ingress suffix** ``:
+ - Description: Combined with database name to create the Active-Active database hostname
+ - Format: string
+ - Example value: `-cluster.ijk.example.com`
+- [**REC admin credentials**]({{< relref "/operate/kubernetes/7.8.6/security/manage-rec-credentials.md" >}}) ` `:
+ - Description: Admin username and password for the REC stored in a secret
+ - Format: string
+ - Example value: username: `user@example.com`, password: `something`
+ - How to get them:
+ ```sh
+ kubectl get secret \
+ -o jsonpath='{.data.username}' | base64 --decode
+ kubectl get secret \
+ -o jsonpath='{.data.password}' | base64 --decode
+ ```
+- **Replication hostname** ``:
+ - Description: Hostname used inside the ingress for the database
+ - Format: ``
+ - Example value: `myaadb-cluster.ijk.example.com`
+ - How to get it: Combine `` and ` values you documented above.
+- **Replication endpoint** ``:
+ - Description: Endpoint used externally to contact the database
+ - Format: `:443`
+ - Example value: `myaadb-cluster.ijk.example.com:443`
+ - How to get it:`:443`
+
+## Add `activeActive` section to the REC resource file
+
+From inside your K8s cluster, edit your Redis Enterprise cluster (REC) resource to add the following to the `spec` section. Do this for each participating cluster.
+
+ The operator uses the API hostname (``) to create an ingress to the Redis Enterprise cluster's API; this only happens once per cluster. Every time a new Active-Active database instance is created on this cluster, the operator creates a new ingress route to the database with the ingress suffix (``). The hostname for each new database will be in the format ``.
+
+### Using ingress controller
+
+1. If your cluster uses an [ingress controller]({{< relref "/operate/kubernetes/7.8.6/networking/ingress.md" >}}), add the following to the `spec` section of your REC resource file.
+
+ Nginx:
+
+ ```sh
+ activeActive:
+ apiIngressUrl:
+ dbIngressSuffix:
+ ingressAnnotations:
+ kubernetes.io/ingress.class: nginx
+ nginx.ingress.kubernetes.io/backend-protocol: HTTPS
+ nginx.ingress.kubernetes.io/ssl-passthrough: "true"
+ method: ingress
+ ```
+
+HAproxy:
+
+ ```sh
+ activeActive:
+ apiIngressUrl:
+ dbIngressSuffix:
+ ingressAnnotations:
+ kubernetes.io/ingress.class: haproxy
+ ingress.kubernetes.io/ssl-passthrough: "true"
+ method: ingress
+ ```
+
+2. After the changes are saved and applied, you can verify a new ingress was created for the API.
+
+ ```sh
+ $ kubectl get ingress
+ NAME HOSTS ADDRESS PORTS AGE
+ rec01 api.abc.cde.example.com 225161f845b278-111450635.us.cloud.com 80 24h
+ ```
+
+3. Verify you can access the API from outside the K8s cluster.
+
+ ```sh
+ curl -k -L -i -u : https:///v1/cluster
+ ```
+
+ If the API call fails, create a DNS alias that resolves your API hostname (``) to the IP address for the ingress controller's LoadBalancer.
+
+4. Make sure you have DNS aliases for each database that resolve your API hostname ``,``, `` to the IP address of the ingress controller’s LoadBalancer. To avoid entering multiple DNS records, you can use a wildcard in your alias (such as `*.ijk.example.com`).
+
+#### If using Istio Gateway and VirtualService
+
+No changes are required to the REC spec if you are using [Istio]({{< relref "/operate/kubernetes/7.8.6/networking/istio-ingress.md" >}}) in place of an ingress controller. The `activeActive` section added above creates ingress resources. The two custom resources used to configure Istio (Gateway and VirtualService) replace the need for ingress resources.
+
+{{}}
+These custom resources are not controlled by the operator and you will need to configure and maintain them manually.
+{{}}
+
+For each cluster, verify the VirtualService resource has two `- match:` blocks in the `tls` section. The hostname under `sniHosts:` should match your ``.
+
+### Using OpenShift routes
+
+1. Make sure your Redis Enterprise cluster (REC) has a different name (``) than any other participating clusters. If not, you'll need to manually rename the REC or move it to a different namespace.
+ You can check your new REC name with:
+ ```sh
+ oc get rec -o jsonpath='{.items[0].metadata.name}'
+ ```
+
+ If the rec name was modified, reapply [scc.yaml](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/openshift/scc.yaml) to the namespace to reestablish security privileges.
+
+ ```sh
+ oc apply -f scc.yaml
+ oc adm policy add-scc-to-group redis-enterprise-scc-v2 system:serviceaccounts:
+ ```
+
+ Releases before 6.4.2-6 use the earlier version of the SCC, named `redis-enterprise-scc`.
+
+1. Make sure you have DNS aliases for each database that resolve your API hostname ``,``, `` to the route IP address. To avoid entering multiple DNS records, you can use a wildcard in your alias (such as `*.ijk.example.com`).
+
+1. If your cluster uses [OpenShift routes]({{< relref "/operate/kubernetes/7.8.6/networking/routes.md" >}}), add the following to the `spec` section of your Redis Enterprise cluster (REC) resource file.
+
+ ```sh
+ activeActive:
+ apiIngressUrl:
+ dbIngressSuffix:
+ method: openShiftRoute
+ ```
+
+1. Make sure you have DNS aliases that resolve to the routes IP for both the API hostname (``) and the replication hostname (``) for each database. To avoid entering each database individually, you can use a wildcard in your alias (such as `*.ijk.example.com`).
+
+1. After the changes are saved and applied, you can see that a new route was created for the API.
+
+ ```sh
+ $ oc get route
+ NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
+ rec01 api-openshift.apps.abc.example.com rec01 api passthrough None
+ ```
+
+## Create an Active-Active database with `crdb-cli`
+
+The `crdb-cli` command can be run from any Redis Enterprise pod hosted on any participating K8s cluster. You'll need the values for the [required parameters]({{< relref "/operate/kubernetes/7.8.6/active-active/create-aa-crdb-cli#document-required-parameters" >}}) for each Redis Enterprise cluster.
+
+```sh
+crdb-cli crdb create \
+ --name \
+ --memory-size \
+ --encryption yes \
+ --instance fqdn=,url=https://,username=,password=,replication_endpoint=,replication_tls_sni= \
+ --instance fqdn=,url=https://,username=,password=,replication_endpoint=,replication_tls_sni=
+```
+
+To create a database that syncs between more than two instances, add additional `--instance` arguments.
+
+See the [`crdb-cli` reference]({{< relref "/operate/rs/references/cli-utilities/crdb-cli" >}}) for more options.
+
+## Test your database
+
+The easiest way to test your Active-Active database is to set a key-value pair in one database and retrieve it from the other.
+
+You can connect to your databases with the instructions in [Manage databases]({{< relref "/operate/kubernetes/7.8.6/re-databases/db-controller#connect-to-a-database" >}}). Set a test key with `SET foo bar` in the first database. If your Active-Active deployment is working properly, when connected to your second database, `GET foo` should output `bar`.
diff --git a/content/operate/kubernetes/7.8.6/active-active/create-reaadb.md b/content/operate/kubernetes/7.8.6/active-active/create-reaadb.md
new file mode 100644
index 0000000000..bb77065186
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/active-active/create-reaadb.md
@@ -0,0 +1,174 @@
+---
+Title: Create Active-Active database (REAADB)
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: null
+linkTitle: Create database
+weight: 30
+url: '/operate/kubernetes/7.8.6/active-active/create-reaadb/'
+---
+
+{{}}This feature is supported for general availability in releases 6.4.2-6 and later. Some of these features were available as a preview in 6.4.2-4 and 6.4.2-5. Please upgrade to 6.4.2-6 for the full set of general availability features and bug fixes.{{}}
+
+## Prerequisites
+
+To create an Active-Active database, make sure you've completed all the following steps and have gathered the information listed below each step.
+
+1. Configure the [admission controller and ValidatingWebhook]({{< relref "/operate/kubernetes/7.8.6/deployment/quick-start.md#enable-the-admission-controller/" >}}).
+ {{}}These are installed and enabled by default on clusters created via the OpenShift OperatorHub. {{}}
+
+2. Create two or more [RedisEnterpriseCluster (REC) custom resources]({{< relref "/operate/kubernetes/7.8.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" >}}).
+ * Name of each REC (``)
+ * Namespace for each REC (``)
+
+3. Configure the REC [`ingressOrRoutes` field]({{< relref "/operate/kubernetes/7.8.6/networking/ingressorroutespec.md" >}}) and [create DNS records]({{< relref "/operate/kubernetes/7.8.6/networking/ingressorroutespec#configure-dns/" >}}).
+ * REC API hostname (`api--.`)
+ * Database hostname suffix (`-db--.`)
+
+4. [Prepare participating clusters]({{< relref "/operate/kubernetes/7.8.6/active-active/prepare-clusters.md" >}})
+ * RERC name (`)
+ * RERC secret name (`redis-enterprise-`)
+
+For a list of example values used throughout this article, see the [Example values](#example-values) section.
+
+## Create `RedisEnterpriseRemoteCluster` 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.
+
+ 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]({{}}).
+
+1. Create a Redis Enterprise remote cluster from each RERC custom resource file.
+
+ ```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.
+
+ ```sh
+ kubectl get rerc
+ ```
+
+ The output should look similar to:
+
+ ```sh
+ kubectl get rerc rerc-ohare
+
+ 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.
+
+## Create `RedisEnterpriseActiveActiveDatabase` resource {#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
+
+ 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. {{}}
+
+ 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.
+
+ ```sh
+ kubectl create -f
+ ```
+
+1. Check the status of your RERC. If `STATUS` is `Active` and `SPEC STATUS` is `Valid`, your configurations are correct.
+
+ ```sh
+ kubectl get reaadb
+ ```
+
+ 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
+ ```
+
+
+ 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:
+
+#### 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`
+
diff --git a/content/operate/kubernetes/7.8.6/active-active/edit-clusters.md b/content/operate/kubernetes/7.8.6/active-active/edit-clusters.md
new file mode 100644
index 0000000000..0f9368e3ca
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/active-active/edit-clusters.md
@@ -0,0 +1,158 @@
+---
+Title: Edit participating clusters for Active-Active database
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Steps to add or remove a participating cluster to an existing Active-Active
+ database with Redis Enterprise for Kubernetes.
+linkTitle: Edit participating clusters
+weight: 40
+url: '/operate/kubernetes/7.8.6/active-active/edit-clusters/'
+---
+{{}}This feature is supported for general availability in releases 6.4.2-6 and later. Some of these features were available as a preview in 6.4.2-4 and 6.4.2-5. Please upgrade to 6.4.2-6 for the full set of general availability features and bug fixes. and later.{{}}
+
+## Add a participating cluster
+
+Use the following steps to add a participating cluster to an existing Redis Enterprise Active-Active database (REAADB) for Kubernetes.
+
+### Prerequisites
+
+To prepare the Redis Enterprise cluster (REC) to participate in an Active-Active database, perform the following tasks from [Prepare participating clusters]({{< relref "/operate/kubernetes/7.8.6/active-active/prepare-clusters.md" >}}):
+
+- Make sure the cluster meets the hardware and naming requirements.
+- Enable the Active-Active controllers.
+- Configure external routing.
+- Configure `ValidatingWebhookConfiguration`.
+
+### Collect REC credentials
+
+To communicate with other clusters, all participating clusters need access to the admin credentials for all other clusters.
+
+1. Get the REC credentials secret for the new participating cluster.
+
+ ```sh
+ kubectl get secret -o yaml
+ ```
+
+ This example shows an admin credentials secret for an REC named `rec-boston`:
+
+ ```yaml
+ apiVersion: v1
+ data:
+ password: ABcdef12345
+ username: GHij56789
+ kind: Secret
+ metadata:
+ name: rec-boston
+ type: Opaque
+ ```
+
+1. Create a secret for the new participating cluster named `redis-enterprise-` and add the username and password.
+
+ The example below shows a secret file for a remote cluster named `rerc-logan` .
+
+ ```yaml
+ apiVersion: v1
+ data:
+ password: ABcdef12345
+ username: GHij56789
+ kind: Secret
+ metadata:
+ name: redis-enterprise-rerc-logan
+ type: Opaque
+ ```
+
+1. Apply the file of collected secrets to every participating REC.
+
+ ```sh
+ kubectl apply -f
+ ```
+
+ If the admin credentials for any of the clusters change, update and reapply the file to all clusters.
+
+### Create RERC
+
+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`.
+
+ ```yaml
+ apiVersion: app.redislabs.com/v1alpha1
+ kind: RedisEnterpriseRemoteCluster
+ metadata:
+ name: rerc-logan
+ spec:
+ recName: rec-boston
+ recNamespace: ns-massachusetts
+ apiFqdnUrl: test-example-api-rec-boston-ns-massachusetts.example.com
+ dbFqdnSuffix: -example-cluster-rec-boston-ns-massachusetts.example.com
+ secretName: redis-enterprise-rerc-logan
+ ```
+
+1. Create the RERC custom resource.
+
+ ```sh
+ kubectl create -f
+ ```
+
+1. Check the status of the newly created RERC custom resource.
+
+ ```sh
+ kubectl get rerc
+ ```
+
+ The output should look like this:
+
+ ```sh
+ NAME STATUS SPEC STATUS LOCAL
+ rerc-logan Active Valid true
+ ```
+
+### Edit REAADB spec
+
+1. Patch the REAADB spec to add the new RERC name to the `participatingClusters`, replacing `` and `` with your own values.
+
+ ```sh
+ kubectl patch reaadb < --type merge --patch '{"spec": {"participatingClusters": [{"name": ""}]}}'
+ ```
+
+1. View the REAADB `participatingClusters` status to verify the cluster was added.
+
+ ```sh
+ kubectl get reaadb -o=jsonpath='{.status.participatingClusters}'
+ ```
+
+ The output should look like this:
+
+ ```sh
+ [{"id":1,"name":"rerc-ohare"},{"id":2,"name":"rerc-reagan"},{"id":3,"name":"rerc-logan"}]
+ ```
+
+## Remove a participating cluster
+
+1. On an existing participating cluster,remove the desired cluster from the `participatingCluster` section of the REAADB spec.
+
+ ```sh
+ kubectl edit reaadb
+ ```
+
+1. On each of the other participating clusters, verify the status is `active` and the spec status is `Valid` and the cluster was removed.
+
+ ```sh
+ kubectl get reaadb }}This feature is supported for general availability in releases 6.4.2-6 and later. Some of these features were available as a preview in 6.4.2-4 and 6.4.2-5. Please upgrade to 6.4.2-6 for the full set of general availability features and bug fixes. and later.{{}}
+
+Before a RedisEnterpriseCluster (REC) can participate in an Active-Active database, it needs an accompanying RedisEnterpriseRemoteCluster (RERC) custom resource. The RERC contains details allowing the REC to link to the RedisEnterpriseActiveActiveDatabase (REAADB). The RERC resource is listed in the REAADB resource to become a participating cluster for the Active-Active database.
+
+The RERC controller periodically connects to the local REC endpoint via its external address, to ensure it’s setup correctly. For this to work, the external load balancer must support [NAT hairpinning](https://en.wikipedia.org/wiki/Network_address_translation#NAT_loopback). In some cloud environments, this may involve disabling IP preservation for the load balancer target groups.
+
+For more details, see the [RERC API reference]({{}}).
+
+## Edit RERC
+
+Use the `kubectl patch rerc --type merge --patch` command to patch the local RERC custom resource with your changes. For a full list of available fields, see the [RERC API reference]({{}}).
+
+The following example edits the `dbFqdnSuffix` field for the RERC named `rerc-ohare`.
+
+```sh
+kubectl patch rerc rerc-ohare --type merge --patch \
+'{"spec":{"dbFqdnSuffix": "-example2-cluster-rec-chicago-ns-illinois.example.com"}}'
+```
+
+## Update RERC secret
+
+If the credentials are changed or updated for a REC participating cluster, you need to manually edit the RERC secret and apply it to all participating clusters.
+
+1. On the local cluster, update the secret with new credentials and name it with the following convention: `redis-enterprise-`.
+
+ A secret for a remote cluster named `rerc-ohare` would be similar to the following:
+
+ ```yaml
+ apiVersion: v1
+ data:
+ password: PHNvbWUgcGFzc3dvcmQ+
+ username: PHNvbWUgdXNlcj4
+ kind: Secret
+ metadata:
+ name: redis-enterprise-rerc-ohare
+ type: Opaque
+ ```
+
+1. Apply the file.
+
+ ```sh
+ kubectl apply -f
+ ```
+
+1. Watch the RERC to verify the status is "Active" and the spec status is "Valid."
+
+ ```sh
+ kubectl get rerc
+ ```
+
+ The output should look like this:
+
+ ```sh
+ NAME STATUS SPEC STATUS LOCAL
+ rerc-ohare Active Valid true
+ ```
+
+ To troubleshoot invalid configurations, view the RERC custom resource events and the [Redis Enterprise operator logs]({{< relref "/operate/kubernetes/7.8.6/logs/" >}}).
+
+1. Verify the status of each REAADB using that RERC is "Active" and the spec status is "Valid."
+
+ ```sh
+ kubectl get reaadb reaadb-boeing
+
+ 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/7.8.6/logs/" >}}).
+
+1. Repeat the above steps on all other participating clusters.
diff --git a/content/operate/kubernetes/7.8.6/active-active/global-config.md b/content/operate/kubernetes/7.8.6/active-active/global-config.md
new file mode 100644
index 0000000000..98b531aea7
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/active-active/global-config.md
@@ -0,0 +1,107 @@
+---
+Title: Set global database configurations
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: The REAADB contains the field '.spec.globalConfigurations'. Use
+ this to set the database configurations.
+linkTitle: Global configuration
+weight: 50
+url: '/operate/kubernetes/7.8.6/active-active/global-config/'
+---
+{{}}This feature is supported for general availability in releases 6.4.2-6 and later. Some of these features were available as a preview in 6.4.2-4 and 6.4.2-5. Please upgrade to 6.4.2-6 for the full set of general availability features and bug fixes.{{}}
+
+The Redis Enterprise Active-Active database (REAADB) custom resource contains the field `.spec.globalConfigurations`. This field sets configurations for the Active-Active database across all participating clusters, such as memory size, shard count, and the global database secrets.
+
+The [REAADB API reference]({{}}) contains a full list of available fields.
+
+## Edit global configurations
+
+1. Edit or patch the REAADB custom resource with your global configuration changes.
+
+ The example command below patches the REAADB named `reaadb-boeing` to set the global memory size to 200MB:
+
+ ```sh
+ kubectl patch reaadb reaadb-boeing --type merge --patch \
+ '{"spec": {"globalConfigurations": {"memorySize": "200mb"}}}'
+ ```
+
+1. Verify the status is `active` and the spec status is `Valid`.
+
+ This example shows the status for the `reaadb-boeing` database.
+
+ ```sh
+ kubectl get reaadb reaadb-boeing
+
+ NAME STATUS SPEC STATUS GLOBAL CONFIGURATIONS REDB LINKED REDBS
+ reaadb-boeing active Valid
+ ```
+
+1. View the global configurations on each participating cluster to verify they are synced.
+
+ ```sh
+ kubectl get reaadb -o yaml
+ ```
+
+## Edit global configuration secrets
+
+This section edits the secrets under the REAADB `.spec.globalConfigurations` section. For more information and all available fields, see the [REAADB API reference]({{}}).
+
+
+1. On an existing participating cluster, generate a YAML file containing the database secret with the relevant data.
+
+ This example shoes a secret named `my-db-secret` with the password `my-password` encoded in base 64.
+
+ ```yaml
+ apiVersion: v1
+ data:
+ password: bXktcGFzcw
+ kind: Secret
+ metadata:
+ name: my-db-secret
+ type: Opaque
+ ```
+
+1. Apply the secret file from the previous step, substituting your own value for ``.
+
+ ```sh
+ kubectl apply -f
+ ```
+
+1. Patch the REAADB custom resource to specify the database secret, substituting your own values for `` and ``.
+
+ ```sh
+ kubectl patch reaadb --type merge --patch \
+ '{"spec": {"globalConfigurations": {"databaseSecretName": "secret-name"}}}'
+ ```
+
+1. Check the REAADB status for an `active` status and `Valid` spec status.
+
+ ```sh
+ kubectl get reaadb
+
+ NAME STATUS SPEC STATUS GLOBAL CONFIGURATIONS REDB LINKED REDBS
+ reaadb-boeing active Valid
+ ```
+
+1. On each other participating cluster, check the secret status.
+
+ ``sh
+ kubectl get reaadb -o=jsonpath='{.status.secretsStatus}'
+ ```
+
+ The output should show the status as `Invalid`.
+
+ ```sh
+ [{"name":"my-db-secret","status":"Invalid"}]
+ ```
+
+1. Sync the secret on each participating cluster.
+
+ ```sh
+ kubectl apply -f
+ ```
+
+1. Repeat the previous two steps on every participating cluster.
diff --git a/content/operate/kubernetes/7.8.6/active-active/global-db-secret.md b/content/operate/kubernetes/7.8.6/active-active/global-db-secret.md
new file mode 100644
index 0000000000..a1d77d7a61
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/active-active/global-db-secret.md
@@ -0,0 +1,76 @@
+---
+Title: Set global database secret
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: The REAADB contains the field '.spec.globalConfigurations' to set the
+ global database secret.
+linkTitle: Global database secret
+weight: 50
+url: '/operate/kubernetes/7.8.6/active-active/global-db-secret/'
+---
+{{}}This feature is supported for general availability in releases 6.4.2-6 and later. Some of these features were available as a preview in 6.4.2-4 and 6.4.2-5. Please upgrade to 6.4.2-6 for the full set of general availability features and bug fixes.{{}}
+
+## Set global database secret
+
+One of the fields available for `globalConfigurations` is `databaseSecretName` which can point to a secret containing the database password. To set the database secret name and sync the data to all participating clusters, follow the steps below.
+
+To edit other global configruations, see [global configuration]({{< relref "/operate/kubernetes/7.8.6/active-active/global-config.md" >}})
+
+1. On an existing participating cluster, generate a YAML file containing the database secret with the database password.
+
+ This example shoes a secret named `my-db-secret` with the password `my-password` encoded in base 64.
+
+ ```yaml
+ apiVersion: v1
+ data:
+ password: bXktcGFzcw
+ kind: Secret
+ metadata:
+ name: my-db-secret
+ type: Opaque
+ ```
+
+1. Apply the secret file from the previous step, substituting your own value for ``.
+
+ ```sh
+ kubectl apply -f
+ ```
+
+1. Patch the REAADB custom resource to specify the database secret, substituting your own values for `` and ``.
+
+ ```sh
+ kubectl patch reaadb --type merge --patch \
+ '{"spec": {"globalConfigurations": {"databaseSecretName": "secret-name"}}}'
+ ```
+
+1. Check the REAADB status for an `active` status and `Valid` spec status.
+
+ ```sh
+ kubectl get reaadb
+
+ NAME STATUS SPEC STATUS GLOBAL CONFIGURATIONS REDB LINKED REDBS
+ example-aadb-1 active Valid
+ ```
+
+1. On each other participating cluster, check the secret status.
+
+ ``sh
+ kubectl get reaadb -o=jsonpath='{.status.secretsStatus}'
+ ```
+
+ The output should show the status as `Invalid`.
+
+ ```sh
+ [{"name":"my-db-secret","status":"Invalid"}]
+ ```
+
+1. Sync the secret on each participating cluster.
+
+ ```sh
+ kubectl apply -f
+ ```
+
+1. Repeat the previous two steps on every participating cluster.
diff --git a/content/operate/kubernetes/7.8.6/active-active/prepare-clusters.md b/content/operate/kubernetes/7.8.6/active-active/prepare-clusters.md
new file mode 100644
index 0000000000..dfd75e2de0
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/active-active/prepare-clusters.md
@@ -0,0 +1,166 @@
+---
+Title: Prepare participating clusters
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Prepare your participating RECs to be part of an Active-Active database
+ deployment.
+linkTitle: Prepare clusters
+weight: 10
+url: '/operate/kubernetes/7.8.6/active-active/prepare-clusters/'
+---
+
+{{}}This feature is supported for general availability in releases 6.4.2-6 and later. Some of these features were available as a preview in 6.4.2-4 and 6.4.2-5. Please upgrade to 6.4.2-6 for the full set of general availability features and bug fixes.{{}}
+
+## 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.
+
+1. Configure the [admission controller and ValidatingWebhook]({{< relref "/operate/kubernetes/7.8.6/deployment/quick-start.md#enable-the-admission-controller/" >}}).
+
+2. Create two or more [RedisEnterpriseCluster (REC) custom resources]({{< relref "/operate/kubernetes/7.8.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" >}}).
+ * Name of each REC (``)
+ * Namespace for each REC (``)
+
+3. Configure the REC [`ingressOrRoutes` field]({{< relref "/operate/kubernetes/7.8.6/networking/ingressorroutespec.md" >}}) and [create DNS records]({{< relref "/operate/kubernetes/7.8.6/networking/ingressorroutespec#configure-dns/" >}}).
+ * REC API hostname (`api--.`)
+ * Database hostname suffix (`-db--.`)
+
+Next you'll [collect credentials](#collect-rec-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](#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.
+
+1. Create a file to hold the admin credentials for all participating RECs (such as `all-rec-secrets.yaml`).
+
+1. Within that file, create a new secret for each participating cluster named `redis-enterprise-`.
+
+ The example below shows a file (`all-rec-secrets.yaml`) holding secrets for two participating clusters:
+
+ ```yaml
+ 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
+
+ ```
+
+1. Get the REC credentials secret for each participating cluster.
+
+ ```sh
+ kubectl get secret -o yaml
+ ```
+
+ The admin credentials secret for an REC named `rec-chicago` would be similar to this:
+
+ ```yaml
+ apiVersion: v1
+ data:
+ password: ABcdef12345
+ username: GHij56789
+ kind: Secret
+ metadata:
+ name: rec-chicago
+ type: Opaque
+ ```
+
+1. 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`).
+
+ ```yaml
+ 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
+
+ ```
+
+1. Apply the file of collected secrets to every participating REC.
+
+ ```sh
+ kubectl apply -f
+ ```
+
+ 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]({{< relref "/operate/kubernetes/7.8.6/active-active/create-reaadb.md" >}}).
+
+## 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`
diff --git a/content/operate/kubernetes/7.8.6/architecture/_index.md b/content/operate/kubernetes/7.8.6/architecture/_index.md
new file mode 100644
index 0000000000..8ae31f61c8
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/architecture/_index.md
@@ -0,0 +1,159 @@
+---
+Title: Redis Enterprise for Kubernetes architecture
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Overview of the architecture and components of Redis Enterprise for Kubernetes.
+hideListLinks: true
+linkTitle: Architecture
+weight: 1
+url: '/operate/kubernetes/7.8.6/architecture/'
+---
+
+Redis Enterprise for Kubernetes gives you the speed and durability of [Redis Enterprise](https://redis.io/redis-enterprise/advantages/), with the flexibility and ease of [Kubernetes (K8s)](https://kubernetes.io/). Redis Enterprise for Kubernetes uses the Kubernetes operator pattern and custom controllers to bring the best of Redis Enterprise to the Kubernetes platform.
+
+## Lifecycle
+
+Kubernetes is a rapidly evolving platform with a short release cycle (around 4 months). This frequent influx of new features, enhancements and bug fixes means Kubernetes distributions move in and out of support quickly. Redis Enterprise is also a fast-moving product, and is compatible and tested only on distributions listed as [supported distributions.]({{}})
+
+Each version of Redis Enterprise for Kubernetes is tested to ensure the version of Redis Enterprise works with the [supported Kubernetes distributions]({{}}) at the time. Both the Kubernetes version and the Redis Enterprise version must be supported for the operator to function correctly. We encourage you to upgrade Redis Enterprise for Kubernetes frequently, not only to get the benefit of enhancements and bug fixes, but to keep your software supported.
+
+Supported platforms are listed in the [release notes]({{}}) and in the [supported platforms reference.]({{}})
+
+## Architecture
+
+The image below illustrates the components of a single namespace, three node deployment.
+
+{{< image filename="/images/k8s/k8s-arch-v4.png" >}}
+
+## Operator
+
+An [operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) is a custom extension of the Kubernetes API designed to manage complex, stateful applications and their components. This operator pattern is commonly used by databases and other applications to extend the cluster's behavior without changing its underlying code. Kubernetes.io/docs has a great explanation of the [operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/).
+
+The operator is a deployment that runs within a [namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) and uses [controllers](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#custom-controllers) to manage [custom resources (CRs)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/), ensuring these resources are continuously monitored and maintained.
+
+When the operator is installed, the following resources are created:
+
+- [service account](https://kubernetes.io/docs/concepts/security/service-accounts/) under which the operator will run
+- set of [roles](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#role-and-clusterrole) to define the privileges necessary for the operator to perform its tasks
+- set of [role bindings](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#rolebinding-and-clusterrolebinding) to authorize the service account
+- [CustomResourceDefinition (CRD)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions) for each Redis Enterprise custom resource
+- the operator deployment
+
+## Namespace
+
+The Redis Enterprise [operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) is deployed within a [namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/). Each namespace can host only one operator and one [RedisEnterpriseCluster (REC)](#redisenterprisecluster-rec). Namespaces create logical boundaries between resources, allowing organization and security. Some resources are limited to a namespace, while others are cluster-wide.
+
+Redis Enterprise for Kubernetes also supports [multi-namespace deployments]({{}}), meaning the operator can monitor other namespaces (that host applications) for custom resources and apply any changes.
+
+## Custom resources
+
+Kubernetes [custom resources (CRs)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) are commonly used by databases and other applications to extend the cluster's behavior without changing its underlying code. [Custom resources (CRs)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) extend the Kubernetes API, enabling users to manage Redis databases the Kubernetes way. Custom resources are created and managed using YAML configuration files.
+
+This [declarative configuration approach](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/) allows you to specify the desired state for your resources, and the operator makes the necessary changes to achieve that state. This simplifies [installation]({{}}), [upgrades]({{}}), and [scaling]({{}}) both vertically and horizontally.
+
+The operator continuously monitors CRs for changes, automatically reconciling any differences between the desired state you specified in your YAML configuration file, and the actual state of your resources. Custom resources can also reside in separate namespaces from the operator managing them, such as in [multi-namespace installations]({{}}).
+
+## Custom resource definitions
+
+A [custom resource definition (CRD)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions) is a cluster-wide resource that specifies which settings can be configured via custom resource files. Any setting not defined by the CRD is not managed by the operator. You can still make changes to these unmanaged settings using standard Redis Enterprise Software methods.
+
+For settings managed by the operator, any changes made outside of the CR YAML files (e.g., through the management UI) will be overwritten by the operator. Ensure that all operator-managed settings are updated using the CR YAML files to prevent conflicts.
+
+## RedisEnterpriseCluster REC
+
+A Redis Enterprise cluster is a set of Redis Enterprise nodes pooling resources. Each node is capable of running multiple Redis instances ([shards]({{}})).
+
+{{< image filename="/images/k8s/k8s-node-arch.png">}}
+
+A Redis cluster is created and managed by the [RedisEnterpriseCluster (REC)]({{}}) [custom resource](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/). Changes to the REC configuration file prompt the operator to make changes to the cluster. The REC is required for both standard databases ([REDB](#redisenterprisedatabase-redb)) and Active-Active databases ([REAADB](#redisenterpriseactiveactivedatabase-reaadb)).
+
+See the [RedisEnterpriseCluster API Reference]({{}}) for a full list of fields and settings.
+
+## RedisEnterpriseDatabase REDB
+
+A Redis Enterprise database is a logical entity that manages your entire dataset across multiple Redis instances. A Redis instance is a single-threaded database process ([commonly referred to as a shard]({{}})).
+
+Redis databases are created and managed by the [RedisEnterpriseDatabase (REDB)]({{}}) [custom resource (CR)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/). Changes to the REDB YAML configuration file prompt the operator to make changes to the database.
+
+An operator can manage a database in the same namespace, or a different namespace. See ["Flexible deployment"]({{}}) options and ["Manage databases in multiple namespaces"]({{}}) for more information.
+
+See the [RedisEnterpriseDatabase (REDB) API Reference]({{}}) for a full list of fields and settings.
+
+## Security
+
+Redis Enterprise for Kubernetes uses [secrets](https://kubernetes.io/docs/concepts/configuration/secret/) to manage your cluster credentials, cluster certificates, and client certificates. You can configure [LDAP]({{}}) and [internode encryption]({{}}) using the [RedisEnterpriseCluster (REC)](#redisenterprisecluster-rec) spec.
+
+### REC credentials
+
+Redis Enterprise for Kubernetes uses the [RedisEnterpriseCluster (REC)]({{}}) [custom resource](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) to create a Redis Enterprise cluster. During creation it generates random credentials for the operator to use. The credentials are saved in a Kubernetes (K8s) [secret](https://kubernetes.io/docs/concepts/configuration/secret/). The secret name defaults to the name of the cluster.
+
+See [Manage REC credentials]({{}}) for more details.
+
+### REC certificates
+
+By default, Redis Enterprise Software for Kubernetes generates TLS certificates for the cluster during creation. These self-signed certificates are generated on the first node of each Redis Enterprise cluster (REC) and are copied to all other nodes in the cluster.
+
+See [Manage REC certificates]({{}}) for more details.
+
+### Client certificates
+
+For each client certificate you want to use, you need to create a [Kubernetes secret](https://kubernetes.io/docs/concepts/configuration/secret/) to hold it. You can then reference that secret in your [Redis Enterprise database (REDB)](#redisenterprisedatabase-redb) custom resource.
+
+See [Add client certificates]({{}}) for more details.
+
+## Storage
+
+[Persistent storage is mandatory for Redis Enterprise.]({{}}) Redis Enterprise for Kubernetes [requires network-attached storage](https://en.wikipedia.org/wiki/Network-attached_storage).
+
+Redis Enterprise for Kubernetes uses [PersistentVolumeClaims (PVC)](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims) to manage storage resources. The PVC is an abstract representation of the [PersistentVolume (PV)](https://kubernetes.io/docs/concepts/storage/persistent-volumes) resources used by your Redis pods. PVCs are created by the Redis Enterprise operator and used by the [RedisEnterpriseCluster (REC)](#redisenterprisecluster-rec).
+
+PVCs are created with a specific size and [can be expanded](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims), if the underlying [storage class](https://kubernetes.io/docs/concepts/storage/storage-classes/) supports it.
+
+### Auto Tiering
+
+Redis Enterprise Software for Kubernetes supports [Auto Tiering]({{}}) (previously known as Redis on Flash), which extends your node memory to use both RAM and flash storage. SSDs (solid state drives) can store infrequently used (warm) values while your keys and frequently used (hot) values are still stored in RAM. This improves performance and lowers costs for large datasets.
+
+NVMe (non-volatile memory express) SSDs are strongly recommended to achieve the best performance.
+
+## Networking
+
+By default, Kubernetes doesn't allow you to access your Redis database from outside your K8s cluster. Redis Enterprise for Kubernetes supports several ways to route external traffic to your [Redis Enterprise cluster (REC)](#redisenterprisecluster-rec):
+
+- Ingress controllers [HAProxy](https://haproxy-ingress.github.io/) and [NGINX](https://kubernetes.github.io/ingress-nginx/) require an `ingress` API resource.
+- [Istio](https://istio.io/latest/docs/setup/getting-started/) requires `Gateway` and `VirtualService` API resources.
+- OpenShift uses [routes]({{< relref "/operate/kubernetes/7.8.6/networking/routes.md" >}}) to route external traffic.
+
+The [Active-Active databases](#active-active-databases) require one of above routing methods to be configured in the REC with the [ingressOrRouteSpec field]({{}}).
+
+## Services Rigger
+
+The services rigger is responsible for creating and updating services related to database objects. It identifies database objects within the cluster and creates services in accordance with [`redisEnterpriseCluster.Spec.servicesRiggerSpec` setting]({{}}) to allow access to those databases. By default, each database has two services, a `cluster_ip` Service with the same name as the database and a `headless` Service with the same name as the database suffixed with `-headless`. It also creates other types of Services such as Ingress Services or OpenshiftRoutes (defined in `redisEnterpriseCluster.Spec.ingressOrRouteSpec`) meant to provide access to REAADB objects.
+
+You can view a list of services with the `kubectl get services` command.
+
+Kubernetes is a dynamic environment, with nodes and pods changing as needed. The services rigger monitors the cluster for these changes and updates the database services to ensure reliable communication with the databases.
+
+## Active-Active databases
+
+On Kubernetes, Redis Enterprise [Active-Active]({{< relref "/operate/rs/databases/active-active/" >}}) databases provide read and write access to the same dataset from different Kubernetes clusters. Creating an Active-Active database requires routing [network access]({{< relref "/operate/kubernetes/7.8.6/networking/" >}}) between two Redis Enterprise clusters residing in different Kubernetes clusters. Without the proper access configured for each cluster, syncing between the databases instances will fail.The admission controller is also required for Active-Active databases on Kubernetes, to validate changes to the custom resources.
+
+For more details and installation information, see [Active-Active databases]({{}}). For more general information about Active-Active, see the [Redis Enterprise Software docs]({{< relref "/operate/rs/databases/active-active/" >}}).
+
+## RedisEnterpriseRemoteCluster RERC
+
+The [RedisEnterpriseRemoteCluster (RERC)]({{}}) contains details allowing the REC to link to the RedisEnterpriseActiveActiveDatabase (REAADB). The RERC resource is listed in the [REAADB](#redisenterpriseactiveactivedatabase-reaadb) resource to become a participating cluster for the Active-Active database.
+
+See the [RERC API reference]({{}}) for a full list of fields and settings.
+
+## RedisEnterpriseActiveActiveDatabase REAADB
+
+The RedisEnterpriseActiveActiveDatabase (REAADB) resource creates and manages a database that spans more than one Kubernetes cluster. An REAADB requires [external routing](#networking), at least two [RECs](#redisenterprisecluster-rec), and at least two [RERCs](#redisenterpriseremotecluster-rerc).
+
+See the [REAADB API reference]({{}}) for a full list of fields and settings.
+
+## Metrics
+
+To collect metrics data from your databases and Redis Enterprise cluster (REC), you can [connect your Prometheus]({{}}) server to an endpoint exposed on your REC. Redis Enterprise for Kubernetes creates a dedicated service to expose the `prometheus` port (8070) for data collection. A custom resource called `ServiceMonitor` allows the [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator/tree/main/Documentation) to connect to this port and collect data from Redis Enterprise.
diff --git a/content/operate/kubernetes/7.8.6/architecture/deployment-options.md b/content/operate/kubernetes/7.8.6/architecture/deployment-options.md
new file mode 100644
index 0000000000..627de49f0a
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/architecture/deployment-options.md
@@ -0,0 +1,57 @@
+---
+Title: Flexible deployment options
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Redis Enterprise for Kubernetes allows you to deploy to multiple namespaces.
+ This article describes flexible deployment options you can use to meet your specific
+ needs.
+linkTitle: Deployment options
+url: '/operate/kubernetes/7.8.6/architecture/deployment-options/'
+---
+You can deploy Redis Enterprise for Kubernetes in several different ways depending on your database needs.
+
+Multiple RedisEnterpriseDatabase (REDB) resources can be associated with a single Redis Enterprise cluster resource (REC) even if they reside in different namespaces.
+
+The Redis Enterprise cluster (REC) custom resource must reside in the same namespace as the Redis Enterprise operator.
+
+{{}} Multi-namespace installations don't support Active-Active databases (REEADB). Only databases created with the REDB resource are supported in multi-namespace deployments at this time.{{}}
+
+## Single REC and single namespace (one-to-one)
+
+The standard and simplest deployment deploys your Redis Enterprise databases (REDB) in the same namespace as the Redis Enterprise cluster (REC). No additional configuration is required for this, since there is no communication required to cross namespaces. See [Deploy Redis Enterprise for Kubernetes]({{< relref "/operate/kubernetes/7.8.6/deployment/quick-start.md" >}}).
+
+{{< image filename="/images/k8s/k8s-deploy-one-to-one.png" >}}
+
+## Single REC and multiple namespaces (one-to-many)
+
+Multiple Redis Enterprise databases (REDB) spread across multiple namespaces within the same K8s cluster can be associated with the same Redis Enterprise cluster (REC). See [Manage databases in multiple namespaces]({{< relref "/operate/kubernetes/7.8.6/re-clusters/multi-namespace.md" >}}) for more information.
+
+{{< image filename="/images/k8s/k8s-deploy-one-to-many.png" >}}
+
+## Multiple RECs and multiple namespaces (many-to-many)
+
+A single Kubernetes cluster can contain multiple Redis Enterprise clusters (REC), as long as they reside in different namespaces. Each namespace can host only one REC and each operator can only manage one REC.
+
+You have the flexibility to create databases in separate namespaces, or in the same namespace as the REC, or combine any of the supported deployment options above. This configuration is geared towards use cases that require multiple Redis Enterprise clusters with greater isolation or different cluster configurations.
+
+See [Manage databases in multiple namespaces]({{< relref "/operate/kubernetes/7.8.6/re-clusters/multi-namespace.md" >}}) for more information.
+
+
+{{< image filename="/images/k8s/k8s-deploy-many-to-many.png" >}}
+
+## Unsupported deployment patterns
+
+### Cross-cluster operations
+
+Redis Enterprise for Kubernetes does not support operations that cross Kubernetes clusters. Redis Enterprise clusters (REC) work inside a single K8s cluster. Crossing clusters could result in functional and security issues.
+
+{{< image filename="/images/k8s/k8s-deploy-cross-namespaces.png" >}}
+
+### Multiple RECs in one namespace
+
+Redis Enterprise for Kubernetes does not support multiple Redis Enterprise clusters (REC) in the same namespace. Creating more than one REC in the same namespace will result in errors.
+
+{{< image filename="/images/k8s/k8s-deploy-multicluster-antipattern.png" >}}
diff --git a/content/operate/kubernetes/7.8.6/deployment/_index.md b/content/operate/kubernetes/7.8.6/deployment/_index.md
new file mode 100644
index 0000000000..eb1cfea891
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/deployment/_index.md
@@ -0,0 +1,23 @@
+---
+Title: Deployment
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: This section lists the different ways to set up and run Redis Enterprise
+ for Kubernetes. You can deploy on variety of Kubernetes distributions both on-prem
+ and in the cloud via our Redis Enterprise operator for Kubernetes.
+hideListLinks: false
+linkTitle: Deployment
+weight: 11
+url: '/operate/kubernetes/7.8.6/deployment/'
+---
+
+This section lists the different ways to set up and run Redis Enterprise for Kubernetes. You can deploy on variety of Kubernetes distributions both on-prem and in the cloud via our Redis Enterprise operator for Kubernetes.
+
+## Compatibility
+
+Before installing, check [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/7.8.6/reference/supported_k8s_distributions" >}}) to see which Redis Enterprise operator version supports your Kubernetes distribution.
+
+
diff --git a/content/operate/kubernetes/7.8.6/deployment/container-images.md b/content/operate/kubernetes/7.8.6/deployment/container-images.md
new file mode 100644
index 0000000000..99ec81fd04
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/deployment/container-images.md
@@ -0,0 +1,254 @@
+---
+Title: Use a private registry for container images
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: This section details how the Redis Enterprise Software and Kubernetes
+ operator images can be configured to be pulled from a variety of sources. This page
+ describes how to configure alternate private repositories for images, plus some
+ techniques for handling public repositories with rate limiting.
+linktitle: Use a private container registry
+weight: 92
+url: '/operate/kubernetes/7.8.6/deployment/container-images/'
+---
+
+Redis Enterprise Software, its Kubernetes operator, and the Service Rigger
+are all distributed as separate container images.
+Your Kubernetes deployment will pull these images as needed.
+ You can control where these images are
+pulled from within the operator deployment and also via the
+Redis Enterprise custom resources.
+
+In general, images for deployments that do not have a registry domain
+name (e.g., `gcr.io` or `localhost:5000`) are pulled from the default registry associated
+with the Kubernetes cluster. A plain reference to `redislabs/redis` will likely pull from DockerHub
+(except on OpenShift where it pulls from Red Hat).
+
+For security reasons (e.g., in air-gapped environments), you may want to pull the images
+from a public registry once and then push them to a private registry under
+your control.
+
+{{}}It is very important that the images you are pushing to the private registry have the same exact version tag as the original images. {{}}
+
+Furthermore, because [Docker rate limits public pulls](https://www.docker.com/blog/scaling-docker-to-serve-millions-more-developers-network-egress/),
+you may want to consider pulling images from a
+private registry to avoid deployment failures when you hit your DockerHub rate limit.
+
+The information below will help you track and configure where your deployments pull container images.
+
+{{< note >}}
+**IMPORTANT**
+* Each version of the Redis Enterprise operator is mapped to a specific version of Redis Enterprise Software. The semantic versions always match (for example, 7.2.4), although the specific release numbers may be different (for example, 7.2.4-7 is the operator version for Redis Enterprise Software 7.2.4-64).
+* A specific operator version only supports a specific Redis Enterprise version. Other combinations of operator and Redis Enterprise versions are **not supported**.
+{{< /note >}}
+
+
+## Find container sources
+
+Every pod in your deployed application has a source registry. Any image not prefixed by a registry domain name (e.g., "gcr.io") will pull from the default registry for the Kubernetes cluster (i.e., DockerHub). You can use the commands below to discover the pull sources for the images on your cluster.
+
+To list all the images used by your cluster:
+
+```sh
+kubectl get pods --all-namespaces -o jsonpath="{..image}" |tr -s '[[:space:]]' '\n' | uniq -c
+```
+
+To specifically determine the pull source for the Redis Enterprise operator itself, run the following command:
+
+```sh
+kubectl get pods --all-namespaces -o jsonpath="{..image}" |tr -s '[[:space:]]' '\n' | uniq -c | grep redislabs
+```
+
+You can limit this command to specific namespaces by replacing the `--all-namespaces` parameter with
+a set of `-n {namespace}` parameters, where each `{namespace}` is a specific
+namespace of interest on your cluster.
+
+## Create a private container registry
+
+You can set up a private container registry in a couple of ways:
+
+* On-premise via [Docker registry](https://docs.docker.com/registry/deploying/), [Red Hat Quay](https://www.redhat.com/en/technologies/cloud-computing/quay), or other providers
+* Cloud provider based registries (e.g., Azure Container Registry, Google Container Registry, etc.).
+
+Once you have set up a private container registry, you will identify the container registry using:
+
+* A domain name
+* A port (optional)
+* A repository path (optional)
+
+## Push images to a private container registry
+
+Important images for a Redis Enterprise Software deployment include:
+
+* Redis Enterprise Software
+* Bootstrapping a Redis Enterprise cluster node (in the operator image)
+* The Service Rigger
+* The Redis Enterprise Software operator
+
+You will need to push all these images to your private container registry. In general,
+to push the images you must:
+
+ 1. [Pull](https://docs.docker.com/engine/reference/commandline/pull/) the various images locally for the Redis Enterprise Software, the Service Rigger, and the operator.
+ 2. Tag the local images with the private container registry, repository, and version tag.
+ 3. [Push](https://docs.docker.com/engine/reference/commandline/push/) the newly tagged images.
+
+The example below shows the commands for pushing the images for Redis Enterprise Software and its operator to a private container registry:
+
+```sh
+PRIVATE_REPO=...your repo...
+RS_VERSION=7.2.4-64
+OPERATOR_VERSION=7.2.4-7
+docker pull redislabs/redis:${RS_VERSION}
+docker pull redislabs/operator:${OPERATOR_VERSION}
+docker pull redislabs/k8s-controller:${OPERATOR_VERSION}
+docker tag redislabs/redis:${RS_VERSION} ${PRIVATE_REPO}/redislabs/redis:${RS_VERSION}
+docker tag redislabs/operator:${OPERATOR_VERSION} ${PRIVATE_REPO}/redislabs/operator:${OPERATOR_VERSION}
+docker tag redislabs/k8s-controller:${OPERATOR_VERSION} ${PRIVATE_REPO}/redislabs/k8s-controller:${OPERATOR_VERSION}
+docker push ${PRIVATE_REPO}/redislabs/redis:${RS_VERSION}
+docker push ${PRIVATE_REPO}/redislabs/operator:${OPERATOR_VERSION}
+docker push ${PRIVATE_REPO}/redislabs/k8s-controller:${OPERATOR_VERSION}
+```
+
+## Configure deployments to use a private container registry
+
+Once you push your images to your private container registry, you need to
+configure your deployments to use that registry for Redis Enterprise Software and operator
+deployments. The operator container image is configured directly by the operator deployment
+bundle. The Redis Enterprise cluster pod (RS and bootstrapper) and Service Rigger
+images are configured in the Redis Enterprise custom resource.
+
+Depending on your Kubernetes platform, your private container registry may
+require authentication. If you do need authentication, add a [pull secret](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) to your namespace. Then you'll need to configure Kubernetes and the operator to use the pull secret. The two following sections have examples of adding the `imagePullSecrets` to the operator deployment and `pullSecrets` to the cluster custom resource.
+
+### Specify the operator image source
+
+The operator bundle contains the operator deployment and the reference to the operator image (`redislabs/operator`). To use a private container registry, you must
+change this image reference in your operator deployment file **before** you deploy the operator. If you apply this change to modify an existing operator deployment, the operator's pod will restart.
+
+In the operator deployment file, 'containers:image' should point to the same repository and tag you used when [pushing]({{< relref "/operate/kubernetes/7.8.6/deployment/container-images.md#push-images-to-a-private-container-registry" >}}) to the private container registry:
+
+```sh
+${PRIVATE_REPO}/redislabs/operator:${OPERATOR_VERSION}
+```
+
+The example below specifies a 7.2.4-7 operator image in a Google Container Registry:
+
+```YAML
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: redis-enterprise-operator
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ name: redis-enterprise-operator
+ template:
+ metadata:
+ labels:
+ name: redis-enterprise-operator
+ spec:
+ serviceAccountName: redis-enterprise-operator
+ containers:
+ - name: redis-enterprise-operator
+ image: gcr.io/yourproject/redislabs/operator:7.2.4-7
+...
+```
+
+If your container registry requires a pull secret, configure `imagePullSecrets` on the operator deployment:
+
+```YAML
+spec:
+ template:
+ spec:
+ imagePullSecrets:
+ - name: regcred
+```
+
+### Specify the Redis Enterprise cluster images source
+
+A Redis Enterprise cluster managed by the operator consists of three
+container images:
+
+* **`redislabs/redis`**: the Redis Enterprise Software container image
+* **`redislabs/operator`**: the bootstrapper is packaged within the operator container image
+* **`redislabs/k8s-controller`**: the Service Rigger container image
+
+By default, a new Redis Enterprise cluster is created using the
+container images listed above. These container images are pulled from the K8s cluster's default
+container registry.
+
+To [pull](https://docs.docker.com/engine/reference/commandline/pull/) the Redis Enterprise container images from
+a private container registry, you must specify them in the
+Redis Enterprise cluster custom resource.
+
+Add the following sections to the `spec` section of your RedisEnterpriseCluster resource file:
+
+ * **`redisEnterpriseImageSpec`**: controls the Redis Enterprise Software container image. *The version should match the RS version associated with the operator version*.
+ * **`bootstrapperImageSpec`**": controls the bootstrapper container image. *The version must match the operator version*.
+ * **`redisEnterpriseServicesRiggerImageSpec`**: controls the Service Rigger container image. *The version must match the operator version*.
+
+The REC custom resource example below pulls all three container images from a GCR private registry:
+
+```YAML
+apiVersion: app.redislabs.com/v1
+kind: RedisEnterpriseCluster
+metadata:
+ name: rec
+spec:
+ nodes: 3
+ redisEnterpriseImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/redis
+ versionTag: 7.2.4-64
+ bootstrapperImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/operator
+ versionTag: 7.2.4-7
+ redisEnterpriseServicesRiggerImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/k8s-controller
+ versionTag: 7.2.4-7
+```
+
+If your private container registry requires pull secrets, you must add `pullSecrets`
+to the `spec` section:
+
+```YAML
+apiVersion: app.redislabs.com/v1
+kind: RedisEnterpriseCluster
+metadata:
+ name: rec
+spec:
+ nodes: 3
+ pullSecrets:
+ - name: regcred
+ redisEnterpriseImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/redis
+ versionTag: 7.2.4-64
+ bootstrapperImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/operator
+ versionTag: 7.2.4-7
+ redisEnterpriseServicesRiggerImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/k8s-controller
+ versionTag: 7.2.4-7
+```
+
+## Rate limiting with DockerHub
+
+Docker has [rate limits for image pulls](https://www.docker.com/blog/scaling-docker-to-serve-millions-more-developers-network-egress/).
+Anonymous users are allowed a certain number of pulls every 6 hours. For authenticated users, the limit is larger.
+These rate limits may affect your Kubernetes cluster in a number of ways:
+
+* The cluster nodes will likely be treated as a single anonymous user.
+* The number of pulls during a deployment might exceed the rate limit for other deployment dependencies, including the operator, Redis Enterprise Software, or other non-Redis pods.
+* Pull failures may prevent your deployment from downloading the required images in a timely manner. Delays here can affect the stability of deployments used by the Redis Enterprise operator.
+
+For these reasons, you should seriously consider where your images
+are pulled from to **avoid failures caused by rate limiting**. The easiest solution
+is to push the required images to a private container registry under your control.
diff --git a/content/operate/kubernetes/7.8.6/deployment/helm.md b/content/operate/kubernetes/7.8.6/deployment/helm.md
new file mode 100644
index 0000000000..c8c3ce3836
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/deployment/helm.md
@@ -0,0 +1,122 @@
+---
+Title: Install Redis Enterprise Helm chart
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Install Redis Enterprise for Kubernetes version 7.8.6 using Helm charts.
+linkTitle: Helm
+weight: 11
+url: '/operate/kubernetes/7.8.6/deployment/helm/'
+---
+
+Helm charts provide a simple way to install the Redis Enterprise for Kubernetes operator in just a few steps. For more information about Helm, go to [https://helm.sh/docs/](https://helm.sh/docs/).
+
+{{}} This feature is currently in public preview and is not supported on production workloads. Only new installations of the Redis operator are supported at this time. The steps for [creating the RedisEnterpriseCluster (REC)]({{}}) and other custom resources remain the same.{{}}
+
+## Prerequisites
+
+- A [supported distribution]({{< relref "/operate/kubernetes/7.8.6/reference/supported_k8s_distributions.md" >}}) of Kubernetes.
+- At least three worker nodes.
+- [Kubernetes client (kubectl)](https://kubernetes.io/docs/tasks/tools/).
+- [Helm 3.10 or later](https://helm.sh/docs/intro/install/).
+
+### Example values
+
+The steps below use the following placeholders to indicate command line parameters you must provide:
+
+- `` is the name of the repo holding your Helm chart (example: `redis`).
+- `` is the name you give a specific installation of the Helm chart (example: `my-redis-enterprise-operator`)
+- `` is the version of the Helm chart you are installing (example: `7.8.2-2`)
+- `` is the name of the new namespace the Redis operator will run in (example: `ns1`)
+- `` is the filepath to the Helm chart, if it is stored in a local directory (example: `/home/charts/redis-enterprise-operator`)
+
+## Install
+
+1. Add the Redis repository.
+
+```sh
+helm repo add https://helm.redis.io/
+```
+
+2. Install the Helm chart into a new namespace.
+
+```sh
+helm install redis/redis-enterprise-operator \
+ --version \
+ --namespace \
+ --create-namespace
+```
+
+To install with Openshift, add `--set openshift.mode=true`.
+
+To monitor the installation add the `--debug` flag. The installation runs several jobs synchronously and may take a few minutes to complete.
+
+### Install from local directory
+
+1. Find the latest release on the [redis-enterprise-k8s-docs](https://github.com/RedisLabs/redis-enterprise-k8s-docs/releases) repo and download the `tar.gz` source code into a local directory.
+
+2. Install the Helm chart from your local directory.
+
+```sh
+helm install \
+ --namespace \
+ --create-namespace
+```
+
+To install with Openshift, add `--set openshift.mode=true`.
+
+To monitor the installation add the `--debug` flag. The installation runs several jobs synchronously and may take a few minutes to complete.
+
+### Specify values during install
+
+1. View configurable values with `helm show values /`.
+
+2. Install the Helm chart, overriding specific value defaults using `--set`.
+
+```sh
+helm install redis/redis-enterprise-operator \
+ --version \
+ --namespace \
+ --create-namespace
+ --set = \
+ --set =
+```
+
+### Install with values file
+
+1. View configurable values with `helm show values /`.
+
+2. Create a YAML file to specify the values you want to configure.
+
+3. Install the chart with the `--values` option.
+
+```sh
+helm install redis/redis-enterprise-operator \
+ --version \
+ --namespace \
+ --create-namespace \
+ --values
+```
+
+## Uninstall
+
+1. Delete any custom resources managed by the operator. See [Delete custom resources]({{}}) for detailed steps. You must delete custom resources in the correct order to avoid errors.
+
+2. Uninstall the Helm chart.
+
+```sh
+helm uninstall
+```
+
+This removes all Kubernetes resources associated with the chart and deletes the release.
+
+{{}}Custom Resource Definitions (CRDs) installed by the chart are not removed during chart uninstallation. To remove them manually after uninstalling the chart, run `kubectl delete crds -l app=redis-enterprise`.{{}}
+
+## Known limitations
+
+- Only new installations of the Redis operator are supported at this time. The steps for [creating the RedisEnterpriseCluster (REC)]({{}}) and other custom resources remain the same.
+- Upgrades and migrations are not supported.
+- The chart doesn't include configuration options for multiple namespaces, rack-awareness, and Vault integration. The steps for configuring these options remain the same.
+- The chart has had limited testing in advanced setups, including Active-Active configurations, air-gapped deployments, and IPv6/dual-stack environments.
diff --git a/content/operate/kubernetes/7.8.6/deployment/openshift/_index.md b/content/operate/kubernetes/7.8.6/deployment/openshift/_index.md
new file mode 100644
index 0000000000..5e999cd7cc
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/deployment/openshift/_index.md
@@ -0,0 +1,43 @@
+---
+Title: Deploy Redis Enterprise for Kubernetes with OpenShift
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: A quick introduction to the steps necessary to get a Redis Enterprise
+ cluster installed in your OpenShift Kubernetes cluster
+hideListLinks: true
+linkTitle: OpenShift
+weight: 11
+url: '/operate/kubernetes/7.8.6/deployment/openshift/'
+---
+The deployment of Redis Enterprise clusters is managed with the Redis Enterprise operator that you deploy in the namespace for your project.
+To create a database that your application
+workloads can use:
+
+1. Install the Redis Enterprise operator.
+
+1. Create a Redis Enterprise CRD to describe your desired cluster.
+
+1. The operator reads this cluster description and deploys the various components on your K8s cluster.
+
+1. Once running, use the Redis Enterprise cluster to create a database.
+
+1. The operator automatically exposes the new database as a K8s service.
+
+## For OpenShift via the OperatorHub
+
+To [create a database on an OpenShift 4.x cluster via the OperatorHub]({{< relref "/operate/kubernetes/7.8.6/deployment/openshift/openshift-operatorhub" >}}) you only need to have the [OpenShift 4.x cluster installed](https://docs.openshift.com/container-platform/4.3/welcome/index.html) with at least three nodes that each meet the [minimum requirements for a development installation]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md" >}}).
+
+## For OpenShift via the CLI
+
+To [create a database on an OpenShift cluster via the CLI]({{< relref "/operate/kubernetes/7.8.6/deployment/openshift/openshift-cli.md" >}}), you need:
+
+1. An [OpenShift cluster installed](https://docs.openshift.com/container-platform/4.3/welcome/index.html) with at least three nodes that each meet the [minimum requirements for a development installation]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md" >}}).
+1. The [kubectl package installed](https://kubernetes.io/docs/tasks/tools/install-kubectl/) at version 1.9 or higher
+1. The [OpenShift cli installed](https://docs.openshift.com/container-platform/4.2/cli_reference/openshift_cli/getting-started-cli.html)
+
+## Version compatibility
+
+To see which version of Redis Enterprise for Kubernetes supports your OpenShift version, see [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/7.8.6/reference/supported_k8s_distributions" >}}).
diff --git a/content/operate/kubernetes/deployment/openshift/old-getting-started-openshift-crdb.md b/content/operate/kubernetes/7.8.6/deployment/openshift/old-getting-started-openshift-crdb.md
similarity index 98%
rename from content/operate/kubernetes/deployment/openshift/old-getting-started-openshift-crdb.md
rename to content/operate/kubernetes/7.8.6/deployment/openshift/old-getting-started-openshift-crdb.md
index 46abb524a6..44292e8d01 100644
--- a/content/operate/kubernetes/deployment/openshift/old-getting-started-openshift-crdb.md
+++ b/content/operate/kubernetes/7.8.6/deployment/openshift/old-getting-started-openshift-crdb.md
@@ -9,6 +9,7 @@ description: null
draft: true
hidden: true
weight: $weight
+url: '/operate/kubernetes/7.8.6/deployment/openshift/old-getting-started-openshift-crdb/'
---
In this guide, we'll set up an [Active-Active database]({{< relref "/operate/rs/databases/active-active/_index.md" >}})
(formerly known as CRDB) deployment with Active-Active replication
diff --git a/content/operate/kubernetes/deployment/openshift/old-index.md b/content/operate/kubernetes/7.8.6/deployment/openshift/old-index.md
similarity index 99%
rename from content/operate/kubernetes/deployment/openshift/old-index.md
rename to content/operate/kubernetes/7.8.6/deployment/openshift/old-index.md
index f746b5a427..2507f37f26 100644
--- a/content/operate/kubernetes/deployment/openshift/old-index.md
+++ b/content/operate/kubernetes/7.8.6/deployment/openshift/old-index.md
@@ -11,6 +11,7 @@ draft: true
hidden: true
hideListLinks: false
weight: 60
+url: '/operate/kubernetes/7.8.6/deployment/openshift/old-index/'
---
Redis Enterprise is supported on OpenShift Kubernetes cluster deployments via
diff --git a/content/operate/kubernetes/7.8.6/deployment/openshift/openshift-cli.md b/content/operate/kubernetes/7.8.6/deployment/openshift/openshift-cli.md
new file mode 100644
index 0000000000..4af7dd70ad
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/deployment/openshift/openshift-cli.md
@@ -0,0 +1,248 @@
+---
+Title: Deployment with OpenShift CLI for Redis Enterprise for Kubernetes
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Redis Enterprise for Kubernetes and cluster can be installed via CLI
+ tools OpenShift
+linkTitle: OpenShift CLI
+weight: 60
+url: '/operate/kubernetes/7.8.6/deployment/openshift/openshift-cli/'
+---
+Use these steps to set up a Redis Enterprise Software cluster with OpenShift.
+
+## Prerequisites
+
+- [OpenShift cluster](https://docs.openshift.com/container-platform/4.8/installing/index.html) with at least 3 nodes (each meeting the [minimum requirements for a development installation]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements" >}}))
+- [OpenShift CLI](https://docs.openshift.com/container-platform/latest/cli_reference/openshift_cli/getting-started-cli.html)
+
+To see which version of Redis Enterprise for Kubernetes supports your OpenShift version, see [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/7.8.6/reference/supported_k8s_distributions" >}}).
+
+## Deploy the operator
+
+1. Create a new project.
+
+ ```sh
+ oc new-project
+ ```
+
+1. Verify the newly created project.
+
+ ```sh
+ oc project
+ ```
+
+1. Get the deployment files.
+
+ ```sh
+ git clone https://github.com/RedisLabs/redis-enterprise-k8s-docs
+ ```
+
+1. Deploy the OpenShift operator bundle.
+
+ If you are using version 6.2.18-41 or earlier, you must [apply the security context constraint](#install-security-context-constraint) before the operator bundle.
+
+ ```sh
+ oc apply -f openshift.bundle.yaml
+ ```
+
+ {{< warning >}}
+Changes to the `openshift.bundle.yaml` file can cause unexpected results.
+ {{< /warning >}}
+
+1. Verify that your `redis-enterprise-operator` deployment is running.
+
+ ```sh
+ oc get deployment
+ ```
+
+ A typical response looks like this:
+
+ ```sh
+ NAME READY UP-TO-DATE AVAILABLE AGE
+ redis-enterprise-operator 1/1 1 1 0m36s
+ ```
+
+ {{}}
+DO NOT modify or delete the StatefulSet created during the deployment process. Doing so could destroy your Redis Enterprise cluster (REC).
+ {{}}
+
+## Install security context constraint
+
+The Redis Enterprise pods must run in OpenShift with privileges set in a [Security Context Constraint](https://docs.openshift.com/container-platform/4.4/authentication/managing-security-context-constraints.html#security-context-constraints-about_configuring-internal-oauth). This grants the pod various rights, such as the ability to change system limits or run as a particular user.
+
+1. Apply the file `scc.yaml` file.
+
+ {{}}
+Do not edit this file.
+ {{}}
+
+ ```sh
+ oc apply -f openshift/scc.yaml
+ ```
+
+ You should receive the following response:
+
+ ```sh
+ securitycontextconstraints.security.openshift.io "redis-enterprise-scc-v2" configured
+ ```
+
+ Releases before 6.4.2-6 use the earlier version of the SCC, named `redis-enterprise-scc`.
+
+1. Provide the operator permissions for the pods.
+
+ ```sh
+ oc adm policy add-scc-to-user redis-enterprise-scc-v2 \
+ system:serviceaccount::
+ ```
+
+ {{}}
+If you are using version 6.2.18-41 or earlier, add additional permissions for your cluster.
+
+```sh
+oc adm policy add-scc-to-user redis-enterprise-scc \
+system:serviceaccount::redis-enterprise-operator
+```
+{{}}
+
+ You can check the name of your project using the `oc project` command. To replace the project name, use `oc edit project myproject`. Replace `rec` with the name of your Redis Enterprise cluster, if different.
+
+## Create a Redis Enterprise cluster custom resource
+
+1. Apply the `RedisEnterpriseCluster` resource file ([rec_rhel.yaml](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/openshift/rec_rhel.yaml)).
+
+ You can rename the file to `.yaml`, but it is not required. Examples below use `.yaml`. [Options for Redis Enterprise clusters]({{< relref "/operate/kubernetes/7.8.6/reference/redis_enterprise_cluster_api" >}}) 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.
+
+ {{}}
+Each Redis Enterprise cluster requires at least 3 nodes. Single-node RECs are not supported.
+ {{}}
+
+2. Apply the custom resource file to create your Redis Enterprise cluster.
+
+ ```sh
+ oc apply -f .yaml
+ ```
+
+ The operator typically creates the REC within a few minutes.
+
+1. Check the cluster status.
+
+ ```sh
+ oc get pod
+ ```
+
+ You should receive a response similar to the following:
+
+ ```sh
+ 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 |
+ ```
+
+## Configure the admission controller
+
+{{< embed-md "k8s-admission-webhook-cert.md" >}}
+
+### Limit the webhook to relevant namespaces
+
+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.
+
+1. Verify your namespace is labeled and the label is unique to this namespace, as shown in the next example.
+
+ ```sh
+ apiVersion: v1
+ kind: Namespace
+ metadata:
+ labels:
+ namespace-name: staging
+ name: staging
+ ```
+
+1. Patch the webhook spec with the `namespaceSelector` field.
+
+ ```sh
+ cat > modified-webhook.yaml <}}
+For releases before 6.4.2-4, use this command instead:
+
+```sh
+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]({{< relref "/operate/kubernetes/release-notes/6-4-2-releases/" >}}).
+ {{}}
+
+### Verify admission controller installation
+
+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.
+
+```sh
+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`.
+
+```sh
+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']
+```
+
+## Create a Redis Enterprise database custom resource
+
+The operator uses the instructions in the Redis Enterprise database (REDB) custom resources to manage databases on the Redis Enterprise cluster.
+
+1. Create a `RedisEnterpriseDatabase` custom resource.
+
+ This example creates a test database. For production databases, see [create a database]({{< relref "/operate/kubernetes/7.8.6/re-databases/db-controller.md#create-a-database" >}}) and [RedisEnterpriseDatabase API reference]({{< relref "/operate/kubernetes/7.8.6/reference/redis_enterprise_database_api" >}}).
+
+ ```sh
+ cat << EOF > /tmp/redis-enterprise-database.yml
+ apiVersion: app.redislabs.com/v1alpha1
+ kind: RedisEnterpriseDatabase
+ metadata:
+ name: redis-enterprise-database
+ spec:
+ memorySize: 100MB
+ EOF
+ ```
+
+1. Apply the newly created REDB resource.
+
+ ```sh
+ oc apply -f /tmp/redis-enterprise-database.yml
+ ```
+
+## More info
+
+- [Redis Enterprise cluster API]({{}})
+- [Redis Enterprise database API]({{}})
diff --git a/content/operate/kubernetes/7.8.6/deployment/openshift/openshift-operatorhub.md b/content/operate/kubernetes/7.8.6/deployment/openshift/openshift-operatorhub.md
new file mode 100644
index 0000000000..d2feefe6cb
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/deployment/openshift/openshift-operatorhub.md
@@ -0,0 +1,92 @@
+---
+Title: Deploy Redis Enterprise with OpenShift OperatorHub
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: OpenShift provides the OperatorHub where you can install the Redis Enterprise
+ operator from the administrator user interface.
+linkTitle: OpenShift OperatorHub
+weight: 70
+url: '/operate/kubernetes/7.8.6/deployment/openshift/openshift-operatorhub/'
+---
+
+You can deploy Redis Enterprise for Kubernetes from the Red Hat OpenShift CLI. You can also use a UI, [OperatorHub](https://docs.openshift.com/container-platform/4.11/operators/index.html) (Red Hat) to install operators and create custom resources.
+
+To see which version of Redis Enterprise for Kubernetes supports your OpenShift version, see [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/7.8.6/reference/supported_k8s_distributions" >}}).
+
+## Install the Redis Enterprise operator
+
+{{}} If using version 6.2.18-41 or earlier, [Install the security context constraint](#install-security-context-constraint) before installing the operator. {{}}
+
+1. Select **Operators > OperatorHub**.
+
+2. Search for _Redis Enterprise_ in the search dialog and select the **Redis Enterprise Operator provided by Redis** marked as **Certified**.
+
+ By default, the image is pulled from Red Hat's registry.
+
+3. On the **Install Operator** page, specify the namespace for the operator.
+
+ Only one namespace per operator is supported.
+
+4. Update the **channel** with the version you're installing.
+
+ For more information about specific versions, see the [release notes]({{< relref "/operate/kubernetes/release-notes/" >}}).
+
+5. Choose an approval strategy.
+
+ Use **Manual** for production systems to ensure the operator is only upgraded by approval.
+
+6. Select **Install** and approve the install plan.
+
+ You can monitor the subscription status in **Operators > Installed Operators**.
+
+{{}}DO NOT modify or delete the StatefulSet created during the deployment process. Doing so could destroy your Redis Enterprise cluster (REC).{{}}
+
+## Install security context constraint
+
+The Redis Enterprise pods must run in OpenShift with privileges set in a [Security Context Constraint](https://docs.openshift.com/container-platform/4.4/authentication/managing-security-context-constraints.html#security-context-constraints-about_configuring-internal-oauth). This grants the pod various rights, such as the ability to change system limits or run as a particular user.
+
+{{}}
+ Before creating any clusters, install the security context constraint (SCC) for the operator in [scc.yaml](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/openshift/scc.yaml).
+{{}}
+
+You only need to install the SCC once, but you must not delete it.
+
+1. Select the project you'll be using or create a new project.
+
+1. Download [`scc.yaml`](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/openshift/scc.yaml).
+
+1. Apply the file to install the security context constraint.
+
+ ```sh
+ oc apply -f scc.yaml
+ ```
+
+After the install, the OperatorHub automatically uses the constraint for Redis Enterprise node pods.
+
+{{< note >}}
+If you are using the recommended RedisEnterpriseCluster name of `rec`, the SCC is automatically bound to the RedisEnterpriseCluster after install.
+
+If you choose a different name for the RedisEnterpriseCluster, or override the default service account name, you must manually bind the SCC to the RedisEnterpriseCluster’s service account:
+
+ ```sh
+ oc adm policy add-scc-to-user redis-enterprise-scc-v2 \
+ system:serviceaccount::
+ ```
+
+{{< /note >}}
+
+## Create Redis Enterprise custom resources
+
+The **Installed Operators**->**Operator details** page shows the provided APIs: **RedisEnterpriseCluster** and **RedisEnterpriseDatabase**. You can select **Create instance** to create custom resources using the OperatorHub interface.
+
+Use the YAML view to create a custom resource file or let OperatorHub generate the YAML file for you by specifying your configuration options in the form view.
+
+ The REC name cannot be changed after cluster creation.
+
+{{}} In versions 6.4.2-4 and 6.4.2-5, REC creation might fail when using the form view due to an error related to the cluster level LDAP. To avoid this, use the YAML view.
+{{}}
+
+For more information on creating and maintaining Redis Enterprise custom resources, see [Redis Enterprise clusters (REC)]({{< relref "/operate/kubernetes/7.8.6/re-clusters/" >}}) and [Redis Enterprise databases (REDB)]({{< relref "/operate/kubernetes/7.8.6/re-databases/" >}}).
diff --git a/content/operate/kubernetes/7.8.6/deployment/quick-start.md b/content/operate/kubernetes/7.8.6/deployment/quick-start.md
new file mode 100644
index 0000000000..958728d248
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/deployment/quick-start.md
@@ -0,0 +1,261 @@
+---
+Title: Deploy Redis Enterprise Software for Kubernetes
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: How to install Redis Enterprise Software for Kubernetes.
+linkTitle: Kubernetes
+weight: 10
+url: '/operate/kubernetes/7.8.6/deployment/quick-start/'
+---
+
+To deploy Redis Enterprise Software for Kubernetes and start your Redis Enterprise cluster (REC), you need to do the following:
+
+- Create a new namespace in your Kubernetes cluster.
+- Download the operator bundle.
+- Apply the operator bundle and verify it's running.
+- Create a Redis Enterprise cluster (REC).
+
+This guide works with most supported Kubernetes distributions. If you're using OpenShift, see [Redis Enterprise on OpenShift]({{< relref "/operate/kubernetes/7.8.6/deployment/openshift" >}}). For details on what is currently supported, see [supported distributions]({{< relref "/operate/kubernetes/7.8.6/reference/supported_k8s_distributions.md" >}}).
+
+## Prerequisites
+
+To deploy Redis Enterprise for Kubernetes, you'll need:
+
+- Kubernetes cluster in a [supported distribution]({{< relref "/operate/kubernetes/7.8.6/reference/supported_k8s_distributions.md" >}})
+- minimum of three worker nodes
+- Kubernetes client (kubectl)
+- access to DockerHub, RedHat Container Catalog, or a private repository that can hold the required images.
+NOTE: If you are applying version 7.8.2-6 or above, check if the [OS](https://redis.io/docs/latest/operate/kubernetes/release-notes/7-8-2-releases/7-8-2-6-nov24/#breaking-changes) installed on the node is supported.
+
+### Create a new namespace
+
+**Important:** Each namespace can only contain one Redis Enterprise cluster. Multiple RECs with different operator versions can coexist on the same Kubernetes cluster, as long as they are in separate namespaces.
+
+Throughout this guide, each command is applied to the namespace in which the Redis Enterprise cluster operates.
+
+1. Create a new namespace
+
+ ```sh
+ kubectl create namespace
+ ```
+
+1. Change the namespace context to make the newly created namespace default for future commands.
+
+ ```sh
+ kubectl config set-context --current --namespace=
+ ```
+
+You can use an existing namespace as long as it does not contain any existing Redis Enterprise cluster resources. It's best practice to create a new namespace to make sure there are no Redis Enterprise resources that could interfere with the deployment.
+
+## Install the operator
+
+Redis Enterprise for Kubernetes bundle is published as a container image. A list of required images is available in the [release notes]({{< relref "/operate/kubernetes/release-notes/_index.md" >}}) for each version.
+
+The operator [definition and reference materials](https://github.com/RedisLabs/redis-enterprise-k8s-docs) are available on GitHub. The operator definitions are [packaged as a single generic YAML file](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/bundle.yaml).
+
+{{}}
+If you do not pull images from DockerHub or another public registry, you need to use a [private container registry]({{< relref "/operate/kubernetes/7.8.6/deployment/container-images#manage-image-sources" >}}).
+{{}}
+
+### Download the operator bundle
+
+Pull the latest version of the operator bundle:
+
+```sh
+VERSION=`curl --silent https://api.github.com/repos/RedisLabs/redis-enterprise-k8s-docs/releases/latest | grep tag_name | awk -F'"' '{print $4}'`
+```
+
+ If you need a different release, replace `VERSION` with a specific release tag.
+
+ Check version tags listed with the [operator releases on GitHub](https://github.com/RedisLabs/redis-enterprise-k8s-docs/releases) or by [using the GitHub API](https://docs.github.com/en/rest/reference/repos#releases) to ensure the version of the bundle is correct.
+
+### Deploy the operator bundle
+
+Apply the operator bundle in your REC namespace:
+
+```sh
+kubectl apply -f https://raw.githubusercontent.com/RedisLabs/redis-enterprise-k8s-docs/$VERSION/bundle.yaml
+```
+
+ You should see a result similar to this:
+
+ ```sh
+ role.rbac.authorization.k8s.io/redis-enterprise-operator created
+ serviceaccount/redis-enterprise-operator created
+ rolebinding.rbac.authorization.k8s.io/redis-enterprise-operator created
+ customresourcedefinition.apiextensions.k8s.io/redisenterpriseclusters.app.redislabs.com configured
+ customresourcedefinition.apiextensions.k8s.io/redisenterprisedatabases.app.redislabs.com configured
+ deployment.apps/redis-enterprise-operator created
+ ```
+
+{{}}DO NOT modify or delete the StatefulSet created during the deployment process. Doing so could destroy your Redis Enterprise cluster (REC).{{}}
+
+#### Verify the operator is running
+
+Check the operator deployment to verify it's running in your namespace:
+
+```sh
+kubectl get deployment redis-enterprise-operator
+```
+
+You should see a result similar to this:
+
+```sh
+NAME READY UP-TO-DATE AVAILABLE AGE
+redis-enterprise-operator 1/1 1 1 0m36s
+```
+
+## Create a Redis Enterprise cluster (REC)
+
+A Redis Enterprise cluster (REC) is created from a `RedisEnterpriseCluster` custom resource
+that contains cluster specifications.
+
+The following example creates a minimal Redis Enterprise cluster. See the [RedisEnterpriseCluster API reference]({{}}) for more information on the various options available.
+
+1. Create a file that defines a Redis Enterprise cluster with three nodes.
+
+ {{}}
+The REC name (`my-rec` in this example) cannot be changed after cluster creation.
+ {{}}
+
+ ```sh
+ cat < my-rec.yaml
+ apiVersion: "app.redislabs.com/v1"
+ kind: "RedisEnterpriseCluster"
+ metadata:
+ name: my-rec
+ spec:
+ nodes: 3
+ EOF
+ ```
+
+ This will request a cluster with three Redis Enterprise nodes using the default requests (i.e., 2 CPUs and 4GB of memory per node).
+
+ To test with a larger configuration, use the example below to add node resources to the `spec` section of your test cluster (`my-rec.yaml`).
+
+ ```sh
+ redisEnterpriseNodeResources:
+ limits:
+ cpu: 2000m
+ memory: 16Gi
+ requests:
+ cpu: 2000m
+ memory: 16Gi
+ ```
+
+ {{}}
+Each cluster must have at least 3 nodes. Single-node RECs are not supported.
+ {{}}
+
+ See the [Redis Enterprise hardware requirements]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md" >}}) for more information on sizing Redis Enterprise node resource requests.
+
+1. Apply your custom resource file in the same namespace as `my-rec.yaml`.
+
+ ```sh
+ kubectl apply -f my-rec.yaml
+ ```
+
+ You should see a result similar to this:
+
+ ```sh
+ redisenterprisecluster.app.redislabs.com/my-rec created
+ ```
+
+1. You can verify the creation of the cluster with:
+
+ ```sh
+ kubectl get rec
+ ```
+
+ You should see a result similar to this:
+
+ ```sh
+ NAME AGE
+ my-rec 1m
+ ```
+
+ At this point, the operator will go through the process of creating various services and pod deployments.
+
+ You can track the progress by examining the StatefulSet associated with the cluster:
+
+ ```sh
+ kubectl rollout status sts/my-rec
+ ```
+
+ or by looking at the status of all of the resources in your namespace:
+
+ ```sh
+ kubectl get all
+ ```
+
+## Enable the admission controller
+
+The admission controller dynamically validates REDB resources configured by the operator. It is strongly recommended that you use the admission controller on your Redis Enterprise Cluster (REC). The admission controller only needs to be configured once per operator deployment.
+
+As part of the REC creation process, the operator stores the admission controller certificate in a Kubernetes secret called `admission-tls`. You may have to wait a few minutes after creating your REC to see the secret has been created.
+
+{{< embed-md "k8s-admission-webhook-cert.md" >}}
+
+### Limit the webhook to the relevant namespaces {#webhook}
+
+The operator bundle includes a webhook file. The webhook will intercept requests from all namespaces unless you edit it to target a specific namespace. You can do this by adding the `namespaceSelector` section to the webhook spec to target a label on the namespace.
+
+1. Make sure the namespace has a unique `namespace-name` label.
+
+ ```sh
+ apiVersion: v1
+ kind: Namespace
+ metadata:
+ labels:
+ namespace-name: example-ns
+ name: example-ns
+ ```
+
+1. Patch the webhook to add the `namespaceSelector` section.
+
+ ```sh
+ cat > modified-webhook.yaml <}}) to create a new REDB.
diff --git a/content/operate/kubernetes/7.8.6/kubernetes-archive.md b/content/operate/kubernetes/7.8.6/kubernetes-archive.md
new file mode 100644
index 0000000000..bd3f2b4319
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/kubernetes-archive.md
@@ -0,0 +1,26 @@
+---
+Title: Archive
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Describes where to view the archive of Redis Enterprise for Kubernetes
+ documentation.
+linkTitle: Archive
+weight: 99999999999
+url: '/operate/kubernetes/7.8.6/kubernetes-archive/'
+---
+
+The Redis Enterprise for Kubernetes documentation is versioned. You are looking at the documentation for the latest release.
+
+View the [7.4.6 docs](https://redis.io/docs/latest/operate/kubernetes/7.4.6/) for Redis Enterprise for Kubernetes versions 7.4.6-2 and 7.4.6-6.
+View the [7.8.4 docs](](https://redis.io/docs/latest/operate/kubernetes/7.8.4/)) for Redis Enterprise for Kubernetes versions 7.8.2-6, 7.8.4-8, and 7.8.4-9.
+
+Older versions of Redis Enterprise for Kubernetes documentation are available on the archived web site:
+
+- [Redis Enterprise for Kubernetes v7.4 documentation archive](https://docs.redis.com/7.4/kubernetes/)
+
+- [Redis Enterprise for Kubernetes v7.2 documentation archive](https://docs.redis.com/7.2/kubernetes/)
+
+- [Redis Enterprise for Kubernetes v6.x documentation archive](https://docs.redis.com/6.4/kubernetes/)
diff --git a/content/operate/kubernetes/7.8.6/logs/_index.md b/content/operate/kubernetes/7.8.6/logs/_index.md
new file mode 100644
index 0000000000..649a28439f
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/logs/_index.md
@@ -0,0 +1,43 @@
+---
+Title: Redis Enterprise Software logs on Kubernetes
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: This section provides information about how logs are stored and accessed.
+hideListLinks: true
+linkTitle: Logs
+weight: 60
+url: '/operate/kubernetes/7.8.6/logs/'
+---
+
+## Logs
+
+Each redis-enterprise container stores its logs under `/var/opt/redislabs/log`.
+When using persistent storage this path is automatically mounted to the
+`redis-enterprise-storage` volume.
+This volume can easily be accessed by a sidecar, i.e. a container residing on the same pod.
+
+For example, in the REC (Redis Enterprise Cluster) spec you can add a sidecar container, such as a busybox, and mount the logs to there:
+
+```yaml
+sideContainersSpec:
+ - name: busybox
+ image: busybox
+ args:
+ - /bin/sh
+ - -c
+ - while true; do echo "hello"; sleep 1; done
+
+ volumeMounts:
+ - name: redis-enterprise-storage
+ mountPath: /home/logs
+ subPath: logs
+```
+
+Now the logs can be accessed from in the sidecar. For example by running
+
+```kubectl exec -it -c busybox tail home/logs/supervisord.log```
+
+The sidecar container is user determined and can be used to format, process and share logs in a specified format and protocol.
diff --git a/content/operate/kubernetes/7.8.6/logs/collect-logs.md b/content/operate/kubernetes/7.8.6/logs/collect-logs.md
new file mode 100644
index 0000000000..5076855af1
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/logs/collect-logs.md
@@ -0,0 +1,42 @@
+---
+Title: Collect logs
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Run the log collector script to package relevant logs into a tar.gz file
+ to send to Redis Support for help troubleshooting your Kubernetes environment.
+linkTitle: Collect logs
+weight: 89
+url: '/operate/kubernetes/7.8.6/logs/collect-logs/'
+---
+
+The Redis Enterprise cluster (REC) log collector script ([`log_collector.py`](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/log_collector/log_collector.py)) creates and fills a directory with the relevant logs for your environment. These logs will help the support team with troubleshooting.
+
+As of version 6.2.18-3, the log collector tool has two modes:
+
+- **restricted** collects only resources and logs created by the operator and Redis Enterprise deployments
+ - This is the default for versions 6.2.18-3 and later
+- **all** collects everything from your environment
+ - This is the default mode for versions 6.2.12-1 and earlier
+
+{{}} This script requires Python 3.6 or later. {{}}
+
+1. Download the latest [`log_collector.py`](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/log_collector/log_collector.py) file.
+
+1. Have a K8s administrator run the script on the system that runs your `kubectl` or `oc` commands.
+ - Pass `-n` parameter to run on a different namespace than the one you are currently on
+ - Pass `-m` parameter to change the log collector mode (`all` or `restricted`)
+ - Run with `-h` to see more options
+
+ ```bash
+ python log_collector.py
+ ```
+
+ {{< note >}} If you get an error because the yaml module is not found, install the pyYAML module with `pip install pyyaml`.
+ {{< /note >}}
+
+
+
+1. Upload the resulting `tar.gz` file containing all the logs to [Redis Support](https://support.redislabs.com/).
diff --git a/content/operate/kubernetes/7.8.6/networking/_index.md b/content/operate/kubernetes/7.8.6/networking/_index.md
new file mode 100644
index 0000000000..430cd2bd33
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/networking/_index.md
@@ -0,0 +1,42 @@
+---
+Title: Networking
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: null
+hideListLinks: true
+linkTitle: Networking
+weight: 40
+url: '/operate/kubernetes/7.8.6/networking/'
+---
+
+Redis Enterprise for Kubernetes supports several ways to route external traffic to your RedisEnterpriseCluster:
+
+- Ingress controllers [HAProxy](https://haproxy-ingress.github.io/) and [NGINX](https://kubernetes.github.io/ingress-nginx/) require an `ingress` API resource.
+- [Istio](https://istio.io/latest/docs/setup/getting-started/) requires `Gateway` and `VirtualService` API resources.
+- OpenShift uses [routes]({{< relref "/operate/kubernetes/7.8.6/networking/routes.md" >}}) to route external traffic.
+- The RedisEnterpriseActiveActiveDatabase (REAADB) requires any of the above routing methods to be configured in the RedisEnterpriseCluster (REC) with the `ingressOrRouteSpec` field.
+
+## External routing using Redis Enterprise for Kubernetes
+
+Every time a RedisEnterpriseDatabase (REDB), Redis Enterprise Active-Active database (REAADB), or Redis Enterprise cluster (REC) is created, the Redis Enterprise operator automatically creates a [service](https://kubernetes.io/docs/concepts/services-networking/service/) to allow requests to be routed to that resource.
+
+Redis Enterprise supports three [types of services](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) for accessing databases: `ClusterIP`, `headless`, or `LoadBalancer`.
+
+By default, the operator creates a `ClusterIP` type service, which exposes a cluster-internal IP and that can only be accessed from within the K8s cluster. For requests to be routed from outside the K8s cluster, you need an [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) (or [route](https://docs.openshift.com/container-platform/4.12/networking/routes/route-configuration.html) if you are using OpenShift). See [kubernetes.io](https://kubernetes.io/docs/) for more details on [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) and [Ingress controllers](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/).
+
+* To use NGINX or HAProxy Ingress controllers, see [Ingress routing]({{< relref "/operate/kubernetes/7.8.6/networking/ingress.md" >}}).
+* To use OpenShift routes, see [OpenShift routes]({{< relref "/operate/kubernetes/7.8.6/networking/routes.md" >}}).
+* To use Istio as an Ingress controller, see [Istio Ingress routing]({{< relref "/operate/kubernetes/7.8.6/networking/istio-ingress.md" >}})
+
+## `ingressOrRouteSpec` for Active-Active databases
+
+Versions 6.4.2 or later of Redis Enterprise for Kubernetes include a feature for ingress configuration. The `ingressOrRouteSpec` field is available in the RedisEnterpriseCluster spec to automatically create an Ingress (or route) for the API service and databases (REAADB) on that REC. See [REC external routing]({{< relref "/operate/kubernetes/7.8.6/networking/ingressorroutespec.md" >}}) for more details.
+
+This feature only supports automatic Ingress creation for Active-Active databases created and managed with the RedisEnterpriseActiveActiveDatabase (REAADB) custom resource. Use with the standard Redis Enterprise database (REDB) is not currently supported.
+
+## REC domain name
+
+The RedisEnterpriseCluster does not support custom domain names. Domain names for the REC are in the following format: `..svc.cluster.local`.
diff --git a/content/operate/kubernetes/7.8.6/networking/ingress.md b/content/operate/kubernetes/7.8.6/networking/ingress.md
new file mode 100644
index 0000000000..56e1de50b1
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/networking/ingress.md
@@ -0,0 +1,225 @@
+---
+Title: Configure Ingress for external routing
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Configure an ingress controller to access your Redis Enterprise databases
+ from outside the Kubernetes cluster.
+linkTitle: Ingress routing
+weight: 5
+url: '/operate/kubernetes/7.8.6/networking/ingress/'
+---
+
+## Prerequisites
+
+Before creating an Ingress, you'll need:
+
+ - A RedisEnterpriseDatabase (REDB) with TLS enabled for client connections
+ - A supported Ingress controller with `ssl-passthrough` enabled
+ - [Ingress-NGINX Controller](https://kubernetes.github.io/ingress-nginx/deploy/)
+ - Be sure to use the `kubernetes/ingress-nginx` controller and NOT the `nginxinc/kubernetes-ingress` controller.
+ - [HAProxy Ingress](https://haproxy-ingress.github.io/docs/getting-started/)
+ - To use Istio for your Ingress resources, see [Configure Istio for external routing]({{< relref "/operate/kubernetes/7.8.6/networking/istio-ingress.md" >}})
+
+{{}}Make sure your Ingress controller has `ssl-passthrough`enabled. This is enabled by default for HAProxy, but disabled by default for NGINX. See the [NGINX User Guide](https://kubernetes.github.io/ingress-nginx/user-guide/tls/#ssl-passthrough) for details. {{}}
+
+## Create an Ingress resource
+
+1. Retrieve the hostname of your Ingress controller's `LoadBalancer` service.
+
+ ``` sh
+ $ kubectl get svc \
+ -n
+ ```
+
+ Below is example output for an HAProxy running on a K8s cluster hosted by AWS.
+
+ ``` sh
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+ haproxy-ingress LoadBalancer 10.43.62.53 a56e24df8c6173b79a63d5da54fd9cff-676486416.us-east-1.elb.amazonaws.com 80:30610/TCP,443:31597/TCP 21m
+ ```
+
+1. Choose the hostname you will use to access your database (this value will be represented in this article with ``).
+
+1. Create a DNS entry that resolves your chosen database hostname to the IP address for the Ingress controller's LoadBalancer.
+
+1. Create the Ingress resource YAML file.
+
+ ``` YAML
+ apiVersion: networking.k8s.io/v1
+ kind: Ingress
+ metadata:
+ name: rec-ingress
+ annotations:
+
+ spec:
+ rules:
+ - host:
+ http:
+ paths:
+ - path: /
+ pathType: ImplementationSpecific
+ backend:
+ service:
+ name:
+ port:
+ name: redis
+ ```
+
+ For HAProxy, insert the following into the `annotations` section:
+
+ ``` YAML
+ kubernetes.io/ingress.class: haproxy
+ ingress.kubernetes.io/ssl-passthrough: "true"
+ ```
+
+ For NGINX, insert the following into the `annotations` section:
+
+ ``` YAML
+ kubernetes.io/ingress.class: nginx
+ nginx.ingress.kubernetes.io/ssl-passthrough: "true"
+ ```
+
+ The `ssl-passthrough` annotation is required to allow access to the database. The specific format changes depending on your Ingress controller and any additional customizations. See [NGINX Configuration annotations](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/) and [HAProxy Ingress Options](https://www.haproxy.com/documentation/kubernetes/latest/configuration/ingress/) for updated annotation formats.
+
+## Test your external access
+
+To test your external access to the database, you need a client that supports [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) and [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication).
+
+#### Test your access with Openssl
+
+1. Get the default CA certificate from the `redis-enterprise-node` container on any of the Redis Enterprise pods.
+
+ ``` sh
+ $ kubectl exec -it -c redis-enterprise-node \
+ -- cat /etc/opt/redislabs/proxy_cert.pem
+ ```
+
+1. Run the following `openssl` command, substituting your own values for ``.
+
+ ``` sh
+ $ openssl s_client \
+ -connect :443 \
+ -crlf -CAfile ./proxy_cert.pem \
+ -servername
+ ```
+
+ If you are connected to the database, you will receive `PONG` back, as shown below:
+
+ ``` sh
+ ...
+ Verify return code: 0 (ok)
+ ---
+
+ PING
+ +PONG
+ ```
+
+#### Test your access with Python
+
+You can use the code below to test your access with Python, substituting your own values for `` and ``.
+
+``` python
+import redis
+
+r = redis.StrictRedis(host='',
+ port=443, db=0, ssl=True,
+ ssl_ca_certs='//proxy_cert.pem')
+
+
+print(r.info())
+```
+
+Your output should look something like this:
+
+``` sh
+$ /Users/example-user/Documents/Projects/test_client/venv3.7/bin/python \
+ /Users/example-user/Documents/Projects/test_client/test_ssl.py
+{
+ 'redis_version': '5.0.5',
+ 'redis_git_sha1': 0,
+ 'redis_git_dirty': 0,
+ 'redis_build_id': 0,
+ 'redis_mode': 'standalone',
+ 'os': 'Linux 4.14.154-128.181.amzn2.x86_64 x86_64',
+ 'arch_bits': 64,
+ 'multiplexing_api': 'epoll',
+ 'gcc_version': '7.4.0',
+ 'process_id': 1,
+ 'run_id': '3ce7721b096517057d28791aab555ed8ac02e1de',
+ 'tcp_port': 10811,
+ 'uptime_in_seconds': 316467,
+ 'uptime_in_days': 3,
+ 'hz': 10,
+ 'lru_clock': 0,
+ 'config_file': '',
+ 'connected_clients': 1,
+ 'client_longest_output_list': 0,
+ 'client_biggest_input_buf': 0,
+ 'blocked_clients': 0,
+ 'used_memory': 12680016,
+ 'used_memory_human': '12.9M',
+ 'used_memory_rss': 12680016,
+ 'used_memory_peak': 13452496,
+ 'used_memory_peak_human': '12.82M',
+ 'used_memory_lua': 151552,
+ 'mem_fragmentation_ratio': 1,
+ 'mem_allocator': 'jemalloc-5.1.0',
+ 'loading': 0,
+ 'rdb_changes_since_last_save': 0,
+ 'rdb_bgsave_in_progress': 0,
+ 'rdb_last_save_time': 1577753916,
+ 'rdb_last_bgsave_status': 'ok',
+ 'rdb_last_bgsave_time_sec': 0,
+ 'rdb_current_bgsave_time_sec': -1,
+ 'aof_enabled': 0,
+ 'aof_rewrite_in_progress': 0,
+ 'aof_rewrite_scheduled': 0,
+ 'aof_last_rewrite_time_sec': -1,
+ 'aof_current_rewrite_time_sec': -1,
+ 'aof_last_bgrewrite_status': 'ok',
+ 'aof_last_write_status': 'ok',
+ 'total_connections_received': 4,
+ 'total_commands_processed': 6,
+ 'instantaneous_ops_per_sec': 14,
+ 'total_net_input_bytes': 0,
+ 'total_net_output_bytes': 0,
+ 'instantaneous_input_kbps': 0.0,
+ 'instantaneous_output_kbps': 0.0,
+ 'rejected_connections': 0,
+ 'sync_full': 1,
+ 'sync_partial_ok': 0,
+ 'sync_partial_err': 0,
+ 'expired_keys': 0,
+ 'evicted_keys': 0,
+ 'keyspace_hits': 0,
+ 'keyspace_misses': 0,
+ 'pubsub_channels': 0,
+ 'pubsub_patterns': 0,
+ 'latest_fork_usec': 0,
+ 'migrate_cached_sockets': 0,
+ 'role': 'master',
+ 'connected_slaves': 1,
+ 'slave0': {
+ 'ip': '0.0.0.0',
+ 'port': 0,
+ 'state': 'online',
+ 'offset': 0,
+ 'lag': 0
+ },
+ 'master_repl_offset': 0,
+ 'repl_backlog_active': 0,
+ 'repl_backlog_size': 1048576,
+ 'repl_backlog_first_byte_offset': 0,
+ 'repl_backlog_histlen': 0,
+ 'used_cpu_sys': 0.0,
+ 'used_cpu_user': 0.0,
+ 'used_cpu_sys_children': 0.0,
+ 'used_cpu_user_children': 0.0,
+ 'cluster_enabled': 0
+}
+
+Process finished with exit code 0
+```
diff --git a/content/operate/kubernetes/7.8.6/networking/ingressorroutespec.md b/content/operate/kubernetes/7.8.6/networking/ingressorroutespec.md
new file mode 100644
index 0000000000..787bf64f25
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/networking/ingressorroutespec.md
@@ -0,0 +1,87 @@
+---
+Title: Establish external routing on the RedisEnterpriseCluster
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: null
+linkTitle: REC external routing
+weight: 30
+url: '/operate/kubernetes/7.8.6/networking/ingressorroutespec/'
+---
+An Ingress is an API resource that provides a standardized and flexible way to manage external access to services running within a Kubernetes cluster.
+
+## Install Ingress controller
+
+Redis Enterprise for Kubernetes supports the Ingress controllers below:
+* [HAProxy](https://haproxy-ingress.github.io/)
+* [NGINX](https://kubernetes.github.io/ingress-nginx/)
+* [Istio](https://istio.io/latest/docs/setup/getting-started/)
+
+OpenShift users can use [routes]({{< relref "/operate/kubernetes/7.8.6/networking/routes.md" >}}) instead of an Ingress.
+
+Install your chosen Ingress controller, making sure `ssl-passthrough` is enabled. `ssl-passthrough` is turned off by default for NGINX but enabled by default for HAProxy.
+
+## Configure DNS
+
+1. Choose the hostname (FQDN) you will use to access your database according to the recommended naming conventions below, replacing `` with your own values.
+
+ REC API hostname: `api--.`
+ REAADB hostname: `-db--.`
+
+ We recommend using a wildcard (`*`) in place of the database name, followed by the hostname suffix.
+
+1. Retrieve the `EXTERNAL-IP` of your Ingress controller's `LoadBalancer` service.
+
+ ``` sh
+ $ kubectl get svc \
+ -n
+ ```
+
+ Below is example output for an HAProxy ingress controller running on a K8s cluster hosted by AWS.
+
+ ``` sh
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+ haproxy-ingress LoadBalancer 10.43.62.53 a56e24df8c6173b79a63d5da54fd9cff-676486416.us-east-1.elb.amazonaws.com 80:30610/TCP,443:31597/TCP 21m
+ ```
+
+1. Create DNS records to resolve your chosen REC API hostname and database hostname to the `EXTERNAL-IP` found in the previous step.
+
+## Edit the REC spec
+
+Edit the RedisEnterpriseCluster (REC) spec to add the `ingressOrRouteSpec` field, replacing `` below with your own values.
+
+### NGINX or HAproxy ingress controllers
+
+* Define the REC API hostname (`apiFqdnUrl`) and database hostname suffix (`dbFqdnSuffix`) you chose when configuring DNS.
+* Set `method` to `ingress`.
+* Set `ssl-passthrough` to "true".
+* Add any additional annotations required for your ingress controller. See [NGINX docs](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/) or [HAproxy docs](https://haproxy-ingress.github.io/docs/configuration/keys/) for more information.
+
+```sh
+kubectl patch rec --type merge --patch "{\"spec\": \
+ {\"ingressOrRouteSpec\": \
+ {\"apiFqdnUrl\": \"api--.example.com\", \
+ \"dbFqdnSuffix\": \"-db--.example.com\", \
+ \"ingressAnnotations\": \
+ {\".io/ingress.class\": \
+ \"\", \
+ \"/ssl-passthrough\": \ \"true\"}, \
+ \"method\": \"ingress\"}}}"
+```
+
+### OpenShift routes
+
+* Define the REC API hostname (`apiFqdnUrl`) and database hostname suffix (`dbFqdnSuffix`) you chose when configuring DNS.
+* Set `method` to `openShiftRoute`.
+
+```sh
+kubectl patch rec --type merge --patch "{\"spec\": \
+ {\"ingressOrRouteSpec\": \
+ {\"apiFqdnUrl\": \"api--.example.com\" \
+ \"dbFqdnSuffix\": \"-db--.example.com\", \
+ \"method\": \"openShiftRoute\"}}}"
+```
+
+OpenShift routes do not require any `ingressAnnotations` in the `ingressOrRouteSpec`.
diff --git a/content/operate/kubernetes/7.8.6/networking/istio-ingress.md b/content/operate/kubernetes/7.8.6/networking/istio-ingress.md
new file mode 100644
index 0000000000..d76333b908
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/networking/istio-ingress.md
@@ -0,0 +1,158 @@
+---
+Title: Configure Istio for external routing
+alwaysOpen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Configure Istio as an ingress controller for access to your Redis Enterprise
+ databases from outside the Kubernetes cluster.
+linkTitle: Istio ingress routing
+weight: 20
+url: '/operate/kubernetes/7.8.6/networking/istio-ingress/'
+---
+
+Redis Enterprise for Kubernetes has the ability to use an Istio Ingress gateway as an alternative to NGINX or HaProxy Ingress controllers.
+
+Istio can also understand Ingress resources, but using that mechanism takes away the advantages and options that the native Istio resources provide. Istio offers its own configuration methods using custom resources.
+
+To configure Istio to work with the Redis Kubernetes operator, we will use two custom resources: a `Gateway` and a `VirtualService`. Then you'll be able to establish external access to your database.
+
+## Install and configure Istio for Redis Enterprise
+
+1. [Download](https://istio.io/latest/docs/setup/getting-started/) and [install](https://istio.io/latest/docs/setup/getting-started/) Istio (see instructions from Istio's [Getting Started](https://istio.io/latest/docs/setup/getting-started/) guide).
+
+ Once the installation is complete, all the deployments, pods, and services will be deployed in a namespace called `istio-system`. This namespace contains a `LoadBalancer` type service called `service/istio-ingressgateway` that exposes the external IP address.
+
+1. Find the `EXTERNAL-IP` for the `istio-ingressgateway` service.
+
+ ```sh
+ kubectl get svc istio-ingressgateway -n istio-system
+
+ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+ istio-ingressgateway LoadBalancer 10.34.67.89 10.145.78.91 15021:12345/TCP,80:67891/TCP,443:23456/TCP,31400:78901/TCP,15443:10112/TCP 3h8m
+ ```
+
+1. Create a DNS entry that resolves your chosen database hostname (or a wildcard `*` followed by your domain) to the Istio `EXTERNAL-IP`. Use this hostname to access your database from outside the cluster.
+
+ In this example, any hostname that ends with `.istio.k8s.my.example.com` will resolve to the Istio LoadBalancer's external IP of `10.145.78.91`. Substitute your own values accordingly.
+
+1. Verify the record was created successfully.
+
+ ```sh
+ dig api.istio.k8s.my.example.com
+ ```
+
+ Look in the `ANSWER SECTION` for the record you just created.
+
+ ```sh
+ ;; ANSWER SECTION:
+ api.istio.k8s.my.example.com 0 IN A 10.145.78.91
+ ```
+
+## Create custom resources
+
+### `Gateway` custom resource
+
+1. On a different namespace from `istio-system`, create a `Gateway` custom resource file (`redis-gateway.yaml` in this example).
+
+ - Replace `.istio.k8s.my.example.com` with the domain that matches your DNS record.
+ - Replace `` with the label set on your Istio ingress gateway pod (most common is `istio: ingress`).
+ - TLS passthrough mode is required to allow secure access to the database.
+
+ ```yaml
+ apiVersion: networking.istio.io/v1beta1
+ kind: Gateway
+ metadata:
+ name: redis-gateway
+ spec:
+ selector:
+ istio:
+ servers:
+ - hosts:
+ - '*.istio.k8s.my.example.com'
+ port:
+ name: https
+ number: 443
+ protocol: HTTPS
+ tls:
+ mode: PASSTHROUGH
+ ```
+
+
+
+1. Apply the `Gateway` custom resource file to create the Ingress gateway.
+
+ ```sh
+ kubectl apply -f redis-gateway.yaml
+ ```
+
+1. Verify the gateway was created successfully.
+
+ ```sh
+ kubectl get gateway
+
+ NAME AGE
+ redis-gateway 3h33m
+ ```
+
+### `VirtualService` custom resource
+
+1. On a different namespace than `istio-system`, create the `VirtualService` custom resource file (`redis-vs.yaml` in this example).
+
+ ```yaml
+ apiVersion: networking.istio.io/v1beta1
+ kind: VirtualService
+ metadata:
+ name: redis-vs
+ spec:
+ gateways:
+ - redis-gateway
+ hosts:
+ - "*.istio.k8s.my.example.com"
+ tls:
+ - match:
+ - port: 443
+ sniHosts:
+ - api.istio.k8s.my.example.com
+ route:
+ - destination:
+ host: rec1
+ port:
+ number: 9443
+ - match:
+ - port: 443
+ sniHosts:
+ - db1.istio.k8s.my.example.com
+ route:
+ - destination:
+ host: db1
+ ```
+
+ This creates both a route to contact the API server on the REC (`rec1`) and a route to contact one of the databases (`db1`).
+
+ - Replace `.istio.k8s.my.example.com` with the domain that matches your DNS record.
+ - The gateway's metadata name must be similar to the gateway's spec name (`redis-gateway` in this example).
+
+1. Apply `VirtualService` custom resource file to create the virtual service.
+
+ ```sh
+ kubectl apply -f redis-vs.yaml
+ ```
+
+1. Verify the virtual service was created successfully.
+
+ ```sh
+ kubectl get vs
+
+ NAME GATEWAYS HOSTS AGE
+ redis-vs ["redis-gateway"] ["*.istio.k8s.my.example.com"] 3h33m
+ ```
+
+1. [Deploy the operator]({{< relref "/operate/kubernetes/7.8.6/deployment/quick-start.md" >}}), Redis Enterprise Cluster (REC), and Redis Enterprise Database (REDB) on the same namespace as the gateway and virtual service.
+
+## Test your external access to the database
+
+To [test your external access]({{< relref "/operate/kubernetes/7.8.6/networking/ingress.md" >}}) to the database, you need a client that supports [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) and [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication).
+
+See [Test your access with Openssl]({{< relref "/operate/kubernetes/7.8.6/networking/ingress#test-your-access-with-openssl" >}}) or [Test your access with Python]({{< relref "/operate/kubernetes/7.8.6/networking/ingress#test-your-access-with-python" >}}) for more info.
diff --git a/content/operate/kubernetes/7.8.6/networking/routes.md b/content/operate/kubernetes/7.8.6/networking/routes.md
new file mode 100644
index 0000000000..eeaf017e06
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/networking/routes.md
@@ -0,0 +1,59 @@
+---
+Title: Use OpenShift routes for external database access
+alwaysOpen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: null
+linkTitle: OpenShift routes
+weight: 15
+url: '/operate/kubernetes/7.8.6/networking/routes/'
+---
+
+OpenShift routes allow requests to be routed to the database or cluster API from outside the cluster. For more information about routes, see [OpenShift documentation](https://docs.openshift.com/container-platform/4.13/networking/routes/route-configuration.html).
+
+## Prerequisites
+
+* Before you can connect to your database from outside the cluster, you'll need the root CA certificate of the DMC Proxy server to validate the server certificate.
+
+ By default, the DMC Proxy uses a self-signed certificate. You can retrieve it from the Redis Enterprise admin console and save it as a file (for example, named "ca.pem") on the client machine.
+
+* Your database also needs TLS encryption enabled.
+
+## Create OpenShift route
+
+1. Select the **Networking/Routes** section of the OpenShift web console.
+
+1. Select **Create route** and fill out the following fields:
+
+ * **Name**: Choose any name you want as the first part of your generated hostname
+ * **Hostname**: Leave blank
+ * **Path**: Leave as is ("/")
+ * **Service**: Select the service for the database you want to access
+ * **TLS Termination**: Choose "passthrough"
+ * **Insecure Traffic**: Select "None"
+
+1. Select **Create**.
+
+1. Find the hostname for your new route. After route creation, it appears in the "Host" field.
+
+1. Verify you have a DNS entry to resolve the hostname for your new route to the cluster's load balancer.
+
+## Access database
+
+Access the database from outside the cluster using `redis-cli` or `openssl`.
+
+To connect with `redis-cli`:
+
+ ```sh
+ redis-cli -h -p 443 --tls --cacert ./ca.pem --sni
+ ```
+
+Replace the `` value with the hostname for your new route.
+
+To connect with `openssl`:
+
+ ```sh
+ openssl s_client -connect :443 -crlf -CAfile ./ca.pem -servername
+ ```
diff --git a/content/operate/kubernetes/7.8.6/re-clusters/_index.md b/content/operate/kubernetes/7.8.6/re-clusters/_index.md
new file mode 100644
index 0000000000..4a6bf0f6cb
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/re-clusters/_index.md
@@ -0,0 +1,18 @@
+---
+Title: Redis Enterprise clusters (REC)
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Articles to help you manage your Redis Enterprise clusters (REC).
+hideListLinks: false
+linkTitle: Redis Enterprise clusters (REC)
+weight: 30
+url: '/operate/kubernetes/7.8.6/re-clusters/'
+---
+
+This section contains articles to help you manage your Redis Enterprise clusters (REC).
+
+
+
diff --git a/content/operate/kubernetes/7.8.6/re-clusters/auto-tiering.md b/content/operate/kubernetes/7.8.6/re-clusters/auto-tiering.md
new file mode 100644
index 0000000000..90c8961beb
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/re-clusters/auto-tiering.md
@@ -0,0 +1,88 @@
+---
+Title: Use Auto Tiering on Kubernetes
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Deploy a cluster with Auto Tiering on Kubernetes.
+linkTitle: Auto Tiering
+weight: 16
+url: '/operate/kubernetes/7.8.6/re-clusters/auto-tiering/'
+---
+
+## Prerequisites
+
+Redis Enterprise Software for Kubernetes supports using Auto Tiering (previously known as Redis on Flash), which extends your node memory to use both RAM and flash storage. SSDs (solid state drives) can store infrequently used (warm) values while your keys and frequently used (hot) values are still stored in RAM. This improves performance and lowers costs for large datasets.
+
+{{}}
+NVMe (non-volatile memory express) SSDs are strongly recommended to achieve the best performance.
+{{}}
+
+Before creating your Redis clusters or databases, these SSDs must be:
+
+- [locally attached to worker nodes in your Kubernetes cluster](https://kubernetes.io/docs/concepts/storage/volumes/#local)
+- formatted and mounted on the nodes that will run Redis Enterprise pods
+- dedicated to Auto Tiering and not shared with other parts of the database, (e.g. durability, binaries)
+- [provisioned as local persistent volumes](https://kubernetes.io/docs/concepts/storage/volumes/#local)
+ - You can use a [local volume provisioner](https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/blob/master/README.md) to do this [dynamically](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#dynamic)
+- a [StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/#local) resource with a unique name
+
+For more information on node storage, see [Node persistent and ephemeral storage]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage" >}}).
+
+## Create a Redis Enterprise cluster
+
+To deploy a Redis Enterprise cluster (REC) with Auto Tiering, you'll need to specify the following in the `redisOnFlashSpec` section of your [REC custom resource]({{< relref "/operate/kubernetes/7.8.6/reference/redis_enterprise_cluster_api" >}}):
+
+- enable Auto Tiering (`enabled: true`)
+- flash storage driver (`bigStoreDriver`)
+ - `rocksdb` or `speedb`(default)
+- storage class name (`storageClassName`)
+- minimal flash disk size (`flashDiskSize`)
+
+{{}} Clusters upgraded to version 7.2.4-2 from an earlier version will change the `bigStoreDriver` (previously called `flashStorageEngine`) to the new default `speedb`, regardless of previous configuration. {{}}
+
+{{}}Switching between storage engines (`speedb` and `rocksdb`) requires guidance by Redis Support or your Account Manager.{{}}
+
+Here is an example of an REC custom resource with these attributes:
+
+```YAML
+apiVersion: app.redislabs.com/v1
+kind: RedisEnterpriseCluster
+metadata:
+ name: "rec"
+spec:
+
+ nodes: 3
+ redisOnFlashSpec:
+ enabled: true
+ bigStoreDriver: speedb
+ storageClassName: local-scsi
+ flashDiskSize: 100G
+```
+
+### Create a Redis Enterprise database
+
+By default, any new database will use RAM only. To create a Redis Enterprise database (REDB) that can use flash storage, specify the following in the `redisEnterpriseCluster` section of the REDB custom resource definition:
+
+- `isRof: true` enables Auto Tiering
+- `rofRamSize` defines the RAM capacity for the database
+
+Below is an example REDB custom resource:
+
+```YAML
+apiVersion: app.redislabs.com/v1alpha1
+kind: RedisEnterpriseDatabase
+metadata:
+ name: autoteiring-redb
+spec:
+ redisEnterpriseCluster:
+ name: rec
+ isRof: true
+ memorySize: 2GB
+ rofRamSize: 0.5GB
+```
+
+{{< note >}}
+This example defines both `memorySize` and `rofRamSize`. When using Auto Tiering, `memorySize` refers to the total combined memory size (RAM + flash) allocated for the database. `rofRamSize` specifies only the RAM capacity for the database. `rofRamSize` must be at least 10% of `memorySize`.
+{{< /note >}}
diff --git a/content/operate/kubernetes/7.8.6/re-clusters/cluster-recovery.md b/content/operate/kubernetes/7.8.6/re-clusters/cluster-recovery.md
new file mode 100644
index 0000000000..b5f8d3bc38
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/re-clusters/cluster-recovery.md
@@ -0,0 +1,49 @@
+---
+Title: Recover a Redis Enterprise cluster on Kubernetes
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: This task describes how to recover a Redis Enterprise cluster on Kubernetes.
+linkTitle: Recover a Redis cluster
+weight: 20
+url: '/operate/kubernetes/7.8.6/re-clusters/cluster-recovery/'
+---
+When a Redis Enterprise cluster loses contact with more than half of its nodes either because of failed nodes or network split,
+the cluster stops responding to client connections.
+When this happens, you must recover the cluster to restore the connections.
+
+You can also perform cluster recovery to reset cluster nodes, to troubleshoot issues, or in a case of active/passive failover.
+
+The Redis Enterprise for Kubernetes automates these recovery steps:
+
+1. Recreates a fresh Redis Enterprise cluster
+1. Mounts the persistent storage with the recovery files from the original cluster to the nodes of the new cluster
+1. Recovers the cluster configuration on the first node in the new cluster
+1. Joins the remaining nodes to the new cluster.
+
+{{}}Redis Enterprise for Kubernetes 7.2.4-2 introduces a new limitation. You cannot recover or upgrade your cluster if there are databases with old module versions or manually uploaded modules. See the [Redis Enterprise Software 7.2.4 known limitations]({{< relref "/operate/rs/release-notes/rs-7-2-4-releases/rs-7-2-4-52#cluster-recovery-with-manually-uploaded-modules" >}}) for more details.{{}}
+
+## Prerequisites
+
+- For cluster recovery, the cluster must be [deployed with persistence]({{< relref "/operate/kubernetes/7.8.6/recommendations/persistent-volumes.md" >}}).
+
+## Recover a cluster
+
+1. Edit the REC resource to set the `clusterRecovery` flag to `true`.
+
+ ```sh
+ kubectl patch rec --type merge --patch '{"spec":{"clusterRecovery":true}}'
+ ```
+
+
+1. Wait for the cluster to recover until it is in the "Running" state.
+
+ To see the state of the cluster, run:
+
+ ```sh
+ watch "kubectl describe rec | grep State"
+ ```
+
+1. To recover the database, see [Recover a failed database]({{< relref "/operate/rs/databases/recover.md" >}}).
diff --git a/content/operate/kubernetes/7.8.6/re-clusters/connect-prometheus-operator.md b/content/operate/kubernetes/7.8.6/re-clusters/connect-prometheus-operator.md
new file mode 100644
index 0000000000..a1bcaa0edf
--- /dev/null
+++ b/content/operate/kubernetes/7.8.6/re-clusters/connect-prometheus-operator.md
@@ -0,0 +1,72 @@
+---
+Title: Connect the Prometheus operator to Redis Enterprise for Kubernetes
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: This article describes how to configure a Prometheus operator custom
+ resource to allow it to export metrics from Redis Enterprise for Kubernetes.
+linkTitle: Export metrics to Prometheus
+weight: 92
+url: '/operate/kubernetes/7.8.6/re-clusters/connect-prometheus-operator/'
+---
+
+To collect metrics data from your databases and Redis Enterprise cluster (REC), you can connect your [Prometheus](https://prometheus.io/) server to an endpoint exposed on your REC. Redis Enterprise for Kubernetes creates a dedicated service to expose the `prometheus` port (8070) for data collection. A custom resource called `ServiceMonitor` allows the [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator/tree/main/Documentation) to connect to this port and collect data from Redis Enterprise.
+
+## Prerequisites
+
+Before connecting Redis Enterprise to Prometheus on your Kubernetes cluster, make sure you've done the following:
+
+- [Deploy Redis Enterprise for Kubernetes]({{< relref "/operate/kubernetes/7.8.6/deployment/quick-start.md" >}}) (version 6.2.10-4 or newer)
+- [Deploy the Prometheus operator](https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/user-guides/getting-started.md) (version 0.19.0 or newer)
+- [Create a Redis Enterprise cluster]({{< relref "/operate/kubernetes/7.8.6/deployment/quick-start#create-a-redis-enterprise-cluster-rec" >}})
+
+## Create a `ServiceMonitor` custom resource
+
+Below is an example `ServiceMonitor` custom resource file. By specifying the service label (`app: redis.io/service=prom-metrics`) in the `selector.matchLabels` section, you can point the Prometheus operator to the correct Redis Enterprise service (`-prom`).
+
+You'll need to configure the following fields to connect Prometheus to Redis Enterprise:
+
+| Section | Field | Value |
+|---|---|---|
+| `spec.endpoints` | `port` | Name of exposed port (`prometheus`) |
+| `spec.namespaceSelector` | `matchNames` | Namespace for your REC |
+| `spec.selector` | `matchLabels` | REC service label (`app: redis.io/service=prom-metrics`) |
+
+Apply the file in the same namespace as your Redis Enterprise cluster (REC).
+ {{