Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
28 changes: 20 additions & 8 deletions .github/workflows/main-staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,12 @@ jobs:
rm -r "content/operate/kubernetes/${version_to_remove}"
done

cp -r "content/operate/kubernetes/${version}"/* content/operate/kubernetes/
rm -r "content/operate/kubernetes/${version}"
# relrefs should not include version
find "content/operate/kubernetes/${version}" -type f | while read file; do
awk '{gsub(/\(\{\{< relref "\/operate\/kubernetes\/'${version}'/, "({{< relref \"/operate/kubernetes") }1' "$file" > tmpfile && mv tmpfile "$file"
done

rsync -a --delete-after "content/operate/kubernetes/${version}"/ content/operate/kubernetes/
sed -i 's/id="versionSelectorKubernetesValue" class="version-selector-control">latest/id="versionSelectorKubernetesValue" class="version-selector-control">v'"${version}"'/' layouts/partials/docs-nav.html
sed -i 's/linkTitle: '"${version}"'/linkTitle: Redis for Kubernetes/' content/operate/kubernetes/_index.md

Expand All @@ -110,8 +114,12 @@ jobs:
rm -r "content/operate/rs/${version_to_remove}"
done

cp -r "content/operate/rs/${version}"/* content/operate/rs/
rm -r "content/operate/rs/${version}"
# relrefs should not include version
find "content/operate/rs/${version}" -type f | while read file; do
awk '{gsub(/\(\{\{< relref "\/operate\/rs\/'${version}'/, "({{< relref \"/operate/rs") }1' "$file" > tmpfile && mv tmpfile "$file"
done

rsync -a --delete-after "content/operate/rs/${version}"/ content/operate/rs/
sed -i 's/id="versionSelectorRsValue" class="version-selector-control">latest/id="versionSelectorRsValue" class="version-selector-control">v'"${version}"'/' layouts/partials/docs-nav.html
sed -i 's/linkTitle: '"${version}"'/linkTitle: Redis Software/' content/operate/rs/_index.md

Expand All @@ -133,8 +141,12 @@ jobs:
rm -r "content/integrate/redis-data-integration/${version_to_remove}"
done

cp -r "content/integrate/redis-data-integration/${version}"/* content/integrate/redis-data-integration/
rm -r "content/integrate/redis-data-integration/${version}"
# relrefs should not include version
find "content/operate/redis-data-integration/${version}" -type f | while read file; do
awk '{gsub(/\(\{\{< relref "\/operate\/redis-data-integration\/'${version}'/, "({{< relref \"/operate/redis-data-integration") }1' "$file" > tmpfile && mv tmpfile "$file"
done

rsync -a --delete-after "content/operate/redis-data-integration/${version}"/ content/operate/redis-data-integration/
sed -i 's/id="versionSelectorRedis-Data-IntegrationValue" class="version-selector-control">latest/id="versionSelectorRedis-Data-IntegrationValue" class="version-selector-control">v'"${version}"'/' layouts/partials/docs-nav.html
sed -i 's/linkTitle: '"${version}"'/linkTitle: Redis Data Integration/' content/integrate/redis-data-integration/_index.md

Expand Down Expand Up @@ -181,9 +193,9 @@ jobs:
for versioned_build in "${versioned_builds[@]}"; do
product=$(awk 'BEGIN{FS=OFS="-"}{NF--; print}' <<< $versioned_build)
if [[ "${product}" == "redis-data-integration" ]]; then
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/integrate/${product}" "gs://${BUCKET}/${versioned_build}/integrate/${product}"
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/integrate/${product}/" "gs://${BUCKET}/${bucket_path}/${versioned_build}/integrate/${product}"
else
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/operate/${product}" "gs://${BUCKET}/${versioned_build}/operate/${product}"
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/operate/${product}/" "gs://${BUCKET}/${bucket_path}/${versioned_build}/operate/${product}"
fi
done

Expand Down
24 changes: 18 additions & 6 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,12 @@ jobs:
rm -r "content/operate/kubernetes/${version_to_remove}"
done

cp -r "content/operate/kubernetes/${version}"/* content/operate/kubernetes/
rm -r "content/operate/kubernetes/${version}"
# relrefs should not include version
find "content/operate/kubernetes/${version}" -type f | while read file; do
awk '{gsub(/\(\{\{< relref "\/operate\/kubernetes\/'${version}'/, "({{< relref \"/operate/kubernetes") }1' "$file" > tmpfile && mv tmpfile "$file"
done

rsync -a --delete-after "content/operate/kubernetes/${version}"/ content/operate/kubernetes/
sed -i 's/id="versionSelectorKubernetesValue" class="version-selector-control">latest/id="versionSelectorKubernetesValue" class="version-selector-control">v'"${version}"'/' layouts/partials/docs-nav.html
sed -i 's/linkTitle: '"${version}"'/linkTitle: Redis for Kubernetes/' content/operate/kubernetes/_index.md

Expand All @@ -110,8 +114,12 @@ jobs:
rm -r "content/operate/rs/${version_to_remove}"
done

cp -r "content/operate/rs/${version}"/* content/operate/rs/
rm -r "content/operate/rs/${version}"
# relrefs should not include version
find "content/operate/rs/${version}" -type f | while read file; do
awk '{gsub(/\(\{\{< relref "\/operate\/rs\/'${version}'/, "({{< relref \"/operate/rs") }1' "$file" > tmpfile && mv tmpfile "$file"
done

rsync -a --delete-after "content/operate/rs/${version}"/ content/operate/rs/
sed -i 's/id="versionSelectorRsValue" class="version-selector-control">latest/id="versionSelectorRsValue" class="version-selector-control">v'"${version}"'/' layouts/partials/docs-nav.html
sed -i 's/linkTitle: '"${version}"'/linkTitle: Redis Software/' content/operate/rs/_index.md

Expand All @@ -133,8 +141,12 @@ jobs:
rm -r "content/integrate/redis-data-integration/${version_to_remove}"
done

cp -r "content/integrate/redis-data-integration/${version}"/* content/integrate/redis-data-integration/
rm -r "content/integrate/redis-data-integration/${version}"
# relrefs should not include version
find "content/operate/redis-data-integration/${version}" -type f | while read file; do
awk '{gsub(/\(\{\{< relref "\/operate\/redis-data-integration\/'${version}'/, "({{< relref \"/operate/redis-data-integration") }1' "$file" > tmpfile && mv tmpfile "$file"
done

rsync -a --delete-after "content/operate/redis-data-integration/${version}"/ content/operate/redis-data-integration/
sed -i 's/id="versionSelectorRedis-Data-IntegrationValue" class="version-selector-control">latest/id="versionSelectorRedis-Data-IntegrationValue" class="version-selector-control">v'"${version}"'/' layouts/partials/docs-nav.html
sed -i 's/linkTitle: '"${version}"'/linkTitle: Redis Data Integration/' content/integrate/redis-data-integration/_index.md

Expand Down
12 changes: 6 additions & 6 deletions content/operate/kubernetes/7.4.6/active-active/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ Versions 6.4.2-6 or later fully support the Active-Active controller. Some of th

This setup method includes the following steps:

1. Gather REC credentials and [prepare participating clusters]({{< relref "/operate/kubernetes/active-active/prepare-clusters.md" >}}).
2. Create [`RedisEnterpriseRemoteCluster` (RERC)]({{< relref "/operate/kubernetes/active-active/create-reaadb#create-rerc" >}}) resources.
3. Create [`RedisEnterpriseActiveActiveDatabase` (REAADB)]({{< relref "/operate/kubernetes/active-active/create-reaadb#create-reaadb" >}}) resource.
1. Gather REC credentials and [prepare participating clusters]({{< relref "/operate/kubernetes/7.4.6/active-active/prepare-clusters.md" >}}).
2. Create [`RedisEnterpriseRemoteCluster` (RERC)]({{< relref "/operate/kubernetes/7.4.6/active-active/create-reaadb#create-rerc" >}}) resources.
3. Create [`RedisEnterpriseActiveActiveDatabase` (REAADB)]({{< relref "/operate/kubernetes/7.4.6/active-active/create-reaadb#create-reaadb" >}}) resource.

### `crdb-cli` method

Expand All @@ -49,7 +49,7 @@ For versions 6.4.2 or earlier, this Active-Active setup method includes the foll

[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/active-active/prepare-clusters.md" >}}) then [create an Active-Active database]({{< relref "/operate/kubernetes/active-active/create-reaadb.md" >}}).
To create an Active-Active Redis Enterprise deployment for Kubernetes with these new features, first [prepare participating clusters]({{< relref "/operate/kubernetes/7.4.6/active-active/prepare-clusters.md" >}}) then [create an Active-Active database]({{< relref "/operate/kubernetes/7.4.6/active-active/create-reaadb.md" >}}).

### Preview versions

Expand All @@ -76,13 +76,13 @@ If you are using a preview version of these features (operator version 6.4.2-4 o

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]({{<relref "/operate/kubernetes/reference/redis_enterprise_active_active_database_api">}}).
For a full list of fields and options, see the [REAADB API reference]({{<relref "/operate/kubernetes/7.4.6/reference/redis_enterprise_active_active_database_api">}}).

### 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]({{<relref "/operate/kubernetes/reference/redis_enterprise_remote_cluster_api">}}).
For a full list of fields and options, see the [RERC API reference]({{<relref "/operate/kubernetes/7.4.6/reference/redis_enterprise_remote_cluster_api">}}).

### Limitations

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ linkTitle: Create Active-Active with crdb-cli
weight: 99
url: '/operate/kubernetes/7.4.6/active-active/create-aa-crdb-cli/'
---
{{<note>}} 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/active-active/create-reaadb.md" >}}).{{</note>}}
{{<note>}} 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.4.6/active-active/create-reaadb.md" >}}).{{</note>}}

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/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.
Creating an Active-Active database requires routing [network access]({{< relref "/operate/kubernetes/7.4.6/networking/" >}}) between two Redis Enterprise clusters residing in different Kubernetes clusters. Without the proper access configured for each cluster, syncing between the databases instances will fail.

This process consists of:

Expand All @@ -27,8 +27,8 @@ This process consists of:

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/networking/ingress.md" >}}) (or [route resources]({{< relref "/operate/kubernetes/networking/routes.md" >}}) on OpenShift).
- A working [Redis Enterprise cluster (REC)]({{< relref "/operate/kubernetes/reference/redis_enterprise_cluster_api" >}}) with a unique name.
- Routing for external access with an [ingress resources]({{< relref "/operate/kubernetes/7.4.6/networking/ingress.md" >}}) (or [route resources]({{< relref "/operate/kubernetes/7.4.6/networking/routes.md" >}}) on OpenShift).
- A working [Redis Enterprise cluster (REC)]({{< relref "/operate/kubernetes/7.4.6/reference/redis_enterprise_cluster_api" >}}) with a unique name.
- Enough memory resources available for the database (see [hardware requirements]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md" >}})).

{{<note>}} 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.{{</note>}}
Expand Down Expand Up @@ -70,7 +70,7 @@ You'll need to create DNS aliases to resolve your API hostname `<api-hostname>`,
- 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/security/manage-rec-credentials.md" >}}) `<username> <password>`:
- [**REC admin credentials**]({{< relref "/operate/kubernetes/7.4.6/security/manage-rec-credentials.md" >}}) `<username> <password>`:
- Description: Admin username and password for the REC stored in a secret
- Format: string
- Example value: username: `[email protected]`, password: `something`
Expand Down Expand Up @@ -100,7 +100,7 @@ From inside your K8s cluster, edit your Redis Enterprise cluster (REC) resource

### Using ingress controller

1. If your cluster uses an [ingress controller]({{< relref "/operate/kubernetes/networking/ingress.md" >}}), add the following to the `spec` section of your REC resource file.
1. If your cluster uses an [ingress controller]({{< relref "/operate/kubernetes/7.4.6/networking/ingress.md" >}}), add the following to the `spec` section of your REC resource file.

Nginx:

Expand Down Expand Up @@ -147,7 +147,7 @@ HAproxy:

#### If using Istio Gateway and VirtualService

No changes are required to the REC spec if you are using [Istio]({{< relref "/operate/kubernetes/networking/istio-ingress.md" >}}) in place of an ingress controller. The `activeActive` section added above creates ingress resources. The two custom resources used to configure Istio (Gateway and VirtualService) replace the need for ingress resources.
No changes are required to the REC spec if you are using [Istio]({{< relref "/operate/kubernetes/7.4.6/networking/istio-ingress.md" >}}) in place of an ingress controller. The `activeActive` section added above creates ingress resources. The two custom resources used to configure Istio (Gateway and VirtualService) replace the need for ingress resources.

{{<warning>}}
These custom resources are not controlled by the operator and will need to be configured and maintained manually.
Expand All @@ -174,7 +174,7 @@ For each cluster, verify the VirtualService resource has two `- match:` blocks i

1. Make sure you have DNS aliases for each database that resolve your API hostname `<api-hostname>`,`<ingress-suffix>`, `<replication-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/networking/routes.md" >}}), add the following to the `spec` section of your Redis Enterprise cluster (REC) resource file.
1. If your cluster uses [OpenShift routes]({{< relref "/operate/kubernetes/7.4.6/networking/routes.md" >}}), add the following to the `spec` section of your Redis Enterprise cluster (REC) resource file.

```sh
activeActive:
Expand All @@ -195,7 +195,7 @@ For each cluster, verify the VirtualService resource has two `- match:` blocks i

## 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/active-active/create-aa-crdb-cli#document-required-parameters" >}}) for each Redis Enterprise cluster.
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.4.6/active-active/create-aa-crdb-cli#document-required-parameters" >}}) for each Redis Enterprise cluster.

```sh
crdb-cli crdb create \
Expand All @@ -214,4 +214,4 @@ See the [`crdb-cli` reference]({{< relref "/operate/rs/references/cli-utilities/

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/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`.
You can connect to your databases with the instructions in [Manage databases]({{< relref "/operate/kubernetes/7.4.6/re-databases/db-controller#connect-to-a-database" >}}). Set a test key with `SET foo bar` in the first database. If your Active-Active deployment is working properly, when connected to your second database, `GET foo` should output `bar`.
Loading