diff --git a/content/operate/kubernetes/7.22/_index.md b/content/operate/kubernetes/7.22/_index.md
new file mode 100644
index 0000000000..b3b6d47fc6
--- /dev/null
+++ b/content/operate/kubernetes/7.22/_index.md
@@ -0,0 +1,111 @@
+---
+Title: Redis Enterprise for Kubernetes
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Deploy and manage Redis Enterprise on Kubernetes with the Redis Enterprise operator.
+hideListLinks: true
+linkTitle: 7.22
+weight: 30
+bannerText: This documentation applies to version 7.22.
+bannerChildren: true
+url: '/operate/kubernetes/7.22/'
+---
+
+Redis Enterprise for Kubernetes brings Redis Enterprise to Kubernetes environments through the Redis Enterprise operator. You can deploy, scale, and manage Redis Enterprise clusters and databases by using native Kubernetes resources and workflows.
+
+Redis Enterprise for Kubernetes provides all the enterprise features of Redis Software:
+
+- Linear scalability with Redis clustering
+- High availability with automatic failover
+- Active-Active geo-distribution
+- Auto Tiering for cost optimization
+- Enterprise-grade security and encryption
+- 24/7 support
+
+The Redis Enterprise operator simplifies deployment and management by providing custom resource definitions (CRDs) for Redis Enterprise clusters (REC) and databases (REDB). This approach enables GitOps workflows and Kubernetes-native operations.
+
+## Get started
+
+Deploy Redis Enterprise on your Kubernetes cluster and create your first database.
+
+- [Quick start deployment]({{< relref "/operate/kubernetes/7.22/deployment/quick-start" >}})
+- [Deploy with Helm]({{< relref "/operate/kubernetes/7.22/deployment/helm" >}})
+- [Deploy on OpenShift]({{< relref "/operate/kubernetes/7.22/deployment/openshift" >}})
+- [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/7.22/reference/supported_k8s_distributions" >}})
+
+## Redis Enterprise clusters (REC)
+
+Create and manage [Redis Enterprise clusters]({{< relref "/operate/kubernetes/7.22/re-clusters" >}}) on Kubernetes.
+
+- [Connect to admin console]({{< relref "/operate/kubernetes/7.22/re-clusters/connect-to-admin-console" >}})
+- [Auto Tiering]({{< relref "/operate/kubernetes/7.22/re-clusters/auto-tiering" >}})
+- [Multi-namespace deployment]({{< relref "/operate/kubernetes/7.22/re-clusters/multi-namespace" >}})
+- [Cluster recovery]({{< relref "/operate/kubernetes/7.22/re-clusters/cluster-recovery" >}})
+- [REC API reference]({{< relref "/operate/kubernetes/7.22/reference/api/redis_enterprise_cluster_api" >}})
+
+## Redis Enterprise databases (REDB)
+
+Create and manage [Redis Enterprise databases]({{< relref "/operate/kubernetes/7.22/re-databases" >}}) using Kubernetes resources.
+
+- [Database controller]({{< relref "/operate/kubernetes/7.22/re-databases/db-controller" >}})
+- [Create replica databases]({{< relref "/operate/kubernetes/7.22/re-databases/replica-redb" >}})
+- [REDB API reference]({{< relref "/operate/kubernetes/7.22/reference/api/redis_enterprise_database_api" >}})
+
+## Active-Active databases
+
+Set up globally distributed [Active-Active databases]({{< relref "/operate/kubernetes/7.22/active-active" >}}) across multiple Kubernetes clusters.
+
+- [Prepare participating clusters]({{< relref "/operate/kubernetes/7.22/active-active/prepare-clusters" >}})
+- [Create Active-Active database]({{< relref "/operate/kubernetes/7.22/active-active/create-reaadb" >}})
+- [Global configuration]({{< relref "/operate/kubernetes/7.22/active-active/global-config" >}})
+- [REAADB API reference]({{< relref "/operate/kubernetes/7.22/reference/api/redis_enterprise_active_active_database_api" >}})
+- [Remote cluster API reference]({{< relref "/operate/kubernetes/7.22/reference/api/redis_enterprise_remote_cluster_api" >}})
+
+## Security
+
+Manage [secure connections]({{< relref "/operate/kubernetes/7.22/security" >}}) and access control for your Redis Enterprise deployment.
+
+- [Manage REC credentials]({{< relref "/operate/kubernetes/7.22/security/manage-rec-credentials" >}})
+- [Manage REC certificates]({{< relref "/operate/kubernetes/7.22/security/manage-rec-certificates" >}})
+- [Internode encryption]({{< relref "/operate/kubernetes/7.22/security/internode-encryption" >}})
+- [LDAP authentication]({{< relref "/operate/kubernetes/7.22/security/ldap" >}})
+
+## Reference
+
+Use the Kubernetes API and command-line tools to manage your Redis Enterprise deployment.
+
+- [Redis Enterprise cluster API (REC)]({{< relref "/operate/kubernetes/7.22/reference/api/redis_enterprise_cluster_api" >}})
+- [Redis Enterprise database API (REDB)]({{< relref "/operate/kubernetes/7.22/reference/api/redis_enterprise_database_api" >}})
+- [Active-Active database API (REAADB)]({{< relref "/operate/kubernetes/7.22/reference/api/redis_enterprise_active_active_database_api" >}})
+- [Remote cluster API (RERC)]({{< relref "/operate/kubernetes/7.22/reference/api/redis_enterprise_remote_cluster_api" >}})
+
+## Logs & monitoring
+
+Monitor and troubleshoot your Redis Enterprise deployment.
+
+- [Collect logs]({{< relref "/operate/kubernetes/7.22/logs/collect-logs" >}})
+- [Connect to Prometheus operator]({{< relref "/operate/kubernetes/7.22/re-clusters/connect-prometheus-operator" >}})
+
+## Upgrade
+
+Keep your Redis Enterprise deployment up to date.
+
+- [Upgrade Redis cluster]({{< relref "/operate/kubernetes/7.22/upgrade/upgrade-redis-cluster" >}})
+- [Upgrade with OpenShift CLI]({{< relref "/operate/kubernetes/7.22/upgrade/openshift-cli" >}})
+- [Upgrade with OLM]({{< relref "/operate/kubernetes/7.22/upgrade/upgrade-olm" >}})
+
+## Release notes
+
+Stay informed about new features, enhancements, and fixes.
+
+- [Release notes]({{< relref "/operate/kubernetes/release-notes" >}})
+
+## Related info
+
+- [Redis Enterprise Software]({{< relref "/operate/rs" >}})
+- [Redis Cloud]({{< relref "/operate/rc" >}})
+- [Redis Open Source]({{< relref "/operate/oss_and_stack" >}})
+- [Glossary]({{< relref "/glossary" >}})
\ No newline at end of file
diff --git a/content/operate/kubernetes/7.22/active-active/_index.md b/content/operate/kubernetes/7.22/active-active/_index.md
new file mode 100644
index 0000000000..f34b414a5d
--- /dev/null
+++ b/content/operate/kubernetes/7.22/active-active/_index.md
@@ -0,0 +1,84 @@
+---
+Title: Active-Active databases
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Create and manage Active-Active Redis Enterprise databases across multiple Kubernetes clusters.
+hideListLinks: true
+linkTitle: Active-Active databases
+weight: 40
+url: '/operate/kubernetes/7.22/active-active/'
+---
+
+Redis Enterprise [Active-Active]({{< relref "/operate/rs/databases/active-active/" >}}) databases on Kubernetes provide read and write access to the same dataset from different Kubernetes clusters. This enables globally distributed applications with local read and write access, automatic conflict resolution, and seamless failover capabilities.
+
+Active-Active databases use multi-master replication to keep data synchronized across participating clusters, allowing applications to read and write data locally while maintaining global consistency.
+
+## 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. Please 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.22/active-active/prepare-clusters" >}}).
+2. Create [`RedisEnterpriseRemoteCluster` (RERC)]({{< relref "/operate/kubernetes/7.22/active-active/create-reaadb#create-rerc" >}}) resources.
+3. Create [`RedisEnterpriseActiveActiveDatabase` (REAADB)]({{< relref "/operate/kubernetes/7.22/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.22/active-active/prepare-clusters" >}}) then [create an Active-Active database]({{< relref "/operate/kubernetes/7.22/active-active/create-reaadb" >}}).
+
+### 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]({{}}).
+
+For examples, see the [YAML examples]({{< relref "/operate/kubernetes/7.22/reference/yaml/active-active" >}}) section.
+
+### RERC custom resource
+
+Redis Enterprise remote cluster (RERC) custom resource contains configuration details for all the participating clusters.
+
+For a full list of fields and options, see the [RERC API reference]({{}}).
+
+For examples, see the [YAML examples]({{< relref "/operate/kubernetes/7.22/reference/yaml/active-active" >}}) section.
+
+### 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 info
+
+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.22/active-active/create-aa-crdb-cli.md b/content/operate/kubernetes/7.22/active-active/create-aa-crdb-cli.md
new file mode 100644
index 0000000000..dd5c9c6c3c
--- /dev/null
+++ b/content/operate/kubernetes/7.22/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.22/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.22/active-active/create-reaadb" >}}).{{}}
+
+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.22/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.22/networking/ingress" >}}) (or [route resources]({{< relref "/operate/kubernetes/7.22/networking/routes" >}}) on OpenShift).
+- A working [Redis Enterprise cluster (REC)]({{< relref "/operate/kubernetes/7.22/reference/api/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" >}})).
+
+{{}} 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.22/security/manage-rec-credentials" >}}) ` `:
+ - 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.22/networking/ingress" >}}), 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.22/networking/istio-ingress" >}}) 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 will need to be configured and maintained 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.22/networking/routes" >}}), 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.22/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.22/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.22/active-active/create-reaadb.md b/content/operate/kubernetes/7.22/active-active/create-reaadb.md
new file mode 100644
index 0000000000..92d4daf7bc
--- /dev/null
+++ b/content/operate/kubernetes/7.22/active-active/create-reaadb.md
@@ -0,0 +1,138 @@
+---
+Title: Create Active-Active database (REAADB)
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: null
+linkTitle: Create database
+weight: 30
+url: '/operate/kubernetes/7.22/active-active/create-reaadb/'
+---
+
+
+
+## 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.22/deployment/quick-start#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.22/deployment/quick-start#create-a-redis-enterprise-cluster-rec" >}}) with enough [memory resources]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements" >}}).
+ * Name of each REC (``)
+ * Namespace for each REC (``)
+
+3. Configure the REC [`ingressOrRoutes` field]({{< relref "/operate/kubernetes/7.22/networking/ingressorroutespec" >}}) and [create DNS records]({{< relref "/operate/kubernetes/7.22/networking/ingressorroutespec#configure-dns/" >}}).
+ * REC API hostname (`api--.`)
+ * Database hostname suffix (`-db--.`)
+
+4. [Prepare participating clusters]({{< relref "/operate/kubernetes/7.22/active-active/prepare-clusters" >}})
+ * 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 RERC custom resources {#create-rerc}
+
+1. Create a `RedisEnterpriseRemoteCluster` (RERC) custom resource file for each participating Redis Enterprise cluster (REC).
+
+Below are examples of RERC resources for two participating clusters. Substitute your own values to create your own resource.
+
+Example RERC (`rerc-ohare`) for the REC named `rec-chicago` in the namespace `ns-illinois`:
+
+{{}}
+
+Example RERC (`rerc-raegan`) for the REC named `rec-arlington` in the namespace `ns-virginia`:
+
+{{}}
+
+For more details on RERC fields, see the [RERC API reference]({{}}).
+
+2. Create a Redis Enterprise remote cluster from each RERC custom resource file.
+
+```sh
+kubectl create -f
+```
+
+3. Check the status of your RERC. If `STATUS` is `Active` and `SPEC STATUS` is `Valid`, then your configurations are correct.
+
+```sh
+kubectl get rerc
+```
+
+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 the REAADB {#create-reaadb}
+
+1. Create a `RedisEnterpriseActiveActiveDatabase` (REAADB) custom resource file meeting the naming requirements and listing the names of the RERC custom resources created in the last step.
+
+Naming requirements:
+* less than 63 characters
+* contains only lowercase letters, numbers, or hyphens
+* starts with a letter
+* ends with a letter or digit
+
+Example REAADB named `reaadb-boeing` linked to the REC named `rec-chicago` with two participating clusters and a global database configuration with shard count set to 3:
+
+{{}}
+
+{{}}Sharding is disabled on Active-Active databases created with a `shardCount` of 1. Sharding cannot be enabled after database creation. {{}}
+
+For more details on RERC fields, see the [RERC API reference]({{}}).
+
+2. Create a Redis Enterprise Active-Active database from the REAADB custom resource file.
+
+```sh
+kubectl create -f
+```
+
+3. 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 example values listed below. You can also find them in the [YAML examples]({{< relref "/operate/kubernetes/7.22/reference/yaml/active-active" >}}) section.
+
+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.22/active-active/edit-clusters.md b/content/operate/kubernetes/7.22/active-active/edit-clusters.md
new file mode 100644
index 0000000000..af5f7f451b
--- /dev/null
+++ b/content/operate/kubernetes/7.22/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.22/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.22/active-active/prepare-clusters" >}}):
+
+- 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 (rerc-logan) 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.22/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
+ ```
+ The output should look similar to:
+
+ ```sh
+ NAME STATUS SPEC STATUS LINKED REDBS REPLICATION STATUS
+ reaadb-boeing active Valid up
+ ```
+
+ To troubleshoot invalid configurations, view the RERC custom resource events and the [Redis Enterprise operator logs]({{< relref "/operate/kubernetes/7.22/logs/" >}}).
+
+1. Repeat the above steps on all other participating clusters.
\ No newline at end of file
diff --git a/content/operate/kubernetes/7.22/active-active/global-config.md b/content/operate/kubernetes/7.22/active-active/global-config.md
new file mode 100644
index 0000000000..6a779aa6c3
--- /dev/null
+++ b/content/operate/kubernetes/7.22/active-active/global-config.md
@@ -0,0 +1,174 @@
+---
+Title: Set global database configurations
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: The REAADB contains the field '.spec.globalConfigurations' and through
+ this the database configurations are set.
+linkTitle: Global configuration
+weight: 50
+url: '/operate/kubernetes/7.22/active-active/global-config/'
+---
+
+
+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.
+
+## Configure role permissions
+
+You can configure role-based access control (RBAC) permissions for Active-Active databases using the `rolesPermissions` field in the REAADB `.spec.globalConfigurations` section. The role permissions configuration is propagated across all participating clusters, but the underlying roles and Redis ACLs must be manually created on each cluster.
+
+{{}}You must manually create the specified roles and Redis ACLs on all participating clusters before configuring role permissions. The operator only propagates the role permissions configuration—it does not create the underlying roles and ACLs. If roles or ACLs are missing on any cluster, the operator will log errors and dispatch an Event associated with the REAADB object until they are manually created.{{}}
+
+### Prerequisites
+
+Before configuring role permissions:
+
+1. Manually create the required roles and Redis ACLs on all participating clusters using the Redis Enterprise admin console or REST API.
+2. Ensure role and ACL names match exactly across all clusters (names are case-sensitive).
+3. Verify that roles and ACLs are properly configured on each cluster.
+
+{{}}The operator does not automatically create or synchronize roles and ACLs across clusters. You are responsible for manually creating identical roles and ACLs on each participating cluster.{{}}
+
+### Add role permissions to REAADB
+
+1. Create or update your REAADB custom resource to include `rolesPermissions` in the global configurations.
+
+ Example REAADB with role permissions:
+
+ ```yaml
+ apiVersion: app.redislabs.com/v1alpha1
+ kind: RedisEnterpriseActiveActiveDatabase
+ metadata:
+ name: reaadb-boeing
+ spec:
+ globalConfigurations:
+ databaseSecretName:
+ memorySize: 200MB
+ shardCount: 3
+ rolesPermissions:
+ - role:
+ acl:
+ type: redis-enterprise
+ participatingClusters:
+ - name: rerc-ohare
+ - name: rerc-reagan
+ ```
+
+ Replace `` and `` with the exact names of your Redis Enterprise role and ACL.
+
+2. Apply the REAADB custom resource:
+
+ ```sh
+ kubectl apply -f
+ ```
+
+ Alternatively, patch an existing REAADB to add role permissions:
+
+ ```sh
+ kubectl patch reaadb --type merge --patch \
+ '{"spec": {"globalConfigurations": {"rolesPermissions": [{"role": "", "acl": "", "type": "redis-enterprise"}]}}}'
+ ```
+
+3. After the REAADB is active and its replication status is "Up", verify role permissions are applied to the local database using the Redis Enterprise REST API. See [Database requests]({{}}) for details.
+
+### Troubleshooting role permissions
+
+If you encounter issues with role permissions:
+
+- **Missing role or ACL errors**: Manually create the specified roles and ACLs on all participating clusters with exact name matches. The operator cannot create these automatically.
+- **Permission propagation failures**: Verify that the roles and ACLs are properly configured and accessible on each cluster. Remember that you must manually create identical roles and ACLs on every participating cluster.
+- **Case sensitivity issues**: Verify that role and ACL names match exactly, including capitalization, across all clusters.
+
+For more details on the `rolesPermissions` field structure, see the [REAADB API reference]({{}}).
\ No newline at end of file
diff --git a/content/operate/kubernetes/7.22/active-active/global-db-secret.md b/content/operate/kubernetes/7.22/active-active/global-db-secret.md
new file mode 100644
index 0000000000..0363155d47
--- /dev/null
+++ b/content/operate/kubernetes/7.22/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.22/active-active/global-db-secret/'
+---
+
+
+## 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.22/active-active/global-config" >}})
+
+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.22/active-active/prepare-clusters.md b/content/operate/kubernetes/7.22/active-active/prepare-clusters.md
new file mode 100644
index 0000000000..3671ae5049
--- /dev/null
+++ b/content/operate/kubernetes/7.22/active-active/prepare-clusters.md
@@ -0,0 +1,148 @@
+---
+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.22/active-active/prepare-clusters/'
+---
+
+## 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.22/deployment/quick-start#enable-the-admission-controller/" >}}).
+
+2. Create two or more [RedisEnterpriseCluster (REC) custom resources]({{< relref "/operate/kubernetes/7.22/deployment/quick-start#create-a-redis-enterprise-cluster-rec" >}}) with enough [memory resources]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements" >}}).
+ * Name of each REC (``)
+ * Namespace for each REC (``)
+
+3. Configure the REC [`ingressOrRoutes` field]({{< relref "/operate/kubernetes/7.22/networking/ingressorroutespec" >}}) and [create DNS records]({{< relref "/operate/kubernetes/7.22/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.
+
+## 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
+ ```
+
+ {{< note >}}
+ The `username` and `password` values should be base64 encoded, not plain text.
+ {{< /note >}}
+
+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.22/active-active/create-reaadb" >}}).
+
+## Example values
+
+This article uses the example values listed below. They can also be found in the [YAML examples]({{< relref "/operate/kubernetes/7.22/reference/yaml/active-active" >}}) section.
+
+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.22/architecture/_index.md b/content/operate/kubernetes/7.22/architecture/_index.md
new file mode 100644
index 0000000000..6d20921e6d
--- /dev/null
+++ b/content/operate/kubernetes/7.22/architecture/_index.md
@@ -0,0 +1,160 @@
+---
+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
+aliases: [/operate/kubernetes/architecture/operator/, /operate/kubernetes/architecture/operator-architecture/, /operate/kubernetes/architecture/operator-architecture]
+url: '/operate/kubernetes/7.22/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.22/networking/routes" >}}) 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.22/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.22/architecture/deployment-options.md b/content/operate/kubernetes/7.22/architecture/deployment-options.md
new file mode 100644
index 0000000000..30fade78bc
--- /dev/null
+++ b/content/operate/kubernetes/7.22/architecture/deployment-options.md
@@ -0,0 +1,58 @@
+---
+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
+aliases: [/operate/kubernetes/deployment/deployment-options/]
+url: '/operate/kubernetes/7.22/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.22/deployment/quick-start" >}}).
+
+{{< 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.22/re-clusters/multi-namespace" >}}) 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.22/re-clusters/multi-namespace" >}}) for more information.
+
+
+{{< image filename="/images/k8s/k8s-deploy-many-to-many-new.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.22/deployment/_index.md b/content/operate/kubernetes/7.22/deployment/_index.md
new file mode 100644
index 0000000000..a52e3a6b6e
--- /dev/null
+++ b/content/operate/kubernetes/7.22/deployment/_index.md
@@ -0,0 +1,62 @@
+---
+Title: Deployment
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Deploy Redis Enterprise for Kubernetes using the Redis Enterprise operator on various Kubernetes distributions.
+hideListLinks: true
+linkTitle: Deployment
+weight: 11
+url: '/operate/kubernetes/7.22/deployment/'
+---
+
+Deploy Redis Enterprise for Kubernetes by using the Redis Enterprise operator. The operator provides a simple way to deploy and manage Redis Enterprise clusters on various Kubernetes distributions, both on-premises and in the cloud.
+
+The Redis Enterprise operator uses custom resource definitions (CRDs) to manage Redis Enterprise clusters (REC) and databases (REDB) as native Kubernetes resources. This approach enables GitOps workflows and Kubernetes-native operations.
+
+## Quick start
+
+Get started quickly with a basic Redis Enterprise deployment:
+
+- [Deploy Redis Enterprise for Kubernetes]({{< relref "/operate/kubernetes/7.22/deployment/quick-start" >}}) - Step-by-step guide for most Kubernetes distributions
+- [Deploy on OpenShift]({{< relref "/operate/kubernetes/7.22/deployment/openshift" >}}) - Specific instructions for OpenShift environments
+
+## Deployment methods
+
+Choose the deployment method that best fits your environment:
+
+- [Deploy with Helm]({{< relref "/operate/kubernetes/7.22/deployment/helm" >}}) - Use Helm charts for simplified deployment and management
+- [Deploy with operator bundle]({{< relref "/operate/kubernetes/7.22/deployment/quick-start" >}}) - Direct deployment using kubectl and operator manifests
+
+## Container images
+
+Understand the container images used by the Redis Enterprise operator:
+
+- [Container images]({{< relref "/operate/kubernetes/7.22/deployment/container-images" >}}) - Details about Redis Enterprise container images and registries
+
+## Compatibility
+
+Before installing, verify compatibility with your environment:
+
+- [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/7.22/reference/supported_k8s_distributions" >}}) - Check which Redis Enterprise operator version supports your Kubernetes distribution
+
+## Prerequisites
+
+Before deploying Redis Enterprise for Kubernetes, ensure you have:
+
+- A Kubernetes cluster running a [supported distribution]({{< relref "/operate/kubernetes/7.22/reference/supported_k8s_distributions" >}})
+- Minimum of three worker nodes for high availability
+- Kubernetes client (kubectl) configured to access your cluster
+- Access to container registries (DockerHub, Red Hat Container Catalog, or private registry)
+- Sufficient resources as outlined in [sizing recommendations]({{< relref "/operate/kubernetes/7.22/recommendations/sizing-on-kubernetes" >}})
+
+## Next steps
+
+After deployment, you can:
+
+- [Create a Redis Enterprise cluster (REC)]({{< relref "/operate/kubernetes/7.22/re-clusters" >}})
+- [Create Redis Enterprise databases (REDB)]({{< relref "/operate/kubernetes/7.22/re-databases" >}})
+- [Configure networking]({{< relref "/operate/kubernetes/7.22/networking" >}})
+- [Set up security]({{< relref "/operate/kubernetes/7.22/security" >}})
\ No newline at end of file
diff --git a/content/operate/kubernetes/7.22/deployment/container-images.md b/content/operate/kubernetes/7.22/deployment/container-images.md
new file mode 100644
index 0000000000..fd014a2ff3
--- /dev/null
+++ b/content/operate/kubernetes/7.22/deployment/container-images.md
@@ -0,0 +1,264 @@
+---
+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.22/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.
+
+The operator image also includes the admission controller, which runs as part of the operator container and provides validation for Redis Enterprise database 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.22.0), although the specific release numbers may be different (for example, 7.22.0-7 is the operator version for Redis Enterprise Software 7.22.0-28).
+* 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 (which also includes the admission controller)
+
+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.22.0-28
+OPERATOR_VERSION=7.22.0-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`). This image includes both the operator functionality and the admission controller. 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.22/deployment/container-images#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.22.0-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.22.0-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.22.0-28
+ bootstrapperImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/operator
+ versionTag: 7.22.0-7
+ redisEnterpriseServicesRiggerImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/k8s-controller
+ versionTag: 7.22.0-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.22.0-28
+ bootstrapperImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/operator
+ versionTag: 7.22.0-7
+ redisEnterpriseServicesRiggerImageSpec:
+ imagePullPolicy: IfNotPresent
+ repository: gcr.io/yourproject/redislabs/k8s-controller
+ versionTag: 7.22.0-7
+```
+
+## Admission controller
+
+The admission controller is included as part of the operator container image and does not require a separate container image. When you configure a private container registry for the operator image, the admission controller functionality is automatically included.
+
+The admission controller runs within the operator pod and provides validation for Redis Enterprise database resources. It exposes an HTTPS endpoint on port 8443 that Kubernetes uses to validate resource configurations before they are applied to the cluster.
+
+For more information about configuring the admission controller, see [Enable the admission controller]({{< relref "/operate/kubernetes/7.22/deployment/quick-start#enable-the-admission-controller" >}}).
+
+## 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.22/deployment/helm.md b/content/operate/kubernetes/7.22/deployment/helm.md
new file mode 100644
index 0000000000..309e6b6e3f
--- /dev/null
+++ b/content/operate/kubernetes/7.22/deployment/helm.md
@@ -0,0 +1,173 @@
+---
+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.22/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/).
+
+## Prerequisites
+
+- A [supported distribution]({{< relref "/operate/kubernetes/7.22/reference/supported_k8s_distributions" >}}) 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/)
+ or 3.18 for migrating from a non-Helm installation.
+
+If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment]({{< relref "/operate/kubernetes/7.22/security/allow-resource-adjustment" >}}). Most major cloud providers and standard container runtime configurations set default file descriptor limits well above the minimum required by Redis Enterprise. In these environments, you can safely run without enabling automatic resource adjustment.
+
+### 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-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 /redis-enterprise-operator`.
+
+2. Install the Helm chart, overriding specific value defaults using `--set`.
+
+```sh
+helm install /redis-enterprise-operator \
+ --version \
+ --namespace \
+ --create-namespace
+ --set = \
+ --set =
+```
+
+### Install with values file
+
+1. View configurable values with `helm show values /redis-enterprise-operator`.
+
+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-enterprise-operator \
+ --version \
+ --namespace \
+ --create-namespace \
+ --values
+```
+
+## Migrate from a non-Helm installation
+
+To migrate an existing non-Helm installation of the Redis Enterprise operator to a Helm-based installation:
+
+1. [Upgrade]({{}}) your existing Redis Enterprise operator to match the version of the Helm chart you want to install. Use the same non-Helm method you used for the original installation.
+
+2. [Install](#install) the Helm chart adding the `--take-ownership` flag:
+
+ ```sh
+ helm install /redis-enterprise-operator --take-ownership
+ ```
+
+ - The `--take-ownership` flag is available with Helm versions 3.18 or later.
+ - This flag is only needed for the first installation of the chart. Subsequent upgrades don't require this flag.
+ - Use the `helm install` command, not `helm upgrade`.
+
+3. Delete the old `ValidatingWebhookConfiguration` object from the previous non-Helm installation:
+
+ ```sh
+ kubectl delete validatingwebhookconfiguration redis-enterprise-admission
+ ```
+
+ This step is only needed when the `admission.limitToNamespace` chart value is set to `true` (the default). In this case, the webhook object installed by the chart is named `redis-enterprise-admission-`, and the original webhook object, named `redis-enterprise-admission`, becomes redundant. If `admission.limitToNamespace` is set to `false`, the webhook installed by the chart is named `redis-enterprise-admission`, and the existing webhook object is reused.
+
+## Upgrade the chart
+
+To upgrade an existing Helm chart installation:
+
+```sh
+helm upgrade /redis-enterprise-operator --version
+```
+
+You can also upgrade from a local directory:
+
+```sh
+helm upgrade
+```
+
+For example, to upgrade a chart with the release name `my-redis-enterprise` from the chart's root directory:
+
+```sh
+helm upgrade my-redis-enterprise .
+```
+
+To upgrade with OpenShift, add `--set openshift.mode=true`.
+
+The upgrade process automatically updates the operator and its components, including the Custom Resource Definitions (CRDs). The CRDs are versioned and update only if the new version is higher than the existing version.
+
+After you upgrade the operator, you might need to upgrade your Redis Enterprise clusters, depending on the Redis software version bundled with the operator. For detailed information about the upgrade process, see [Redis Enterprise for Kubernetes upgrade documentation](https://redis.io/docs/latest/operate/kubernetes/upgrade/).
+
+For more information and options when upgrading charts, see [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/).
+
+## 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
+
+- The steps for [creating the RedisEnterpriseCluster (REC)]({{}}) and other custom resources remain the same.
+- 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.
\ No newline at end of file
diff --git a/content/operate/kubernetes/7.22/deployment/openshift/_index.md b/content/operate/kubernetes/7.22/deployment/openshift/_index.md
new file mode 100644
index 0000000000..68a5c4a3cf
--- /dev/null
+++ b/content/operate/kubernetes/7.22/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.22/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.22/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" >}}).
+
+## For OpenShift via the CLI
+
+To [create a database on an OpenShift cluster via the CLI]({{< relref "/operate/kubernetes/7.22/deployment/openshift/openshift-cli" >}}), 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" >}}).
+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.22/reference/supported_k8s_distributions" >}}).
\ No newline at end of file
diff --git a/content/operate/kubernetes/7.22/deployment/openshift/openshift-cli.md b/content/operate/kubernetes/7.22/deployment/openshift/openshift-cli.md
new file mode 100644
index 0000000000..a4c4323917
--- /dev/null
+++ b/content/operate/kubernetes/7.22/deployment/openshift/openshift-cli.md
@@ -0,0 +1,225 @@
+---
+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.22/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.22/reference/supported_k8s_distributions" >}}).
+
+{{}}
+If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment]({{< relref "/operate/kubernetes/7.22/security/allow-resource-adjustment" >}}). Most major cloud providers and standard container runtime configurations set default file descriptor limits well above the minimum required by Redis Enterprise. In these environments, you can safely run without enabling automatic resource adjustment.
+{{}}
+
+## 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).
+ {{}}
+
+## Security context constraints
+
+Versions 7.22.0-6 and later run in without permissions to [allow automatic resource adjustment]({{< relref "/operate/kubernetes/7.22/security/allow-resource-adjustment" >}}). If you use the recommended default security constraints, remove the existing `redis-enterprise-scc-v2` SCC and unbind it from the REC service account after upgrading.
+
+## 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.22/reference/api/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.
+
+ {{}}
+If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment]({{< relref "/operate/kubernetes/7.22/security/allow-resource-adjustment" >}}). Most major cloud providers and standard container runtime configurations set default file descriptor limits well above the minimum required by Redis Enterprise. In these environments, you can safely run without enabling automatic resource adjustment.
+ {{}}
+
+ 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.
+
+ {{}}
+If you enabled automatic resource adjustment in your configuration, this step will trigger the operator to apply elevated capabilities. Ensure your security context allows it.
+ {{}}
+
+ ```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.22/re-databases/db-controller.md#create-a-database" >}}) and [RedisEnterpriseDatabase API reference]({{< relref "/operate/kubernetes/7.22/reference/api/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.22/deployment/openshift/openshift-operatorhub.md b/content/operate/kubernetes/7.22/deployment/openshift/openshift-operatorhub.md
new file mode 100644
index 0000000000..32e02d0d2b
--- /dev/null
+++ b/content/operate/kubernetes/7.22/deployment/openshift/openshift-operatorhub.md
@@ -0,0 +1,65 @@
+---
+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.22/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.
+
+{{}}If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment]({{< relref "/operate/kubernetes/7.22/security/allow-resource-adjustment" >}}). Most major cloud providers and standard container runtime configurations set default file descriptor limits well above the minimum required by Redis Enterprise. In these environments, you can safely run without enabling automatic resource adjustment.{{}}
+
+To see which version of Redis Enterprise for Kubernetes supports your OpenShift version, see [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/7.22/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).{{}}
+
+## Security context constraints
+
+Versions 7.22.0-6 and later run in without permissions to [allow automatic resource adjustment]({{< relref "/operate/kubernetes/7.22/security/allow-resource-adjustment" >}}). If you use the recommended default security constraints, remove the existing `redis-enterprise-scc-v2` SCC and unbind it from the REC service account after upgrading.
+
+## 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.
+
+{{}}
+If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment]({{< relref "/operate/kubernetes/7.22/security/allow-resource-adjustment" >}}). Most major cloud providers and standard container runtime configurations set default file descriptor limits well above the minimum required by Redis Enterprise. In these environments, you can safely run without enabling automatic resource adjustment.
+{{}}
+
+ The REC name cannot be changed after cluster creation.
+
+For more information on creating and maintaining Redis Enterprise custom resources, see [Redis Enterprise clusters (REC)]({{< relref "/operate/kubernetes/7.22/re-clusters/" >}}) and [Redis Enterprise databases (REDB)]({{< relref "/operate/kubernetes/7.22/re-databases/" >}}).
diff --git a/content/operate/kubernetes/7.22/deployment/quick-start.md b/content/operate/kubernetes/7.22/deployment/quick-start.md
new file mode 100644
index 0000000000..18781bcd0c
--- /dev/null
+++ b/content/operate/kubernetes/7.22/deployment/quick-start.md
@@ -0,0 +1,271 @@
+---
+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.22/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.22/deployment/openshift" >}}). For details on what is currently supported, see [supported distributions]({{< relref "/operate/kubernetes/7.22/reference/supported_k8s_distributions" >}}).
+
+## Prerequisites
+
+To deploy Redis Enterprise for Kubernetes, you'll need:
+
+- Kubernetes cluster in a [supported distribution]({{< relref "/operate/kubernetes/7.22/reference/supported_k8s_distributions" >}})
+- minimum of three worker nodes
+- Kubernetes client (kubectl)
+- access to DockerHub, RedHat Container Catalog, or a private repository that can hold the required images.
+
+If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment]({{< relref "/operate/kubernetes/7.22/security/allow-resource-adjustment" >}}). Most major cloud providers and standard container runtime configurations set default file descriptor limits well above the minimum required by Redis Enterprise. In these environments, you can safely run without enabling automatic resource adjustment.
+
+{{}}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" >}}) 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.22/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.
+
+{{}}
+If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment]({{< relref "/operate/kubernetes/7.22/security/allow-resource-adjustment" >}}). Most major cloud providers and standard container runtime configurations set default file descriptor limits well above the minimum required by Redis Enterprise. In these environments, you can safely run without enabling automatic resource adjustment.
+{{}}
+
+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" >}}) for more information on sizing Redis Enterprise node resource requests.
+
+ {{}}
+If you enabled automatic resource adjustment in your configuration, this step will trigger the operator to apply elevated capabilities. Ensure your security context allows it.
+ {{}}
+
+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" >}}
+
+### 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.22/kubernetes-archive.md b/content/operate/kubernetes/7.22/kubernetes-archive.md
new file mode 100644
index 0000000000..1457e01c38
--- /dev/null
+++ b/content/operate/kubernetes/7.22/kubernetes-archive.md
@@ -0,0 +1,27 @@
+---
+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.22/kubernetes-archive/'
+---
+
+The Redis Enterprise for Kubernetes documentation is versioned. You are looking at the documentation for the latest release.
+
+- View the [7.8.6 docs](https://redis.io/docs/latest/operate/kubernetes/7.8.6/) for Redis Enterprise for Kubernetes version 7.8.6-1.
+- 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.
+- 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.
+
+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.22/logs/_index.md b/content/operate/kubernetes/7.22/logs/_index.md
new file mode 100644
index 0000000000..4dc4e2c1f3
--- /dev/null
+++ b/content/operate/kubernetes/7.22/logs/_index.md
@@ -0,0 +1,48 @@
+---
+Title: Logs
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Access and manage Redis Enterprise logs on Kubernetes for monitoring and troubleshooting.
+hideListLinks: true
+linkTitle: Logs
+weight: 60
+url: '/operate/kubernetes/7.22/logs/'
+---
+
+Access and manage Redis Enterprise logs on Kubernetes for monitoring, troubleshooting, and debugging your Redis Enterprise deployment. Logs provide valuable insights into cluster operations, database performance, and system health.
+
+## Log collection and access
+
+Learn how to collect and access logs from your Redis Enterprise deployment:
+
+- [Collect logs]({{< relref "/operate/kubernetes/7.22/logs/collect-logs" >}}) - Methods for collecting logs from Redis Enterprise pods and containers
+
+## Log storage and access
+
+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, making logs accessible through sidecar containers or external log collection tools.
+
+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.22/logs/collect-logs.md b/content/operate/kubernetes/7.22/logs/collect-logs.md
new file mode 100644
index 0000000000..fe43c71284
--- /dev/null
+++ b/content/operate/kubernetes/7.22/logs/collect-logs.md
@@ -0,0 +1,63 @@
+---
+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.22/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.
+
+The log collector tool has two modes:
+
+- **restricted** collects only resources and logs created by the operator and Redis Enterprise deployments
+- **all** collects everything from your environment
+
+{{}} This script requires Python 3.6 or later. {{}}
+
+## Prerequisites
+
+Before running the log collector, ensure you have the appropriate RBAC permissions configured. See [Log collector RBAC examples]({{< relref "/operate/kubernetes/7.22/reference/yaml/log-collector-rbac" >}}) for detailed RBAC configuration instructions.
+
+## Collect logs
+
+1. Download the latest [`log_collector.py`](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/log_collector/log_collector.py) file.
+
+1. Ensure your `kubectl` or `oc` CLI is configured to access the Kubernetes cluster you want to collect logs from.
+
+1. Have a K8s administrator run the script on the system that runs your `kubectl` or `oc` commands.
+
+ ```bash
+ python log_collector.py
+ ```
+
+## Options
+
+You can run `log_collector.py` with the following options:
+
+| Option | Description |
+|--------|-------------|
+| `-n`, `--namespace` | Sets the namespace(s) to collect from. Can be set to a single namespace, or multiple namespaces (comma-separated). When left empty, will use the current context's namespace from kubeconfig. |
+| `-o`, `--output_dir` | Sets the output directory. Defaults to current working directory. |
+| `-a`, `--logs_from_all_pods` | Collect logs from all pods in the selected namespace(s), and otherwise collect only from the operator and pods run by the operator. |
+| `-t`, `--timeout` | Time to wait for external commands to finish execution (Linux only). Defaults to 180s. Specify 0 to disable timeout. |
+| `--k8s_cli` | The K8s cli client to use (kubectl/oc/auto-detect). Defaults to auto-detect (chooses between 'kubectl' and 'oc'). Full paths can also be used. |
+| `-m`, `--mode` | Controls which resources are collected. In 'restricted' mode, only resources associated with the operator and have the label 'app=redis-enterprise' are collected. In 'all' mode, all resources are collected. Defaults to 'restricted' mode. |
+| `--collect_istio` | Collect data from istio-system namespace to debug potential problems related to istio ingress method. |
+| `--collect_empty_files` | Collect empty log files for missing resources. |
+| `--helm_release_name` | Collect resources related to the given Helm release name. |
+| `--collect_rbac_resources` | Temporary development flag. Collect all role based access control related custom resources. |
+| `-h`, `--help` | Show help message and exit. |
+
+{{< 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.22/networking/_index.md b/content/operate/kubernetes/7.22/networking/_index.md
new file mode 100644
index 0000000000..b13b6ddbe3
--- /dev/null
+++ b/content/operate/kubernetes/7.22/networking/_index.md
@@ -0,0 +1,51 @@
+---
+Title: Networking
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Configure networking and external access for Redis Enterprise clusters and databases on Kubernetes.
+hideListLinks: true
+linkTitle: Networking
+weight: 40
+url: '/operate/kubernetes/7.22/networking/'
+---
+
+Configure networking and external access for your Redis Enterprise deployment on Kubernetes. By default, Kubernetes doesn't allow external access to your Redis databases. Redis Enterprise for Kubernetes provides several methods to route external traffic to your clusters and databases.
+
+## Database connectivity
+
+Connect applications to your Redis Enterprise databases:
+
+- [Database connectivity]({{< relref "/operate/kubernetes/7.22/networking/database-connectivity" >}}) - Comprehensive guide to in-cluster and external database access, service discovery, and credentials management.
+
+## External routing methods
+
+Choose the appropriate method for your environment to enable external access:
+
+- [Ingress routing]({{< relref "/operate/kubernetes/7.22/networking/ingress" >}}) - Use NGINX or HAProxy ingress controllers with `ingress` API resources
+- [Istio ingress routing]({{< relref "/operate/kubernetes/7.22/networking/istio-ingress" >}}) - Use Istio service mesh with `Gateway` and `VirtualService` API resources
+- [OpenShift routes]({{< relref "/operate/kubernetes/7.22/networking/routes" >}}) - Use OpenShift-specific route resources for external traffic
+
+## Automatic ingress configuration
+
+For Active-Active databases, configure automatic ingress creation:
+
+- [REC external routing]({{< relref "/operate/kubernetes/7.22/networking/ingressorroutespec" >}}) - Use `ingressOrRouteSpec` field in RedisEnterpriseCluster (REC) for automatic ingress creation
+
+## `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.22/networking/ingressorroutespec" >}}) 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.
+
+## OSS Cluster API limitations
+
+When using [OSS Cluster API]({{< relref "/operate/rs/databases/configure/oss-cluster-api" >}}), clients must specify the IP addresses of Redis instances to perform operations. Since Pod IP addresses are internal to the Kubernetes cluster and not publicly accessible, **OSS Cluster API can only be used by clients running on pods within the same Kubernetes cluster as the Redis Enterprise pods.** Using OSS Cluster API from outside the Kubernetes cluster is not tested and currently not supported.
+
+For applications that need to access Redis databases from outside the Kubernetes cluster, use standard Redis Enterprise connectivity methods with the external routing options described above (Ingress controllers, load balancers, or OpenShift routes). These methods do not support OSS Cluster API but provide reliable external access to your Redis databases.
+
+## 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.22/networking/database-connectivity.md b/content/operate/kubernetes/7.22/networking/database-connectivity.md
new file mode 100644
index 0000000000..4b9012e1e7
--- /dev/null
+++ b/content/operate/kubernetes/7.22/networking/database-connectivity.md
@@ -0,0 +1,295 @@
+---
+Title: Database connectivity
+alwaysopen: false
+categories:
+- docs
+- operate
+- kubernetes
+description: Connect applications to Redis Enterprise databases in Kubernetes clusters with in-cluster and external access patterns.
+linkTitle: Database connectivity
+weight: 1
+url: '/operate/kubernetes/7.22/networking/database-connectivity/'
+---
+
+Connecting applications to Redis Enterprise databases in Kubernetes involves understanding service discovery, credentials management, and access patterns. This guide covers the essential connectivity aspects unique to Kubernetes deployments.
+
+## Service types and access patterns
+
+When you create a RedisEnterpriseDatabase (REDB), the Redis Enterprise operator automatically creates Kubernetes services to route traffic to your database. Understanding these service types is crucial for proper connectivity.
+
+### Default service creation
+
+By default, the operator creates two services for each database:
+
+- ClusterIP service - Provides a stable cluster-internal IP address.
+- Headless service - Enables direct pod-to-pod communication and service discovery.
+
+Both services are created in the same namespace as your database and follow predictable naming conventions.
+
+### Service types
+
+Redis Enterprise supports three service types for database access:
+
+| Service Type | Access Scope | Use Case |
+|--------------|--------------|----------|
+| `ClusterIP` | Cluster-internal only | Applications running within the same Kubernetes cluster |
+| `headless` | Cluster-internal only | Direct pod access, service discovery, StatefulSet scenarios |
+| `LoadBalancer` | External access | Applications outside the Kubernetes cluster |
+
+To configure the service type, use the `databaseServiceType` field in your REC's `servicesRiggerSpec`.
+
+## In-cluster database access
+
+For applications running within your Kubernetes cluster, use the automatically created services to connect to your databases.
+
+### Retrieve connection information
+
+Database connection details are stored in a Kubernetes secret maintained by the database controller. This secret contains:
+
+- Database port (`port`)
+- Service names (`service_names`)
+- Database password (`password`)
+
+1. Get the secret name from your database resource:
+
+ ```sh
+ kubectl get redb -o jsonpath="{.spec.databaseSecretName}"
+ ```
+
+ The secret name typically follows the pattern `redb-`.
+
+2. Retrieve the database port:
+
+ ```sh
+ kubectl get secret redb- -o jsonpath="{.data.port}" | base64 --decode
+ ```
+
+3. Get available service names:
+
+ ```sh
+ kubectl get secret redb- -o jsonpath="{.data.service_names}" | base64 --decode
+ ```
+
+4. Retrieve the database password:
+
+ ```sh
+ kubectl get secret redb- -o jsonpath="{.data.password}" | base64 --decode
+ ```
+
+### Service naming and DNS resolution
+
+Services follow standard Kubernetes DNS naming conventions:
+
+- Service FQDN: `..svc.cluster.local`
+- Short name: `` (within the same namespace)
+
+For a database named `mydb` in namespace `production`, the service names would be:
+- ClusterIP service: `mydb.production.svc.cluster.local`
+- Headless service: `mydb-headless.production.svc.cluster.local`
+
+### Connect from within the cluster
+
+Use any service name from the `service_names` list to connect:
+
+```sh
+redis-cli -h -p
+```
+
+Then authenticate with the retrieved password:
+
+```sh
+auth
+```
+
+## External database access
+
+To access databases from outside the Kubernetes cluster, you need to configure external routing. Currently supported methods for external access are ingress controllers or OpenShift routes.
+
+### Ingress controllers
+
+Redis Enterprise for Kubernetes only supports the following ingress controllers for external database access:
+
+- NGINX Ingress - Supports SSL passthrough for Redis connections
+- HAProxy Ingress - Built-in SSL passthrough support
+- Istio Gateway - Service mesh integration with advanced traffic management
+
+See [Ingress routing]({{< relref "/operate/kubernetes/7.22/networking/ingress" >}}) for detailed configuration steps.
+
+### OpenShift routes
+
+OpenShift users can leverage routes for external access:
+
+```yaml
+apiVersion: route.openshift.io/v1
+kind: Route
+metadata:
+ name: redis-route
+spec:
+ to:
+ kind: Service
+ name:
+ port:
+ targetPort: redis
+ tls:
+ termination: passthrough
+```
+
+See [OpenShift routes]({{< relref "/operate/kubernetes/7.22/networking/routes" >}}) for complete setup instructions.
+
+## Service ports and configuration
+
+### Default port behavior
+
+- Redis Enterprise databases use dynamic port allocation.
+- Port numbers are assigned automatically during database creation.
+- The actual port is stored in the database secret.
+
+### Custom port configuration
+
+You can specify custom ports using the `databasePort` field in your REDB specification:
+
+```yaml
+apiVersion: app.redislabs.com/v1alpha1
+kind: RedisEnterpriseDatabase
+metadata:
+ name: mydb
+spec:
+ memorySize: 256MB
+ databasePort: 6379
+```
+
+Custom ports replace the default service port and are reflected in the database secret.
+
+## Credentials and secrets management
+
+### Database secrets structure
+
+Each database has an associated Kubernetes secret containing connection details:
+
+```yaml
+apiVersion: v1
+kind: Secret
+metadata:
+ name: redb-
+type: Opaque
+data:
+ port:
+ service_names:
+ password:
+```
+
+### Using secrets in applications
+
+Reference database secrets in your application deployments:
+
+```yaml
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: my-app
+spec:
+ template:
+ spec:
+ containers:
+ - name: app
+ image: my-app:latest
+ env:
+ - name: REDIS_HOST
+ value: ""
+ - name: REDIS_PORT
+ valueFrom:
+ secretKeyRef:
+ name: redb-
+ key: port
+ - name: REDIS_PASSWORD
+ valueFrom:
+ secretKeyRef:
+ name: redb-
+ key: password
+```
+
+### Default user configuration
+
+By default, databases create a default user with full access. You can disable this behavior:
+
+```yaml
+apiVersion: app.redislabs.com/v1alpha1
+kind: RedisEnterpriseDatabase
+metadata:
+ name: mydb
+spec:
+ memorySize: 256MB
+ defaultUser: false
+```
+
+When `defaultUser` is disabled, the database secret is not created, and you must configure custom authentication.
+
+## Connection examples
+
+### Python application
+
+```python
+import redis
+import base64
+import os
+
+# Read from Kubernetes secret (mounted as environment variables)
+host = os.getenv('REDIS_HOST')
+port = int(os.getenv('REDIS_PORT'))
+password = os.getenv('REDIS_PASSWORD')
+
+# Create Redis connection
+r = redis.Redis(host=host, port=port, password=password, decode_responses=True)
+
+# Test connection
+r.ping()
+```
+
+### Node.js application
+
+```javascript
+const redis = require('redis');
+
+const client = redis.createClient({
+ host: process.env.REDIS_HOST,
+ port: process.env.REDIS_PORT,
+ password: process.env.REDIS_PASSWORD
+});
+
+client.on('connect', () => {
+ console.log('Connected to Redis');
+});
+```
+
+## Troubleshooting connectivity
+
+### Common issues
+
+1. Connection refused - Verify service names and ports from the database secret.
+2. Authentication failed - Check password encoding and special characters.
+3. DNS resolution - Ensure applications use correct service FQDNs.
+4. Network policies - Verify Kubernetes network policies allow traffic.
+
+### Debugging steps
+
+1. Verify service creation:
+ ```sh
+ kubectl get services -l app=redis-enterprise
+ ```
+
+2. Check service endpoints:
+ ```sh
+ kubectl get endpoints
+ ```
+
+3. Test connectivity from within cluster:
+ ```sh
+ kubectl run redis-test --image=redis:latest -it --rm -- redis-cli -h -p
+ ```
+
+## Related topics
+
+- [Ingress routing]({{< relref "/operate/kubernetes/7.22/networking/ingress" >}}) - Configure external access with ingress controllers
+- [OpenShift routes]({{< relref "/operate/kubernetes/7.22/networking/routes" >}}) - External access using OpenShift routes
+- [Database controller]({{< relref "/operate/kubernetes/7.22/re-databases/db-controller" >}}) - Database lifecycle management
+- [Security]({{< relref "/operate/kubernetes/7.22/security" >}}) - TLS configuration and access control
diff --git a/content/operate/kubernetes/7.22/networking/ingress.md b/content/operate/kubernetes/7.22/networking/ingress.md
new file mode 100644
index 0000000000..036b2fde68
--- /dev/null
+++ b/content/operate/kubernetes/7.22/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.22/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.22/networking/istio-ingress" >}})
+
+{{}}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: