diff --git a/content/operate/kubernetes/_index.md b/content/operate/kubernetes/_index.md index dc847566df..fe5eda4f46 100644 --- a/content/operate/kubernetes/_index.md +++ b/content/operate/kubernetes/_index.md @@ -30,82 +30,82 @@ Redis Enterprise for Kubernetes is compatible with [CNCF-conformant](https://www Deploy Redis Enterprise on your Kubernetes cluster and create your first database. -- [Quick start deployment]({{< relref "/operate/kubernetes/deployment/quick-start" >}}) -- [Deploy with Helm]({{< relref "/operate/kubernetes/deployment/helm" >}}) -- [Deploy on OpenShift]({{< relref "/operate/kubernetes/deployment/openshift" >}}) -- [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/reference/supported_k8s_distributions" >}}) +- [Quick start deployment](/content/operate/kubernetes/deployment/quick-start.md) +- [Deploy with Helm](/content/operate/kubernetes/deployment/helm.md) +- [Deploy on OpenShift](/content/operate/kubernetes/deployment/openshift/_index.md) +- [Supported Kubernetes distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md) ## Redis Enterprise clusters (REC) -Create and manage [Redis Enterprise clusters]({{< relref "/operate/kubernetes/re-clusters" >}}) on Kubernetes. +Create and manage [Redis Enterprise clusters](/content/operate/kubernetes/re-clusters/_index.md) on Kubernetes. -- [Connect to admin console]({{< relref "/operate/kubernetes/re-clusters/connect-to-admin-console" >}}) -- [Redis Flex]({{< relref "/operate/kubernetes/flex" >}}) -- [Multi-namespace deployment]({{< relref "/operate/kubernetes/re-clusters/multi-namespace" >}}) -- [Cluster recovery]({{< relref "/operate/kubernetes/re-clusters/cluster-recovery" >}}) -- [REC API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api" >}}) +- [Connect to admin console](/content/operate/kubernetes/re-clusters/connect-to-admin-console.md) +- [Redis Flex](/content/operate/kubernetes/flex/_index.md) +- [Multi-namespace deployment](/content/operate/kubernetes/re-clusters/multi-namespace.md) +- [Cluster recovery](/content/operate/kubernetes/re-clusters/cluster-recovery.md) +- [REC API reference](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md) ## Redis Enterprise databases (REDB) -Create and manage [Redis Enterprise databases]({{< relref "/operate/kubernetes/re-databases" >}}) using Kubernetes resources. +Create and manage [Redis Enterprise databases](/content/operate/kubernetes/re-databases/_index.md) using Kubernetes resources. -- [Database controller]({{< relref "/operate/kubernetes/re-databases/db-controller" >}}) -- [Create replica databases]({{< relref "/operate/kubernetes/re-databases/replica-redb" >}}) -- [REDB API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api" >}}) +- [Database controller](/content/operate/kubernetes/re-databases/db-controller.md) +- [Create replica databases](/content/operate/kubernetes/re-databases/replica-redb.md) +- [REDB API reference](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md) ## Active-Active databases -Set up globally distributed [Active-Active databases]({{< relref "/operate/kubernetes/active-active" >}}) across multiple Kubernetes clusters. +Set up globally distributed [Active-Active databases](/content/operate/kubernetes/active-active/_index.md) across multiple Kubernetes clusters. -- [Prepare participating clusters]({{< relref "/operate/kubernetes/active-active/prepare-clusters" >}}) -- [Create Active-Active database]({{< relref "/operate/kubernetes/active-active/create-reaadb" >}}) -- [Global configuration]({{< relref "/operate/kubernetes/active-active/global-config" >}}) -- [REAADB API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api" >}}) -- [Remote cluster API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api" >}}) +- [Prepare participating clusters](/content/operate/kubernetes/active-active/prepare-clusters.md) +- [Create Active-Active database](/content/operate/kubernetes/active-active/create-reaadb.md) +- [Global configuration](/content/operate/kubernetes/active-active/global-config.md) +- [REAADB API reference](/content/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api.md) +- [Remote cluster API reference](/content/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api.md) ## Security -Manage [secure connections]({{< relref "/operate/kubernetes/security" >}}) and access control for your Redis Enterprise deployment. +Manage [secure connections](/content/operate/kubernetes/security/_index.md) and access control for your Redis Enterprise deployment. -- [Access control]({{< relref "/operate/kubernetes/security/access-control" >}}) -- [Manage REC credentials]({{< relref "/operate/kubernetes/security/authentication/manage-rec-credentials" >}}) -- [Manage REC certificates]({{< relref "/operate/kubernetes/security/certificates/manage-rec-certificates" >}}) -- [Internode encryption]({{< relref "/operate/kubernetes/security/certificates/internode-encryption" >}}) -- [LDAP authentication]({{< relref "/operate/kubernetes/security/authentication/ldap" >}}) +- [Access control](/content/operate/kubernetes/security/access-control/_index.md) +- [Manage REC credentials](/content/operate/kubernetes/security/authentication/manage-rec-credentials.md) +- [Manage REC certificates](/content/operate/kubernetes/security/certificates/manage-rec-certificates.md) +- [Internode encryption](/content/operate/kubernetes/security/certificates/internode-encryption.md) +- [LDAP authentication](/content/operate/kubernetes/security/authentication/ldap.md) ## Reference Use the Kubernetes API and command-line tools to manage your Redis Enterprise deployment. -- [Redis Enterprise cluster API (REC)]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api" >}}) -- [Redis Enterprise database API (REDB)]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api" >}}) -- [Active-Active database API (REAADB)]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api" >}}) -- [Remote cluster API (RERC)]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api" >}}) +- [Redis Enterprise cluster API (REC)](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md) +- [Redis Enterprise database API (REDB)](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md) +- [Active-Active database API (REAADB)](/content/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api.md) +- [Remote cluster API (RERC)](/content/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api.md) ## Logs & monitoring Monitor and troubleshoot your Redis Enterprise deployment. -- [Collect logs]({{< relref "/operate/kubernetes/logs/collect-logs" >}}) -- [Connect to Prometheus operator]({{< relref "/operate/kubernetes/re-clusters/connect-prometheus-operator" >}}) +- [Collect logs](/content/operate/kubernetes/logs/collect-logs.md) +- [Connect to Prometheus operator](/content/operate/kubernetes/re-clusters/connect-prometheus-operator.md) ## Upgrade Keep your Redis Enterprise deployment up to date. -- [Upgrade Redis cluster]({{< relref "/operate/kubernetes/upgrade/upgrade-redis-cluster" >}}) -- [Upgrade with OpenShift CLI]({{< relref "/operate/kubernetes/upgrade/openshift-cli" >}}) -- [Upgrade with OLM]({{< relref "/operate/kubernetes/upgrade/upgrade-olm" >}}) +- [Upgrade Redis cluster](/content/operate/kubernetes/upgrade/upgrade-redis-cluster.md) +- [Upgrade with OpenShift CLI](/content/operate/kubernetes/upgrade/openshift-cli.md) +- [Upgrade with OLM](/content/operate/kubernetes/upgrade/upgrade-olm.md) ## Release notes Stay informed about new features, enhancements, and fixes. -- [Release notes]({{< relref "/operate/kubernetes/release-notes" >}}) +- [Release notes](/content/operate/kubernetes/release-notes/_index.md) ## 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 +- [Redis Enterprise Software](/content/operate/rs/_index.md) +- [Redis Cloud](/content/operate/rc/_index.md) +- [Redis Open Source](/content/operate/oss_and_stack/_index.md) +- [Glossary](/content/glossary/_index.md) \ No newline at end of file diff --git a/content/operate/kubernetes/architecture/_index.md b/content/operate/kubernetes/architecture/_index.md index 7443e0432b..360b35f9cf 100644 --- a/content/operate/kubernetes/architecture/_index.md +++ b/content/operate/kubernetes/architecture/_index.md @@ -18,9 +18,9 @@ Redis Enterprise for Kubernetes gives you the speed and durability of [Redis Ent Redis Enterprise for Kubernetes is compatible with [CNCF-conformant](https://www.cncf.io/training/certification/software-conformance/) Kubernetes platforms. The operator follows standard Kubernetes APIs and practices and is designed to run consistently across certified Kubernetes environments. -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. +Each version of Redis Enterprise for Kubernetes is tested to ensure the version of Redis Enterprise works with the [supported Kubernetes distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md) 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.]({{}}) +Supported platforms are listed in the [release notes](/content/operate/kubernetes/release-notes/_index.md) and in the [supported platforms reference.](/content/operate/kubernetes/reference/supported_k8s_distributions.md) ## Architecture @@ -46,15 +46,15 @@ When the operator is installed, the following resources are created: 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. +Redis Enterprise for Kubernetes also supports [multi-namespace deployments](/content/operate/kubernetes/architecture/deployment-options.md), 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. +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](/content/operate/kubernetes/deployment/_index.md), [upgrades](/content/operate/kubernetes/upgrade/_index.md), and [scaling](/content/operate/kubernetes/recommendations/sizing-on-kubernetes.md) 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]({{}}). +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](/content/operate/kubernetes/re-clusters/multi-namespace.md). ## Custom resource definitions @@ -64,49 +64,49 @@ For settings managed by the operator, any changes made outside of the CR YAML fi ## 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]({{}})). +A Redis Enterprise cluster is a set of Redis Enterprise nodes pooling resources. Each node is capable of running multiple Redis instances ([shards](/content/operate/rs/references/terminology.md)). {{< 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)). +A Redis cluster is created and managed by the [RedisEnterpriseCluster (REC)](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md) [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. +See the [RedisEnterpriseCluster API Reference](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md) 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]({{}})). +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](/content/operate/rs/references/terminology.md)). -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. +Redis databases are created and managed by the [RedisEnterpriseDatabase (REDB)](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md) [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. +An operator can manage a database in the same namespace, or a different namespace. See ["Flexible deployment"](/content/operate/kubernetes/architecture/deployment-options.md) options and ["Manage databases in multiple namespaces"](/content/operate/kubernetes/re-clusters/multi-namespace.md) for more information. -See the [RedisEnterpriseDatabase (REDB) API Reference]({{}}) for a full list of fields and settings. +See the [RedisEnterpriseDatabase (REDB) API Reference](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md) 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. +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](/content/operate/kubernetes/security/authentication/ldap.md) and [internode encryption](/content/operate/kubernetes/security/certificates/internode-encryption.md) 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. +Redis Enterprise for Kubernetes uses the [RedisEnterpriseCluster (REC)](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md) [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. +See [Manage REC credentials](/content/operate/kubernetes/security/authentication/manage-rec-credentials.md) 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. +See [Manage REC certificates](/content/operate/kubernetes/security/certificates/manage-rec-certificates.md) 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. +See [Add client certificates](/content/operate/kubernetes/security/certificates/add-client-certificates.md) 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). +[Persistent storage is mandatory for Redis Enterprise.](/content/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage.md) 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). @@ -114,7 +114,7 @@ PVCs are created with a specific size and [can be expanded](https://kubernetes.i ### Redis Flex -Redis Enterprise Software for Kubernetes supports [Redis Flex]({{}}) (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) keys and values while frequently used (hot) keys and values are stored in RAM. This improves performance and lowers costs for large datasets. +Redis Enterprise Software for Kubernetes supports [Redis Flex](/content/operate/kubernetes/flex/_index.md) (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) keys and values while frequently used (hot) keys and values are 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. @@ -124,13 +124,13 @@ By default, Kubernetes doesn't allow you to access your Redis database from outs - 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/networking/routes" >}}) to route external traffic. +- OpenShift uses [routes](/content/operate/kubernetes/networking/routes.md) to route external traffic. -The [Active-Active databases](#active-active-databases) require one of above routing methods to be configured in the REC with the [ingressOrRouteSpec field]({{}}). +The [Active-Active databases](#active-active-databases) require one of above routing methods to be configured in the REC with the [ingressOrRouteSpec field](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#specingressorroutespec). ## 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. +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](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#specservicesriggerspec) 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. @@ -138,22 +138,22 @@ Kubernetes is a dynamic environment, with nodes and pods changing as needed. The ## 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/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. +On Kubernetes, Redis Enterprise [Active-Active](/content/operate/rs/databases/active-active/_index.md) databases provide read and write access to the same dataset from different Kubernetes clusters. Creating an Active-Active database requires routing [network access](/content/operate/kubernetes/networking/_index.md) 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/" >}}). +For more details and installation information, see [Active-Active databases](/content/operate/kubernetes/active-active/_index.md). For more general information about Active-Active, see the [Redis Enterprise Software docs](/content/operate/rs/databases/active-active/_index.md). ## 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. +The [RedisEnterpriseRemoteCluster (RERC)](/content/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api.md) 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. +See the [RERC API reference](/content/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api.md) 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. +See the [REAADB API reference](/content/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api.md) 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. +To collect metrics data from your databases and Redis Enterprise cluster (REC), you can [connect your Prometheus](/content/operate/kubernetes/re-clusters/connect-prometheus-operator.md) 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/architecture/deployment-options.md b/content/operate/kubernetes/architecture/deployment-options.md index 33dfd20795..5b57a441be 100644 --- a/content/operate/kubernetes/architecture/deployment-options.md +++ b/content/operate/kubernetes/architecture/deployment-options.md @@ -19,13 +19,13 @@ The Redis Enterprise cluster (REC) custom resource must reside in the same names ## 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/deployment/quick-start" >}}). +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](/content/operate/kubernetes/deployment/quick-start.md). {{< image filename="/images/k8s/k8s-deploy-one-to-one.png" >}} ## Single REC and multiple namespaces (one-to-many) -Multiple Redis Enterprise databases (REDB) spread across multiple namespaces within the same K8s cluster can be associated with the same Redis Enterprise cluster (REC). See [Manage databases in multiple namespaces]({{< relref "/operate/kubernetes/re-clusters/multi-namespace" >}}) for more information. +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](/content/operate/kubernetes/re-clusters/multi-namespace.md) for more information. {{< image filename="/images/k8s/k8s-deploy-one-to-many.png" >}} @@ -35,7 +35,7 @@ A single Kubernetes cluster can contain multiple Redis Enterprise clusters (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/re-clusters/multi-namespace" >}}) for more information. +See [Manage databases in multiple namespaces](/content/operate/kubernetes/re-clusters/multi-namespace.md) for more information. {{< image filename="/images/k8s/k8s-deploy-many-to-many-new.png" >}} diff --git a/content/operate/kubernetes/deployment/_index.md b/content/operate/kubernetes/deployment/_index.md index 1c15a39ee5..d6cd8ff1b2 100644 --- a/content/operate/kubernetes/deployment/_index.md +++ b/content/operate/kubernetes/deployment/_index.md @@ -19,43 +19,43 @@ The Redis Enterprise operator uses custom resource definitions (CRDs) to manage Get started quickly with a basic Redis Enterprise deployment: -- [Deploy Redis Enterprise for Kubernetes]({{< relref "/operate/kubernetes/deployment/quick-start" >}}) - Step-by-step guide for most Kubernetes distributions -- [Deploy on OpenShift]({{< relref "/operate/kubernetes/deployment/openshift" >}}) - Specific instructions for OpenShift environments +- [Deploy Redis Enterprise for Kubernetes](/content/operate/kubernetes/deployment/quick-start.md) - Step-by-step guide for most Kubernetes distributions +- [Deploy on OpenShift](/content/operate/kubernetes/deployment/openshift/_index.md) - Specific instructions for OpenShift environments ## Deployment methods Choose the deployment method that best fits your environment: -- [Deploy with Helm]({{< relref "/operate/kubernetes/deployment/helm" >}}) - Use Helm charts for simplified deployment and management -- [Deploy with operator bundle]({{< relref "/operate/kubernetes/deployment/quick-start" >}}) - Direct deployment using kubectl and operator manifests +- [Deploy with Helm](/content/operate/kubernetes/deployment/helm.md) - Use Helm charts for simplified deployment and management +- [Deploy with operator bundle](/content/operate/kubernetes/deployment/quick-start.md) - Direct deployment using kubectl and operator manifests ## Container images Understand the container images used by the Redis Enterprise operator: -- [Container images]({{< relref "/operate/kubernetes/deployment/container-images" >}}) - Details about Redis Enterprise container images and registries +- [Container images](/content/operate/kubernetes/deployment/container-images.md) - Details about Redis Enterprise container images and registries ## Compatibility Before installing, verify compatibility with your environment: -- [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/reference/supported_k8s_distributions" >}}) - Check which Redis Enterprise operator version supports your Kubernetes distribution +- [Supported Kubernetes distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md) - 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/reference/supported_k8s_distributions" >}}) +- A Kubernetes cluster running a [supported distribution](/content/operate/kubernetes/reference/supported_k8s_distributions.md) - 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/recommendations/sizing-on-kubernetes" >}}) +- Sufficient resources as outlined in [sizing recommendations](/content/operate/kubernetes/recommendations/sizing-on-kubernetes.md) ## Next steps After deployment, you can: -- [Create a Redis Enterprise cluster (REC)]({{< relref "/operate/kubernetes/re-clusters" >}}) -- [Create Redis Enterprise databases (REDB)]({{< relref "/operate/kubernetes/re-databases" >}}) -- [Configure networking]({{< relref "/operate/kubernetes/networking" >}}) -- [Set up security]({{< relref "/operate/kubernetes/security" >}}) \ No newline at end of file +- [Create a Redis Enterprise cluster (REC)](/content/operate/kubernetes/re-clusters/_index.md) +- [Create Redis Enterprise databases (REDB)](/content/operate/kubernetes/re-databases/_index.md) +- [Configure networking](/content/operate/kubernetes/networking/_index.md) +- [Set up security](/content/operate/kubernetes/security/_index.md) \ No newline at end of file diff --git a/content/operate/kubernetes/deployment/container-images.md b/content/operate/kubernetes/deployment/container-images.md index d31a6783fa..9302984fbf 100644 --- a/content/operate/kubernetes/deployment/container-images.md +++ b/content/operate/kubernetes/deployment/container-images.md @@ -26,7 +26,8 @@ For security reasons (e.g., in air-gapped environments), you may want to pull th 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. {{}} +> [!WARNING] +> 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 @@ -34,11 +35,10 @@ private registry to avoid deployment failures when you hit your DockerHub rate l 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 >}} +> [!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**. ## Find container sources @@ -123,7 +123,7 @@ require authentication. If you do need authentication, add a [pull secret](https 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/deployment/container-images#push-images-to-a-private-container-registry" >}}) to the private container registry: +In the operator deployment file, 'containers:image' should point to the same repository and tag you used when [pushing](/content/operate/kubernetes/deployment/container-images.md#push-images-to-a-private-container-registry) to the private container registry: ```sh ${PRIVATE_REPO}/redislabs/operator:${OPERATOR_VERSION} @@ -241,7 +241,7 @@ The admission controller is included as part of the operator container image and 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/deployment/quick-start#enable-the-admission-controller" >}}). +For more information about configuring the admission controller, see [Enable the admission controller](/content/operate/kubernetes/deployment/quick-start.md#enable-the-admission-controller). ## Rate limiting with DockerHub diff --git a/content/operate/kubernetes/deployment/helm.md b/content/operate/kubernetes/deployment/helm.md index 8f2ce5a192..020eab1e7b 100644 --- a/content/operate/kubernetes/deployment/helm.md +++ b/content/operate/kubernetes/deployment/helm.md @@ -13,13 +13,13 @@ Helm charts provide a simple way to install the Redis Enterprise for Kubernetes ## Prerequisites -- A [supported distribution]({{< relref "/operate/kubernetes/reference/supported_k8s_distributions" >}}) of Kubernetes. +- A [supported distribution](/content/operate/kubernetes/reference/supported_k8s_distributions.md) of Kubernetes. - At least three worker nodes. - [Kubernetes client (kubectl)](https://kubernetes.io/docs/tasks/tools/). - [Helm 3.10 or later](https://helm.sh/docs/intro/install/) 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/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 suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment](/content/operate/kubernetes/security/allow-resource-adjustment.md). 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 @@ -135,11 +135,10 @@ helm install redis/redis-enterprise-operator \ ## Create the REC at install time -The chart can create the `RedisEnterpriseCluster` (REC) custom resource at install time, so a single `helm install` deploys both the operator and the cluster. To enable this, set `cluster.create` to `true` and define the cluster under `cluster.spec` in your values file. The `spec` field accepts any field from the `RedisEnterpriseCluster` CRD. For the full list, see the [RedisEnterpriseCluster API reference]({{}}). +The chart can create the `RedisEnterpriseCluster` (REC) custom resource at install time, so a single `helm install` deploys both the operator and the cluster. To enable this, set `cluster.create` to `true` and define the cluster under `cluster.spec` in your values file. The `spec` field accepts any field from the `RedisEnterpriseCluster` CRD. For the full list, see the [RedisEnterpriseCluster API reference](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md). -{{}} -`cluster.create` defaults to `false`. When `false`, the chart installs only the operator and you create the REC yourself. -{{}} +> [!NOTE] +> `cluster.create` defaults to `false`. When `false`, the chart installs only the operator and you create the REC yourself. 1. Create a values file with a `cluster` section. For example: @@ -208,9 +207,8 @@ The upgrade process automatically updates the operator and its components, inclu 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/). -{{< note >}} -If your databases use user-defined modules (custom non-bundled modules), you must take additional steps during the upgrade process. See [Upgrade with user-defined modules]({{< relref "/operate/kubernetes/upgrade/upgrade-redis-cluster#user-defined-modules" >}}) for details. -{{< /note >}} +> [!NOTE] +> If your databases use user-defined modules (custom non-bundled modules), you must take additional steps during the upgrade process. See [Upgrade with user-defined modules](/content/operate/kubernetes/upgrade/upgrade-redis-cluster.md#user-defined-modules) for details. For more information and options when upgrading charts, see [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/). @@ -253,7 +251,7 @@ If you used `cluster.create: true`, change REC settings by editing `cluster.spec ## 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. +1. Delete any custom resources managed by the operator. See [Delete custom resources](/content/operate/kubernetes/re-clusters/delete-custom-resources.md) for detailed steps. You must delete custom resources in the correct order to avoid errors. 2. Uninstall the Helm chart. @@ -263,7 +261,8 @@ 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`.{{}} +> [!NOTE] +> 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`. ### Uninstall the REC and operator together @@ -279,15 +278,14 @@ Confirm all resources are gone. kubectl get all --namespace ``` -{{}} -This applies only to RECs the chart created. If you created the REC outside the chart, follow [Delete custom resources]({{}}) before you run `helm uninstall`. -{{}} +> [!NOTE] +> This applies only to RECs the chart created. If you created the REC outside the chart, follow [Delete custom resources](/content/operate/kubernetes/re-clusters/delete-custom-resources.md) before you run `helm uninstall`. ## 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. +1. [Upgrade](/content/operate/kubernetes/upgrade/_index.md) 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-operator) the Helm chart adding the `--take-ownership` flag: diff --git a/content/operate/kubernetes/deployment/openshift/_index.md b/content/operate/kubernetes/deployment/openshift/_index.md index 2505ffda28..425ba74916 100644 --- a/content/operate/kubernetes/deployment/openshift/_index.md +++ b/content/operate/kubernetes/deployment/openshift/_index.md @@ -27,16 +27,16 @@ workloads can use: ## For OpenShift via the OperatorHub -To [create a database on an OpenShift 4.x cluster via the OperatorHub]({{< relref "/operate/kubernetes/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" >}}). +To [create a database on an OpenShift 4.x cluster via the OperatorHub](/content/operate/kubernetes/deployment/openshift/openshift-operatorhub.md) 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](/content/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md). ## For OpenShift via the CLI -To [create a database on an OpenShift cluster via the CLI]({{< relref "/operate/kubernetes/deployment/openshift/openshift-cli" >}}), you need: +To [create a database on an OpenShift cluster via the CLI](/content/operate/kubernetes/deployment/openshift/openshift-cli.md), you need: -1. An [OpenShift cluster installed](https://docs.openshift.com/container-platform/4.3/welcome/index.html) with at least three nodes that each meet the [minimum requirements for a development installation]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements" >}}). +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](/content/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md). 1. The [kubectl package installed](https://kubernetes.io/docs/tasks/tools/install-kubectl/) at version 1.9 or higher 1. The [OpenShift cli installed](https://docs.openshift.com/container-platform/4.2/cli_reference/openshift_cli/getting-started-cli.html) ## Version compatibility -To see which version of Redis Enterprise for Kubernetes supports your OpenShift version, see [Supported Kubernetes distributions]({{< relref "/operate/kubernetes/reference/supported_k8s_distributions" >}}). \ No newline at end of file +To see which version of Redis Enterprise for Kubernetes supports your OpenShift version, see [Supported Kubernetes distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md). \ No newline at end of file diff --git a/content/operate/kubernetes/deployment/openshift/openshift-cli.md b/content/operate/kubernetes/deployment/openshift/openshift-cli.md index 2d0fe9ed92..9cba0ad17f 100644 --- a/content/operate/kubernetes/deployment/openshift/openshift-cli.md +++ b/content/operate/kubernetes/deployment/openshift/openshift-cli.md @@ -15,14 +15,13 @@ 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 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](/content/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md)) - [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/reference/supported_k8s_distributions" >}}). +To see which version of Redis Enterprise for Kubernetes supports your OpenShift version, see [Supported Kubernetes distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md). -{{}} -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/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. -{{}} +> [!NOTE] +> If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment](/content/operate/kubernetes/security/allow-resource-adjustment.md). 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 @@ -52,9 +51,9 @@ If you suspect your file descriptor limits are below 100,000, you must either ma oc apply -f openshift.bundle.yaml ``` - {{< warning >}} -Changes to the `openshift.bundle.yaml` file can cause unexpected results. - {{< /warning >}} + > [!WARNING] + > Changes to the `openshift.bundle.yaml` file can cause unexpected results. + > 1. Verify that your `redis-enterprise-operator` deployment is running. @@ -69,35 +68,35 @@ Changes to the `openshift.bundle.yaml` file can cause unexpected results. 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). - {{}} + > [!WARNING] + > 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/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. +Versions 7.22.0-6 and later run in without permissions to [allow automatic resource adjustment](/content/operate/kubernetes/security/allow-resource-adjustment.md). 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. Download the `RedisEnterpriseCluster` resource file ([rec.yaml](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/examples/v1/rec.yaml)). - You can rename the file to `.yaml`, but it is not required. Examples below use `rec.yaml`. [Options for Redis Enterprise clusters]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api" >}}) has more info about the Redis Enterprise cluster (REC) custom resource, or see the [Redis Enterprise cluster API]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api" >}}) for a full list of options. + You can rename the file to `.yaml`, but it is not required. Examples below use `rec.yaml`. [Options for Redis Enterprise clusters](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md) has more info about the Redis Enterprise cluster (REC) custom resource, or see the [Redis Enterprise cluster API](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md) 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/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. - {{}} + > [!NOTE] + > If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment](/content/operate/kubernetes/security/allow-resource-adjustment.md). 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. - {{}} + > [!NOTE] + > 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. - {{}} + > [!NOTE] + > 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 rec.yaml @@ -161,16 +160,16 @@ If not limited, the webhook intercepts requests from all namespaces. If you have redis-enterprise-admission --patch "$(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/previous-releases/" >}}). - {{}} + > [!NOTE] + > 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](/content/operate/kubernetes/release-notes/previous-releases/_index.md). + > ### Verify admission controller installation @@ -199,7 +198,7 @@ The operator uses the instructions in the Redis Enterprise database (REDB) custo 1. Create a `RedisEnterpriseDatabase` custom resource. - This example creates a test database. For production databases, see [create a database]({{< relref "/operate/kubernetes/re-databases/db-controller.md#create-a-database" >}}) and [RedisEnterpriseDatabase API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api" >}}). + This example creates a test database. For production databases, see [create a database](/content/operate/kubernetes/re-databases/db-controller.md#create-a-database) and [RedisEnterpriseDatabase API reference](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md). ```sh cat << EOF > /tmp/redis-enterprise-database.yml @@ -220,5 +219,5 @@ The operator uses the instructions in the Redis Enterprise database (REDB) custo ## More info -- [Redis Enterprise cluster API]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api" >}}) -- [Redis Enterprise database API]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api" >}}) +- [Redis Enterprise cluster API](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md) +- [Redis Enterprise database API](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md) diff --git a/content/operate/kubernetes/deployment/openshift/openshift-operatorhub.md b/content/operate/kubernetes/deployment/openshift/openshift-operatorhub.md index d1215ba803..aab4719293 100644 --- a/content/operate/kubernetes/deployment/openshift/openshift-operatorhub.md +++ b/content/operate/kubernetes/deployment/openshift/openshift-operatorhub.md @@ -12,13 +12,15 @@ weight: 70 --- 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/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.{{}} +> [!NOTE] +> If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment](/content/operate/kubernetes/security/allow-resource-adjustment.md). 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/reference/supported_k8s_distributions" >}}). +To see which version of Redis Enterprise for Kubernetes supports your OpenShift version, see [Supported Kubernetes distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md). ## 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. {{}} +> [!WARNING] +> 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**. @@ -32,7 +34,7 @@ To see which version of Redis Enterprise for Kubernetes supports your OpenShift 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/" >}}). + For more information about specific versions, see the [release notes](/content/operate/kubernetes/release-notes/_index.md). 5. Choose an approval strategy. @@ -42,11 +44,12 @@ To see which version of Redis Enterprise for Kubernetes supports your OpenShift 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).{{}} +> [!WARNING] +> 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/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. +Versions 7.22.0-6 and later run in without permissions to [allow automatic resource adjustment](/content/operate/kubernetes/security/allow-resource-adjustment.md). 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 @@ -55,10 +58,9 @@ The **Installed Operators**->**Operator details** page shows the provided APIs: 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/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. -{{}} +> [!NOTE] +> If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment](/content/operate/kubernetes/security/allow-resource-adjustment.md). 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/re-clusters/" >}}) and [Redis Enterprise databases (REDB)]({{< relref "/operate/kubernetes/re-databases/" >}}). +For more information on creating and maintaining Redis Enterprise custom resources, see [Redis Enterprise clusters (REC)](/content/operate/kubernetes/re-clusters/_index.md) and [Redis Enterprise databases (REDB)](/content/operate/kubernetes/re-databases/_index.md). diff --git a/content/operate/kubernetes/deployment/quick-start.md b/content/operate/kubernetes/deployment/quick-start.md index 573154e909..8a5fb25c01 100644 --- a/content/operate/kubernetes/deployment/quick-start.md +++ b/content/operate/kubernetes/deployment/quick-start.md @@ -16,20 +16,21 @@ To deploy Redis Enterprise Software for Kubernetes and start your Redis Enterpri - 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/deployment/openshift" >}}). For details on what is currently supported, see [supported distributions]({{< relref "/operate/kubernetes/reference/supported_k8s_distributions" >}}). +This guide works with most supported Kubernetes distributions. If you're using OpenShift, see [Redis Enterprise on OpenShift](/content/operate/kubernetes/deployment/openshift/_index.md). For details on what is currently supported, see [supported distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md). ## Prerequisites To deploy Redis Enterprise for Kubernetes, you'll need: -- Kubernetes cluster in a [supported distribution]({{< relref "/operate/kubernetes/reference/supported_k8s_distributions" >}}) +- Kubernetes cluster in a [supported distribution](/content/operate/kubernetes/reference/supported_k8s_distributions.md) - minimum of three worker nodes - Kubernetes client (kubectl) - access to DockerHub, RedHat Container Catalog, or a private repository that can hold the required images. -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/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 suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment](/content/operate/kubernetes/security/allow-resource-adjustment.md). 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.{{}} +> [!NOTE] +> If you are applying version 7.8.2-6 or above, check if the [OS](https://redis.io/docs/latest/operate/kubernetes/release-notes/7-8-2-releases/7-8-2-6-nov24/#breaking-changes) installed on the node is supported. ### Create a new namespace @@ -53,13 +54,12 @@ You can use an existing namespace as long as it does not contain any existing Re ## 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. +Redis Enterprise for Kubernetes bundle is published as a container image. A list of required images is available in the [release notes](/content/operate/kubernetes/release-notes/_index.md) for each version. The operator [definition and reference materials](https://github.com/RedisLabs/redis-enterprise-k8s-docs) are available on GitHub. The operator definitions are [packaged as a single generic YAML file](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/bundle.yaml). -{{}} -If you do not pull images from DockerHub or another public registry, you need to use a [private container registry]({{< relref "/operate/kubernetes/deployment/container-images#manage-image-sources" >}}). -{{}} +> [!NOTE] +> If you do not pull images from DockerHub or another public registry, you need to use a [private container registry](/content/operate/kubernetes/deployment/container-images.md#manage-image-sources). ### Download the operator bundle @@ -92,7 +92,8 @@ kubectl apply -f https://raw.githubusercontent.com/RedisLabs/redis-enterprise-k8 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).{{}} +> [!WARNING] +> 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 @@ -114,17 +115,16 @@ redis-enterprise-operator 1/1 1 1 0m36s 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. +The following example creates a minimal Redis Enterprise cluster. See the [RedisEnterpriseCluster API reference](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md) 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/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. -{{}} +> [!NOTE] +> If you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment](/content/operate/kubernetes/security/allow-resource-adjustment.md). 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. - {{}} + > [!NOTE] + > The REC name (`my-rec` in this example) cannot be changed after cluster creation. + > ```sh cat < my-rec.yaml @@ -151,15 +151,15 @@ The REC name (`my-rec` in this example) cannot be changed after cluster creation memory: 16Gi ``` - {{}} -Each cluster must have at least 3 nodes. Single-node RECs are not supported. - {{}} + > [!NOTE] + > 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. + See the [Redis Enterprise hardware requirements](/content/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md) 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. - {{}} + > [!NOTE] + > 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`. @@ -267,10 +267,10 @@ The operator bundle includes a webhook file. The webhook will intercept requests If you plan to create databases that use user-defined modules (custom non-bundled modules), you must add them to the REC custom resource before creating the databases. -See [User-defined modules]({{< relref "/operate/kubernetes/re-databases/modules#user-defined-modules" >}}) for detailed instructions on adding and configuring custom modules. +See [User-defined modules](/content/operate/kubernetes/re-databases/modules.md#user-defined-modules) for detailed instructions on adding and configuring custom modules. ## Create a Redis Enterprise Database (REDB) You can create multiple databases within the same namespace as your REC or in other namespaces. -See [manage Redis Enterprise databases for Kubernetes]({{< relref "/operate/kubernetes/re-databases/db-controller" >}}) to create a new REDB. +See [manage Redis Enterprise databases for Kubernetes](/content/operate/kubernetes/re-databases/db-controller.md) to create a new REDB. diff --git a/content/operate/kubernetes/flex/_index.md b/content/operate/kubernetes/flex/_index.md index 3a3bbd7176..63211332f8 100644 --- a/content/operate/kubernetes/flex/_index.md +++ b/content/operate/kubernetes/flex/_index.md @@ -26,7 +26,7 @@ Flex moves data between RAM and flash based on access patterns: - Less active data moves to cost-efficient flash storage. - Data accessed from flash promotes back to RAM automatically. -Redis uses an [LRU (least recently used)]({{< relref "/develop/reference/eviction#apx-lru" >}}) eviction policy to manage data placement. When memory pressure increases, Flex identifies cold objects, transfers them to flash, and frees RAM for new or frequently accessed keys. +Redis uses an [LRU (least recently used)](/content/develop/reference/eviction/index.md#apx-lru) eviction policy to manage data placement. When memory pressure increases, Flex identifies cold objects, transfers them to flash, and frees RAM for new or frequently accessed keys. This process requires no application changes. Your existing Redis commands work across both storage tiers. @@ -73,11 +73,12 @@ Use Flex when you need to: - Operate large distributed caches with elastic scaling and consistent performance under heavy load - Reduce infrastructure costs by combining high-speed RAM with cost-efficient flash storage -{{}}Flex does not replace long-term data persistence. For workloads that require durability and recovery across restarts or failures, use Redis persistence features like [AOF (Append-Only File)]({{< relref "/operate/oss_and_stack/management/persistence#append-only-file" >}}), [RDB snapshots]({{< relref "/operate/oss_and_stack/management/persistence#snapshotting" >}}), or both. For more information, see [Database persistence]({{< relref "/operate/rs/databases/configure/database-persistence" >}}).{{}} +> [!WARNING] +> Flex does not replace long-term data persistence. For workloads that require durability and recovery across restarts or failures, use Redis persistence features like [AOF (Append-Only File)](/content/operate/oss_and_stack/management/persistence.md#append-only-file), [RDB snapshots](/content/operate/oss_and_stack/management/persistence.md#snapshotting), or both. For more information, see [Database persistence](/content/operate/rs/databases/configure/database-persistence.md). ## Flex and Auto Tiering -Flex replaces [Auto Tiering]({{< relref "/operate/kubernetes/7.22/re-clusters/auto-tiering" >}}) (formerly known as Redis on Flash). Redis Enterprise selects the implementation based on your database version: +Flex replaces [Auto Tiering](/content/operate/kubernetes/7.22/re-clusters/auto-tiering.md) (formerly known as Redis on Flash). Redis Enterprise selects the implementation based on your database version: | Redis database version | Operator version | Redis Flex | Auto Tiering | |------------------------|------------------|------------|--------------| @@ -85,7 +86,7 @@ Flex replaces [Auto Tiering]({{< relref "/operate/kubernetes/7.22/re-clusters/au | 7.4 | 7.8.2-6 and later | ✅ | ✅ | | 7.2 and earlier | 7.22.2-22 and earlier | ❌ | ✅ | -For Redis Enterprise for Kubernetes version 7.22.2-22 or earlier, see [Auto Tiering]({{< relref "/operate/kubernetes/7.22/re-clusters/auto-tiering" >}}). +For Redis Enterprise for Kubernetes version 7.22.2-22 or earlier, see [Auto Tiering](/content/operate/kubernetes/7.22/re-clusters/auto-tiering.md). ### Differences between Flex and Auto Tiering @@ -110,6 +111,6 @@ For Redis Enterprise for Kubernetes version 7.22.2-22 or earlier, see [Auto Tier ## Next steps -- [Plan your deployment]({{< relref "/operate/kubernetes/flex/plan" >}}): Review hardware requirements, sizing guidelines, and limitations. -- [Get started]({{< relref "/operate/kubernetes/flex/get-started" >}}): Configure Flex on your cluster. -- [Scale your deployment]({{< relref "/operate/kubernetes/flex/scale" >}}): Learn scaling strategies and best practices. +- [Plan your deployment](/content/operate/kubernetes/flex/plan.md): Review hardware requirements, sizing guidelines, and limitations. +- [Get started](/content/operate/kubernetes/flex/get-started.md): Configure Flex on your cluster. +- [Scale your deployment](/content/operate/kubernetes/flex/scale.md): Learn scaling strategies and best practices. diff --git a/content/operate/kubernetes/flex/auto-tiering.md b/content/operate/kubernetes/flex/auto-tiering.md index 6052c25896..ea6157ac3f 100644 --- a/content/operate/kubernetes/flex/auto-tiering.md +++ b/content/operate/kubernetes/flex/auto-tiering.md @@ -10,17 +10,15 @@ linkTitle: Auto Tiering weight: 40 --- -{{}} -This page applies to Redis database version 7.4 and earlier. If you use version 8.0 or later, see [Redis Flex](https://redis.io/docs/latest/operate/kubernetes/re-clusters/redis-flex). -{{}} +> [!NOTE] +> This page applies to Redis database version 7.4 and earlier. If you use version 8.0 or later, see [Redis Flex](https://redis.io/docs/latest/operate/kubernetes/re-clusters/redis-flex). ## Prerequisites Redis Enterprise Software for Kubernetes supports using Auto Tiering (previously known as Redis on Flash), which extends your node memory to use both RAM and flash storage. SSDs (solid state drives) can store infrequently used (warm) values while your keys and frequently used (hot) values are still stored in RAM. This improves performance and lowers costs for large datasets. -{{}} -NVMe (non-volatile memory express) SSDs are strongly recommended to achieve the best performance. -{{}} +> [!NOTE] +> NVMe (non-volatile memory express) SSDs are strongly recommended to achieve the best performance. Before creating your Redis clusters or databases, these SSDs must be: @@ -31,11 +29,11 @@ Before creating your Redis clusters or databases, these SSDs must be: - You can use a [local volume provisioner](https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/blob/master/README.md) to do this [dynamically](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#dynamic) - a [StorageClass](https://kubernetes.io/docs/concepts/storage/storage-classes/#local) resource with a unique name -For more information on node storage, see [Node persistent and ephemeral storage]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage" >}}). +For more information on node storage, see [Node persistent and ephemeral storage](/content/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage.md). ## Create a Redis Enterprise cluster -To deploy a Redis Enterprise cluster (REC) with Auto Tiering, you'll need to specify the following in the `redisOnFlashSpec` section of your [REC custom resource]({{< relref "/operate/kubernetes/7.22/reference/api/redis_enterprise_cluster_api" >}}): +To deploy a Redis Enterprise cluster (REC) with Auto Tiering, you'll need to specify the following in the `redisOnFlashSpec` section of your [REC custom resource](/content/operate/kubernetes/7.22/reference/api/redis_enterprise_cluster_api.md): - enable Auto Tiering (`enabled: true`) - flash storage driver (`bigStoreDriver`) @@ -43,11 +41,14 @@ To deploy a Redis Enterprise cluster (REC) with Auto Tiering, you'll need to spe - storage class name (`storageClassName`) - minimal flash disk size (`flashDiskSize`) -{{}} Clusters upgraded to version 7.2.4-2 from an earlier version will change the `bigStoreDriver` (previously called `flashStorageEngine`) to the new default `speedb`, regardless of previous configuration. {{}} +> [!NOTE] +> Clusters upgraded to version 7.2.4-2 from an earlier version will change the `bigStoreDriver` (previously called `flashStorageEngine`) to the new default `speedb`, regardless of previous configuration. -{{}}Switching between storage engines (`speedb` and `rocksdb`) requires guidance by Redis Support or your Account Manager.{{}} +> [!WARNING] +> Switching between storage engines (`speedb` and `rocksdb`) requires guidance by Redis Support or your Account Manager. -{{}}PVC expansion is not supported when using Auto Tiering. Do not enable `enablePersistentVolumeResize` in the REC `persistentSpec` if you are using `redisOnFlashSpec` as this will result in conflicts. {{}} +> [!WARNING] +> PVC expansion is not supported when using Auto Tiering. Do not enable `enablePersistentVolumeResize` in the REC `persistentSpec` if you are using `redisOnFlashSpec` as this will result in conflicts. Here is an example of an REC custom resource with these attributes: @@ -88,6 +89,5 @@ spec: rofRamSize: 0.5GB ``` -{{< note >}} -This example defines both `memorySize` and `rofRamSize`. When using Auto Tiering, `memorySize` refers to the total combined memory size (RAM + flash) allocated for the database. `rofRamSize` specifies only the RAM capacity for the database. `rofRamSize` must be at least 10% of `memorySize`. -{{< /note >}} +> [!NOTE] +> This example defines both `memorySize` and `rofRamSize`. When using Auto Tiering, `memorySize` refers to the total combined memory size (RAM + flash) allocated for the database. `rofRamSize` specifies only the RAM capacity for the database. `rofRamSize` must be at least 10% of `memorySize`. diff --git a/content/operate/kubernetes/flex/get-started.md b/content/operate/kubernetes/flex/get-started.md index 2fb5a4d943..00dbc0555d 100644 --- a/content/operate/kubernetes/flex/get-started.md +++ b/content/operate/kubernetes/flex/get-started.md @@ -12,9 +12,8 @@ weight: 20 aliases: /operate/kubernetes/re-clusters/redis-flex/ --- -{{}} -This page applies to Redis database version 7.4 and earlier using Auto Tiering. If you use version 8.0 or later, see [Redis Flex](https://redis.io/docs/latest/operate/kubernetes/flex/). -{{}} +> [!NOTE] +> This page applies to Redis database version 7.4 and earlier using Auto Tiering. If you use version 8.0 or later, see [Redis Flex](https://redis.io/docs/latest/operate/kubernetes/flex/). Flex extends your database capacity by combining RAM and flash (SSD) storage. This tiered architecture keeps frequently accessed (hot) data in RAM for sub-millisecond latency while storing less active (warm) data on flash to reduce costs and increase capacity. @@ -28,11 +27,11 @@ Before you begin, verify that you have: - Locally attached NVMe SSDs on your worker nodes - A StorageClass configured for flash storage with a unique name -For hardware requirements and sizing guidelines, see [Plan your deployment]({{< relref "/operate/kubernetes/flex/plan" >}}). +For hardware requirements and sizing guidelines, see [Plan your deployment](/content/operate/kubernetes/flex/plan.md). ## Configure the REC for Flex -To enable Flex, configure your `RedisEnterpriseCluster` (REC) resource with flash storage settings. Add the [`redisOnFlashSpec`]({{}}) section to your REC specification. +To enable Flex, configure your `RedisEnterpriseCluster` (REC) resource with flash storage settings. Add the [`redisOnFlashSpec`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#specredisonflashspec) section to your REC specification. Key fields in `redisOnFlashSpec`: @@ -43,11 +42,10 @@ Key fields in `redisOnFlashSpec`: | `flashDiskSize` | Size of the flash storage per node. | | `storageEngine` | Storage engine. Set to `speedb` for Flex. | -For all available fields, see the [REC API reference]({{}}). +For all available fields, see the [REC API reference](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#specredisonflashspec). -{{}} -PVC expansion is not supported when using Flex. Do not enable `enablePersistentVolumeResize` in the REC `persistentSpec` if you are using `redisOnFlashSpec` as this will result in conflicts. -{{}} +> [!WARNING] +> PVC expansion is not supported when using Flex. Do not enable `enablePersistentVolumeResize` in the REC `persistentSpec` if you are using `redisOnFlashSpec` as this will result in conflicts. 1. Create a REC specification file with flash storage settings similar to the following example: @@ -89,7 +87,7 @@ Key fields in the REDB: | `isRof` | Set to `true` to enable Flex for this database. | | `rofRamSize` | Amount of RAM allocated to the database. | -For all available fields, see the [REDB API reference]({{}}). +For all available fields, see the [REDB API reference](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md). 1. Create a database specification file with `isRof` set to `true` similar to the following example: @@ -132,5 +130,5 @@ To confirm that Flex is working: ## Next steps -- [Scale your deployment]({{< relref "/operate/kubernetes/flex/scale" >}}): Learn how to scale volume, throughput, and infrastructure. -- [Plan your deployment]({{< relref "/operate/kubernetes/flex/plan" >}}): Review sizing guidelines and best practices. +- [Scale your deployment](/content/operate/kubernetes/flex/scale.md): Learn how to scale volume, throughput, and infrastructure. +- [Plan your deployment](/content/operate/kubernetes/flex/plan.md): Review sizing guidelines and best practices. diff --git a/content/operate/kubernetes/flex/plan.md b/content/operate/kubernetes/flex/plan.md index e45857b3a2..bb52ab5010 100644 --- a/content/operate/kubernetes/flex/plan.md +++ b/content/operate/kubernetes/flex/plan.md @@ -117,5 +117,5 @@ The `flashStorageEngine` field is deprecated. Use `bigStoreDriver` instead. ## Next steps -- [Get started]({{< relref "/operate/kubernetes/flex/get-started" >}}): Configure Redis Flex on your cluster. -- [Scale your deployment]({{< relref "/operate/kubernetes/flex/scale" >}}): Learn scaling strategies. +- [Get started](/content/operate/kubernetes/flex/get-started.md): Configure Redis Flex on your cluster. +- [Scale your deployment](/content/operate/kubernetes/flex/scale.md): Learn scaling strategies. diff --git a/content/operate/kubernetes/flex/scale.md b/content/operate/kubernetes/flex/scale.md index 334e78f8b1..9615dd3fd0 100644 --- a/content/operate/kubernetes/flex/scale.md +++ b/content/operate/kubernetes/flex/scale.md @@ -137,10 +137,9 @@ For Flex deployments on Kubernetes, ensure the cluster has sufficient physical r - Adequate vCPU to support increased shard count or throughput. -{{}} -Scaling operations will fail or underperform if the underlying cluster is resource-constrained. -{{}} +> [!WARNING] +> Scaling operations will fail or underperform if the underlying cluster is resource-constrained. PVC expansion is not supported with `redisOnFlashSpec`. Plan flash storage capacity upfront and don't enable `enablePersistentVolumeResize` in the REC `persistentSpec`. -See Flex [hardware requirements]({{}}) for more information. +See Flex [hardware requirements](/content/operate/kubernetes/flex/plan.md#hardware-requirements) for more information. diff --git a/content/operate/kubernetes/logs/_index.md b/content/operate/kubernetes/logs/_index.md index f4dda2a69a..cd28d2ebbb 100644 --- a/content/operate/kubernetes/logs/_index.md +++ b/content/operate/kubernetes/logs/_index.md @@ -17,7 +17,7 @@ Access and manage Redis Enterprise logs on Kubernetes for monitoring, troublesho Learn how to collect and access logs from your Redis Enterprise deployment: -- [Collect logs]({{< relref "/operate/kubernetes/logs/collect-logs" >}}) - Methods for collecting logs from Redis Enterprise pods and containers +- [Collect logs](/content/operate/kubernetes/logs/collect-logs.md) - Methods for collecting logs from Redis Enterprise pods and containers ## Log storage and access diff --git a/content/operate/kubernetes/logs/collect-logs.md b/content/operate/kubernetes/logs/collect-logs.md index c2e6432c4b..a1c52d73ff 100644 --- a/content/operate/kubernetes/logs/collect-logs.md +++ b/content/operate/kubernetes/logs/collect-logs.md @@ -18,11 +18,12 @@ 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.11 or later. {{}} +> [!NOTE] +> This script requires Python 3.11 or later. ## Prerequisites -Before running the log collector, ensure you have the appropriate RBAC permissions configured. See [Log collector RBAC examples]({{< relref "/operate/kubernetes/reference/yaml/log-collector-rbac" >}}) for detailed RBAC configuration instructions. +Before running the log collector, ensure you have the appropriate RBAC permissions configured. See [Log collector RBAC examples](/content/operate/kubernetes/reference/yaml/log-collector-rbac.md) for detailed RBAC configuration instructions. ## Collect logs @@ -54,8 +55,8 @@ You can run `log_collector.py` with the following options: | `--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 >}} +> [!NOTE] +> If you get an error because the yaml module is not found, install the pyYAML module with `pip install pyyaml`. 1. Upload the resulting `tar.gz` file containing all the logs to [Redis Support](https://support.redislabs.com/). diff --git a/content/operate/kubernetes/networking/_index.md b/content/operate/kubernetes/networking/_index.md index 34e9b806d0..fb25199d78 100644 --- a/content/operate/kubernetes/networking/_index.md +++ b/content/operate/kubernetes/networking/_index.md @@ -17,36 +17,36 @@ Configure networking and external access for your Redis Enterprise deployment on Connect applications to your Redis Enterprise databases: -- [Database connectivity]({{< relref "/operate/kubernetes/networking/database-connectivity" >}}) - Comprehensive guide to in-cluster and external database access, service discovery, and credentials management. +- [Database connectivity](/content/operate/kubernetes/networking/database-connectivity.md) - 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/networking/ingress" >}}) - Use HAProxy ingress controller with `ingress` API resources (the community NGINX ingress controller is retired) -- [Istio ingress routing]({{< relref "/operate/kubernetes/networking/istio-ingress" >}}) - Use Istio service mesh with `Gateway` and `VirtualService` API resources -- [OpenShift routes]({{< relref "/operate/kubernetes/networking/routes" >}}) - Use OpenShift-specific route resources for external traffic +- [Ingress routing](/content/operate/kubernetes/networking/ingress.md) - Use HAProxy ingress controller with `ingress` API resources (the community NGINX ingress controller is retired) +- [Istio ingress routing](/content/operate/kubernetes/networking/istio-ingress.md) - Use Istio service mesh with `Gateway` and `VirtualService` API resources +- [OpenShift routes](/content/operate/kubernetes/networking/routes.md) - 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/networking/ingressorroutespec" >}}) - Use `ingressOrRouteSpec` field in RedisEnterpriseCluster (REC) for automatic ingress creation +- [REC external routing](/content/operate/kubernetes/networking/ingressorroutespec.md) - 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/networking/ingressorroutespec" >}}) for more details. +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](/content/operate/kubernetes/networking/ingressorroutespec.md) for more details. This feature only supports automatic Ingress creation for Active-Active databases created and managed with the RedisEnterpriseActiveActiveDatabase (REAADB) custom resource. Use with the standard Redis Enterprise database (REDB) is not currently supported. ## OSS Cluster API support -[OSS Cluster API]({{< relref "/operate/kubernetes/networking/cluster-aware-clients" >}}) is supported for both internal and external clients: +[OSS Cluster API](/content/operate/kubernetes/networking/cluster-aware-clients.md) is supported for both internal and external clients: - **Internal clients** running on pods within the same Kubernetes cluster can connect directly to Redis Enterprise pods using pod IPs. - **External clients** outside the Kubernetes cluster can connect through LoadBalancer services when `enableExternalAccess: true` is configured in the database specification. This creates a separate LoadBalancer service for each Redis Enterprise pod. Note that LoadBalancers are resources that can significantly increase operational costs. -See [Enable cluster-aware clients (OSS Cluster API)]({{< relref "/operate/kubernetes/networking/cluster-aware-clients" >}}) for configuration details. +See [Enable cluster-aware clients (OSS Cluster API)](/content/operate/kubernetes/networking/cluster-aware-clients.md) for configuration details. ## REC domain name diff --git a/content/operate/kubernetes/networking/cluster-aware-clients.md b/content/operate/kubernetes/networking/cluster-aware-clients.md index e263c141a4..b3418e1355 100644 --- a/content/operate/kubernetes/networking/cluster-aware-clients.md +++ b/content/operate/kubernetes/networking/cluster-aware-clients.md @@ -12,9 +12,8 @@ weight: 99 The OSS Cluster API improves performance by allowing cluster-aware Redis clients to discover database topology and route requests directly. This feature supports cluster-aware clients running on the same Kubernetes cluster (internal) and cluster-aware clients outside the Kubernetes cluster (external). -{{< note >}} -Enabling external access for OSS Cluster API creates a separate LoadBalancer service for each Redis Enterprise pod in addition to the LoadBalancer service for the cluster endpoint. LoadBalancers are resources that can significantly increase operational costs; plan your infrastructure budget accordingly. -{{< /note >}} +> [!NOTE] +> Enabling external access for OSS Cluster API creates a separate LoadBalancer service for each Redis Enterprise pod in addition to the LoadBalancer service for the cluster endpoint. LoadBalancers are resources that can significantly increase operational costs; plan your infrastructure budget accordingly. ## Prerequisites diff --git a/content/operate/kubernetes/networking/database-connectivity.md b/content/operate/kubernetes/networking/database-connectivity.md index af1894f5f2..158c1af53a 100644 --- a/content/operate/kubernetes/networking/database-connectivity.md +++ b/content/operate/kubernetes/networking/database-connectivity.md @@ -117,7 +117,7 @@ Redis Enterprise for Kubernetes only supports the following ingress controllers - Istio Gateway - Service mesh integration with advanced traffic management. - Ingress-NGINX - SSL passthrough is off by default; start the controller with `--enable-ssl-passthrough`. The community `kubernetes/ingress-nginx` project is retired (maintenance ended March 2026); existing deployments only. -See [Ingress routing]({{< relref "/operate/kubernetes/networking/ingress" >}}) for detailed configuration steps. +See [Ingress routing](/content/operate/kubernetes/networking/ingress.md) for detailed configuration steps. ### OpenShift routes @@ -138,7 +138,7 @@ spec: termination: passthrough ``` -See [OpenShift routes]({{< relref "/operate/kubernetes/networking/routes" >}}) for complete setup instructions. +See [OpenShift routes](/content/operate/kubernetes/networking/routes.md) for complete setup instructions. ## Service ports and configuration @@ -214,7 +214,7 @@ spec: ### Rotate the database password -To rotate a database password, update the `password` key in the database secret. See [Change the REDB password]({{< relref "/operate/kubernetes/security/authentication/manage-redb-credentials#change-the-redb-password" >}}). +To rotate a database password, update the `password` key in the database secret. See [Change the REDB password](/content/operate/kubernetes/security/authentication/manage-redb-credentials.md#change-the-redb-password). ### Default user configuration @@ -297,7 +297,7 @@ client.on('connect', () => { ## Related topics -- [Ingress routing]({{< relref "/operate/kubernetes/networking/ingress" >}}) - Configure external access with ingress controllers -- [OpenShift routes]({{< relref "/operate/kubernetes/networking/routes" >}}) - External access using OpenShift routes -- [Database controller]({{< relref "/operate/kubernetes/re-databases/db-controller" >}}) - Database lifecycle management -- [Security]({{< relref "/operate/kubernetes/security" >}}) - TLS configuration and access control +- [Ingress routing](/content/operate/kubernetes/networking/ingress.md) - Configure external access with ingress controllers +- [OpenShift routes](/content/operate/kubernetes/networking/routes.md) - External access using OpenShift routes +- [Database controller](/content/operate/kubernetes/re-databases/db-controller.md) - Database lifecycle management +- [Security](/content/operate/kubernetes/security/_index.md) - TLS configuration and access control diff --git a/content/operate/kubernetes/networking/ingress.md b/content/operate/kubernetes/networking/ingress.md index 99b1b6e67f..009b412912 100644 --- a/content/operate/kubernetes/networking/ingress.md +++ b/content/operate/kubernetes/networking/ingress.md @@ -11,9 +11,8 @@ linkTitle: Ingress routing weight: 5 --- -{{}} -The community [Ingress-NGINX controller](https://github.com/kubernetes/ingress-nginx) (`kubernetes/ingress-nginx`) is retired. Best-effort maintenance ended in March 2026 and the project no longer ships releases, bug fixes, or security updates. If you are not already using it, use HAProxy or Istio as shown below. -{{}} +> [!WARNING] +> The community [Ingress-NGINX controller](https://github.com/kubernetes/ingress-nginx) (`kubernetes/ingress-nginx`) is retired. Best-effort maintenance ended in March 2026 and the project no longer ships releases, bug fixes, or security updates. If you are not already using it, use HAProxy or Istio as shown below. ## Prerequisites @@ -23,9 +22,10 @@ Before creating an Ingress, you'll need: - An Ingress controller with `ssl-passthrough` enabled. Options include: - [HAProxy Ingress](https://haproxy-ingress.github.io/docs/getting-started/) - [Ingress-NGINX Controller](https://kubernetes.github.io/ingress-nginx/deploy/) (retired; existing deployments only) - - To use Istio for your Ingress resources, see [Configure Istio for external routing]({{< relref "/operate/kubernetes/networking/istio-ingress" >}}) + - To use Istio for your Ingress resources, see [Configure Istio for external routing](/content/operate/kubernetes/networking/istio-ingress.md) -{{}}Make sure your Ingress controller has `ssl-passthrough` enabled. It is on by default for HAProxy and off by default for Ingress-NGINX. For Ingress-NGINX, start the controller with the `--enable-ssl-passthrough` flag. See the [Ingress-NGINX TLS guide](https://kubernetes.github.io/ingress-nginx/user-guide/tls/#ssl-passthrough) for details.{{}} +> [!NOTE] +> Make sure your Ingress controller has `ssl-passthrough` enabled. It is on by default for HAProxy and off by default for Ingress-NGINX. For Ingress-NGINX, start the controller with the `--enable-ssl-passthrough` flag. See the [Ingress-NGINX TLS guide](https://kubernetes.github.io/ingress-nginx/user-guide/tls/#ssl-passthrough) for details. ## Create an Ingress resource diff --git a/content/operate/kubernetes/networking/ingressorroutespec.md b/content/operate/kubernetes/networking/ingressorroutespec.md index 5e1eca0bc7..c1bb7f0afa 100644 --- a/content/operate/kubernetes/networking/ingressorroutespec.md +++ b/content/operate/kubernetes/networking/ingressorroutespec.md @@ -11,9 +11,8 @@ weight: 30 --- An Ingress is an API resource that provides a standardized and flexible way to manage external access to services running within a Kubernetes cluster. -{{}} -The community [Ingress-NGINX controller](https://github.com/kubernetes/ingress-nginx) (`kubernetes/ingress-nginx`) is retired. Best-effort maintenance ended in March 2026 and the project no longer ships releases, bug fixes, or security updates. If you are not already using it, use HAProxy or Istio. -{{}} +> [!WARNING] +> The community [Ingress-NGINX controller](https://github.com/kubernetes/ingress-nginx) (`kubernetes/ingress-nginx`) is retired. Best-effort maintenance ended in March 2026 and the project no longer ships releases, bug fixes, or security updates. If you are not already using it, use HAProxy or Istio. ## Install Ingress controller @@ -22,7 +21,7 @@ Redis Enterprise for Kubernetes supports the Ingress controllers below: * [Istio](https://istio.io/latest/docs/setup/getting-started/) * [Ingress-NGINX](https://kubernetes.github.io/ingress-nginx/) (retired; existing deployments only) -OpenShift users can use [routes]({{< relref "/operate/kubernetes/networking/routes" >}}) instead of an Ingress. +OpenShift users can use [routes](/content/operate/kubernetes/networking/routes.md) instead of an Ingress. Install your chosen Ingress controller, making sure `ssl-passthrough` is enabled. It is on by default for HAProxy and off by default for Ingress-NGINX. For Ingress-NGINX, start the controller with the `--enable-ssl-passthrough` flag. diff --git a/content/operate/kubernetes/networking/istio-ingress.md b/content/operate/kubernetes/networking/istio-ingress.md index 5cdbb3bdf1..fd0c7a32c8 100644 --- a/content/operate/kubernetes/networking/istio-ingress.md +++ b/content/operate/kubernetes/networking/istio-ingress.md @@ -17,9 +17,8 @@ Istio can also understand Ingress resources, but using that mechanism takes away To configure Istio to work with the Redis Kubernetes operator, we will use two custom resources: a `Gateway` and a `VirtualService`. Then you'll be able to establish external access to your database. -{{< note >}} -When using Istio ingress for Redis on Kubernetes, avoid partial wildcard hostnames in your REC configuration. Use only valid FQDNs or leftmost wildcards for Istio compatibility and stable external routing. For more information, see [Istio Ingress Fails for Redis on Kubernetes with Partial Wildcard Hostnames](https://support.redislabs.com/hc/en-us/articles/30446436267666-Istio-Ingress-Fails-for-Redis-on-Kubernetes-with-Partial-Wildcard-Hostnames). -{{< /note >}} +> [!NOTE] +> When using Istio ingress for Redis on Kubernetes, avoid partial wildcard hostnames in your REC configuration. Use only valid FQDNs or leftmost wildcards for Istio compatibility and stable external routing. For more information, see [Istio Ingress Fails for Redis on Kubernetes with Partial Wildcard Hostnames](https://support.redislabs.com/hc/en-us/articles/30446436267666-Istio-Ingress-Fails-for-Redis-on-Kubernetes-with-Partial-Wildcard-Hostnames). ## Install and configure Istio for Redis Enterprise @@ -149,10 +148,10 @@ When using Istio ingress for Redis on Kubernetes, avoid partial wildcard hostnam redis-vs ["redis-gateway"] ["*.istio.k8s.my.example.com"] 3h33m ``` -1. [Deploy the operator]({{< relref "/operate/kubernetes/deployment/quick-start" >}}), Redis Enterprise Cluster (REC), and Redis Enterprise Database (REDB) on the same namespace as the gateway and virtual service. +1. [Deploy the operator](/content/operate/kubernetes/deployment/quick-start.md), Redis Enterprise Cluster (REC), and Redis Enterprise Database (REDB) on the same namespace as the gateway and virtual service. ## Test your external access to the database -To [test your external access]({{< relref "/operate/kubernetes/networking/ingress" >}}) to the database, you need a client that supports [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) and [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication). +To [test your external access](/content/operate/kubernetes/networking/ingress.md) to the database, you need a client that supports [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) and [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication). -See [Test your access with Openssl]({{< relref "/operate/kubernetes/networking/ingress#test-your-access-with-openssl" >}}) or [Test your access with Python]({{< relref "/operate/kubernetes/networking/ingress#test-your-access-with-python" >}}) for more info. +See [Test your access with Openssl](/content/operate/kubernetes/networking/ingress.md#test-your-access-with-openssl) or [Test your access with Python](/content/operate/kubernetes/networking/ingress.md#test-your-access-with-python) for more info. diff --git a/content/operate/kubernetes/re-databases/_index.md b/content/operate/kubernetes/re-databases/_index.md index f9eb4386cb..82247b919d 100644 --- a/content/operate/kubernetes/re-databases/_index.md +++ b/content/operate/kubernetes/re-databases/_index.md @@ -19,39 +19,39 @@ REDB resources define database specifications including memory limits, persisten Create and manage Redis Enterprise databases on your cluster: -- [Database controller]({{< relref "/operate/kubernetes/re-databases/db-controller" >}}) - Understand how the database controller manages REDB resources and database lifecycle +- [Database controller](/content/operate/kubernetes/re-databases/db-controller.md) - Understand how the database controller manages REDB resources and database lifecycle ## Replication and high availability Set up database replication for high availability and disaster recovery: -- [Create replica databases]({{< relref "/operate/kubernetes/re-databases/replica-redb" >}}) - Configure replica databases for read scaling and disaster recovery scenarios +- [Create replica databases](/content/operate/kubernetes/re-databases/replica-redb.md) - Configure replica databases for read scaling and disaster recovery scenarios ## Advanced database configurations Explore advanced database features and configurations: -- [Active-Active databases]({{< relref "/operate/kubernetes/active-active" >}}) - Set up globally distributed Active-Active databases across multiple Kubernetes clusters +- [Active-Active databases](/content/operate/kubernetes/active-active/_index.md) - Set up globally distributed Active-Active databases across multiple Kubernetes clusters ## Database connectivity Connect applications to your Redis Enterprise databases: -- [Database connectivity]({{< relref "/operate/kubernetes/networking/database-connectivity" >}}) - Comprehensive guide to in-cluster and external database access, service discovery, and credentials management. -- [Manage REDB passwords]({{< relref "/operate/kubernetes/security/authentication/manage-redb-credentials" >}}) - Retrieve and rotate Redis Enterprise database (REDB) passwords. -- [Networking]({{< relref "/operate/kubernetes/networking" >}}) - Configure ingress, routes, and service exposure for database access -- [Security]({{< relref "/operate/kubernetes/security" >}}) - Set up TLS, authentication, and access control for secure database connections +- [Database connectivity](/content/operate/kubernetes/networking/database-connectivity.md) - Comprehensive guide to in-cluster and external database access, service discovery, and credentials management. +- [Manage REDB passwords](/content/operate/kubernetes/security/authentication/manage-redb-credentials.md) - Retrieve and rotate Redis Enterprise database (REDB) passwords. +- [Networking](/content/operate/kubernetes/networking/_index.md) - Configure ingress, routes, and service exposure for database access +- [Security](/content/operate/kubernetes/security/_index.md) - Set up TLS, authentication, and access control for secure database connections ## Monitoring and troubleshooting Monitor database performance and troubleshoot issues: -- [Logs]({{< relref "/operate/kubernetes/logs" >}}) - Collect and analyze database logs for troubleshooting -- [Connect to Prometheus operator]({{< relref "/operate/kubernetes/re-clusters/connect-prometheus-operator" >}}) - Monitor database metrics with Prometheus +- [Logs](/content/operate/kubernetes/logs/_index.md) - Collect and analyze database logs for troubleshooting +- [Connect to Prometheus operator](/content/operate/kubernetes/re-clusters/connect-prometheus-operator.md) - Monitor database metrics with Prometheus ## Related topics -- [Redis Enterprise clusters (REC)]({{< relref "/operate/kubernetes/re-clusters" >}}) - Manage the underlying cluster infrastructure -- [REDB API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api" >}}) - Complete API specification for REDB resources -- [Active-Active database API]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api" >}}) - API reference for Active-Active databases -- [Remote cluster API]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api" >}}) - API reference for remote cluster configurations +- [Redis Enterprise clusters (REC)](/content/operate/kubernetes/re-clusters/_index.md) - Manage the underlying cluster infrastructure +- [REDB API reference](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md) - Complete API specification for REDB resources +- [Active-Active database API](/content/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api.md) - API reference for Active-Active databases +- [Remote cluster API](/content/operate/kubernetes/reference/api/redis_enterprise_remote_cluster_api.md) - API reference for remote cluster configurations diff --git a/content/operate/kubernetes/re-databases/db-controller.md b/content/operate/kubernetes/re-databases/db-controller.md index e408cc793a..4e05971662 100644 --- a/content/operate/kubernetes/re-databases/db-controller.md +++ b/content/operate/kubernetes/re-databases/db-controller.md @@ -25,18 +25,17 @@ If valid, the controller combines the values specified in the custom resource with default values to create a full specification. It then uses this full specification to create the database on the specified Redis Enterprise cluster (REC). -{{< note >}} -The admission controller prevents duplicate database names when databases are created via the Kubernetes operator. -{{< /note >}} +> [!NOTE] +> The admission controller prevents duplicate database names when databases are created via the Kubernetes operator. Once the database is created, it is exposed with the same service mechanisms by the service rigger for the Redis Enterprise cluster. -If the database [custom resource is deleted]({{< relref "/operate/kubernetes/re-clusters/delete-custom-resources" >}}), the database and its services are deleted from the cluster. +If the database [custom resource is deleted](/content/operate/kubernetes/re-clusters/delete-custom-resources.md), the database and its services are deleted from the cluster. ### Flexible deployment options -Databases in multiple namespaces can be managed by the same operator. To learn more, see [Manage databases in multiple namespaces]({{}}). +Databases in multiple namespaces can be managed by the same operator. To learn more, see [Manage databases in multiple namespaces](/content/operate/kubernetes/re-clusters/multi-namespace.md). -To learn more about designing a multi-namespace Redis Enterprise cluster, see [flexible deployment options]({{< relref "/operate/kubernetes/architecture/deployment-options" >}}). +To learn more about designing a multi-namespace Redis Enterprise cluster, see [flexible deployment options](/content/operate/kubernetes/architecture/deployment-options.md). ## Create a database @@ -88,7 +87,7 @@ To modify the database: ``` 1. Change the specification (only properties in `spec` section) and save the changes. - For more details, see [Options for Redis Enterprise databases]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api" >}}). + For more details, see [Options for Redis Enterprise databases](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md). 1. Monitor the status to see when the changes take effect: @@ -98,7 +97,7 @@ To modify the database: When the status is `active`, the database is ready for use. -To add tags to a database and expose them as metric labels, see [Enrich database metrics with tags]({{< relref "/operate/kubernetes/re-databases/enrich-metrics-with-tags" >}}). +To add tags to a database and expose them as metric labels, see [Enrich database metrics with tags](/content/operate/kubernetes/re-databases/enrich-metrics-with-tags.md). ## Delete a database @@ -123,4 +122,4 @@ For comprehensive information about connecting to your database, including: - In-cluster and external access methods - Connection examples and troubleshooting -See [Database connectivity]({{< relref "/operate/kubernetes/networking/database-connectivity" >}}). +See [Database connectivity](/content/operate/kubernetes/networking/database-connectivity.md). diff --git a/content/operate/kubernetes/re-databases/enrich-metrics-with-tags.md b/content/operate/kubernetes/re-databases/enrich-metrics-with-tags.md index 3e408f5795..afb38ded51 100644 --- a/content/operate/kubernetes/re-databases/enrich-metrics-with-tags.md +++ b/content/operate/kubernetes/re-databases/enrich-metrics-with-tags.md @@ -123,13 +123,12 @@ The operator tracks the tag keys it manages for each database. This lets it appl - **Removing a key deletes it.** If you remove a key that was recorded in `status.managedTags`, the operator removes that tag from the database on the next reconciliation. Keys that were never in `status.managedTags`, such as tags set only through the Redis Enterprise REST API, aren't deleted. - **Reserved keys are rejected.** Keys the operator reserves for its own internal use cannot be set in the spec. For REDB, these are `managed_by`, `redb_name`, `redb_namespace`, `db_service_port`, and `oss_cluster_access`. For REAADB, they also include `redb_resource`, `redb_resource_name`, `global_configurations_spec`, `replication_endpoint_port`, `rerc_name`, and the operator's internal secret-tracking keys (`redis.io/db-sec-name`, `redis.io/db-sec-latest`, `redis.io/certs-latest`, `redis.io/bu-sec-name`, and `redis.io/bu-sec-latest`). The admission controller rejects a custom resource that uses one. -{{< note >}} -When you upgrade to a release with this feature, `status.managedTags` starts empty for databases that already existed. The operator does not drop existing tags. It reapplies only the keys currently in the spec, so the upgrade has no effect on databases that never used tags. -{{< /note >}} +> [!NOTE] +> When you upgrade to a release with this feature, `status.managedTags` starts empty for databases that already existed. The operator does not drop existing tags. It reapplies only the keys currently in the spec, so the upgrade has no effect on databases that never used tags. ## View tagged metrics in Prometheus -For instructions on connecting Prometheus to Redis Enterprise for Kubernetes, see [Export metrics to Prometheus]({{< relref "/operate/kubernetes/re-clusters/connect-prometheus-operator" >}}). +For instructions on connecting Prometheus to Redis Enterprise for Kubernetes, see [Export metrics to Prometheus](/content/operate/kubernetes/re-clusters/connect-prometheus-operator.md). ## Limitations diff --git a/content/operate/kubernetes/re-databases/modules.md b/content/operate/kubernetes/re-databases/modules.md index 71b7ee4d3d..f3ed3621d7 100644 --- a/content/operate/kubernetes/re-databases/modules.md +++ b/content/operate/kubernetes/re-databases/modules.md @@ -16,8 +16,8 @@ Redis Enterprise modules extend Redis functionality with additional data types, Before you begin, verify the following: -- [Redis Enterprise operator deployed]({{< relref "/operate/kubernetes/deployment/quick-start" >}}) in your Kubernetes cluster -- [Redis Enterprise cluster (REC)]({{< relref "/operate/kubernetes/re-clusters" >}}) running and in a healthy state +- [Redis Enterprise operator deployed](/content/operate/kubernetes/deployment/quick-start.md) in your Kubernetes cluster +- [Redis Enterprise cluster (REC)](/content/operate/kubernetes/re-clusters/_index.md) running and in a healthy state ## Bundled modules @@ -27,14 +27,13 @@ Redis Enterprise includes several bundled modules that extend Redis functionalit | Module | Name | Description | Capabilities | |--------|------|-------------|--------------| -| **[RediSearch]({{< relref "/develop/ai/search-and-query/" >}})** | `search` | Full-text search and secondary indexing | Query, aggregation, full-text search, vector similarity search | -| **[RedisJSON]({{< relref "/develop/data-types/json" >}})** | `ReJSON` | JSON data type support | Store, update, and query JSON documents | -| **[RedisTimeSeries]({{< relref "/develop/data-types/timeseries" >}})** | `timeseries` | Time series data structures | Ingest and query time series data with downsampling and aggregation | -| **[RedisBloom]({{< relref "/develop/data-types/probabilistic" >}})** | `bf` | Probabilistic data structures | Bloom filters, Cuckoo filters, Count-Min Sketch, Top-K | +| **[RediSearch](/content/develop/ai/search-and-query/_index.md)** | `search` | Full-text search and secondary indexing | Query, aggregation, full-text search, vector similarity search | +| **[RedisJSON](/content/develop/data-types/json/_index.md)** | `ReJSON` | JSON data type support | Store, update, and query JSON documents | +| **[RedisTimeSeries](/content/develop/data-types/timeseries/_index.md)** | `timeseries` | Time series data structures | Ingest and query time series data with downsampling and aggregation | +| **[RedisBloom](/content/develop/data-types/probabilistic/_index.md)** | `bf` | Probabilistic data structures | Bloom filters, Cuckoo filters, Count-Min Sketch, Top-K | -{{< note >}} -When configuring databases with modules, use the `NAME` field (for example, `search` or `ReJSON`) instead of the `DISPLAY_NAME` field. -{{< /note >}} +> [!NOTE] +> When configuring databases with modules, use the `NAME` field (for example, `search` or `ReJSON`) instead of the `DISPLAY_NAME` field. ### Automatic enablement in Redis 8 and later @@ -80,9 +79,8 @@ User-defined modules are custom Redis modules that extend Redis functionality be To use user-defined modules with your databases, first add them to the Redis Enterprise cluster (REC) custom resource. This enables the operator to validate the modules and make them available for database creation. -{{< warning >}} -Add user-defined modules to the REC **before** you create any databases that use them. The admission controller validates that modules exist in the REC before allowing REDB creation. -{{< /warning >}} +> [!WARNING] +> Add user-defined modules to the REC **before** you create any databases that use them. The admission controller validates that modules exist in the REC before allowing REDB creation. 1. Edit your REC custom resource: @@ -110,7 +108,7 @@ Add user-defined modules to the REC **before** you create any databases that use --from-literal=password= ``` -If you use [HashiCorp Vault integration]({{< relref "/operate/kubernetes/security/vault" >}}), store the module credentials in Vault instead of creating a Kubernetes secret. The `credentialsSecret` field will reference the secret name in Vault. +If you use [HashiCorp Vault integration](/content/operate/kubernetes/security/vault.md), store the module credentials in Vault instead of creating a Kubernetes secret. The `credentialsSecret` field will reference the secret name in Vault. ### Module naming requirements @@ -128,9 +126,8 @@ For example, if your module manifest contains the following: You can use either `"rg"` or `"RedisGears"` as the `name` value in your REC spec. -{{< note >}} -If the names don't match, the operator can't validate the module. This can lead to preventable errors during database creation or upgrades. -{{< /note >}} +> [!NOTE] +> If the names don't match, the operator can't validate the module. This can lead to preventable errors during database creation or upgrades. ### Edit user-defined modules @@ -149,13 +146,11 @@ To modify the user-defined modules list, complete the following steps: 1. Save your changes. The operator validates and applies the updates. -{{< warning >}} -Don't remove modules that are currently in use by any database. The operator rejects the change and puts the REC into an error state. -{{< /warning >}} +> [!WARNING] +> Don't remove modules that are currently in use by any database. The operator rejects the change and puts the REC into an error state. -{{< note >}} -Changes to the `userDefinedModules` list trigger a rolling restart of the Redis Enterprise cluster pods. Plan module updates during a maintenance window to minimize potential impact on your databases. -{{< /note >}} +> [!NOTE] +> Changes to the `userDefinedModules` list trigger a rolling restart of the Redis Enterprise cluster pods. Plan module updates during a maintenance window to minimize potential impact on your databases. ### Verify user-defined modules @@ -203,8 +198,8 @@ For databases using user-defined modules, you must take additional steps during For detailed upgrade instructions, see the following: -- [Upgrade a Redis Enterprise cluster (REC)]({{< relref "/operate/kubernetes/upgrade/upgrade-redis-cluster" >}}) -- [Upgrade Redis Enterprise on OpenShift]({{< relref "/operate/kubernetes/upgrade/openshift-cli" >}}) +- [Upgrade a Redis Enterprise cluster (REC)](/content/operate/kubernetes/upgrade/upgrade-redis-cluster.md) +- [Upgrade Redis Enterprise on OpenShift](/content/operate/kubernetes/upgrade/openshift-cli.md) ## Troubleshooting @@ -340,13 +335,13 @@ kubectl get rec -o jsonpath='{.spec.userDefinedModules}' | jq ## Related information -- [Redis modules documentation]({{< relref "/develop/reference/modules" >}}) - Official Redis modules documentation -- [REDB API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api" >}}) - Complete API specification for REDB resources -- [REAADB API reference]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api" >}}) - API reference for Active-Active databases +- [Redis modules documentation](/content/develop/reference/modules/_index.md) - Official Redis modules documentation +- [REDB API reference](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md) - Complete API specification for REDB resources +- [REAADB API reference](/content/operate/kubernetes/reference/api/redis_enterprise_active_active_database_api.md) - API reference for Active-Active databases ### Redis Software documentation -- [Add modules to a cluster]({{< relref "/operate/oss_and_stack/stack-with-enterprise/install/add-module-to-cluster" >}}) - Install module packages on Redis Enterprise Software clusters -- [Enable modules for a database]({{< relref "/operate/oss_and_stack/stack-with-enterprise/install/add-module-to-database" >}}) - Add modules to databases in Redis Enterprise Software -- [Upgrade modules]({{< relref "/operate/oss_and_stack/stack-with-enterprise/install/upgrade-module" >}}) - Upgrade module versions in Redis Enterprise Software -- [Module lifecycle]({{< relref "/operate/oss_and_stack/stack-with-enterprise/modules-lifecycle" >}}) - Module versioning and end-of-life schedule +- [Add modules to a cluster](/content/operate/oss_and_stack/stack-with-enterprise/install/add-module-to-cluster.md) - Install module packages on Redis Enterprise Software clusters +- [Enable modules for a database](/content/operate/oss_and_stack/stack-with-enterprise/install/add-module-to-database.md) - Add modules to databases in Redis Enterprise Software +- [Upgrade modules](/content/operate/oss_and_stack/stack-with-enterprise/install/upgrade-module.md) - Upgrade module versions in Redis Enterprise Software +- [Module lifecycle](/content/operate/oss_and_stack/stack-with-enterprise/modules-lifecycle.md) - Module versioning and end-of-life schedule diff --git a/content/operate/kubernetes/re-databases/replica-redb.md b/content/operate/kubernetes/re-databases/replica-redb.md index aea6a261d0..5e5adff413 100644 --- a/content/operate/kubernetes/re-databases/replica-redb.md +++ b/content/operate/kubernetes/re-databases/replica-redb.md @@ -11,11 +11,10 @@ weight: 42 --- You can configure a replica of a database by creating an item in -the [`replicaSources`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api#specreplicasources" >}}) section of the RedisEnterpriseDatabase (REDB) custom resource. +the [`replicaSources`](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md#specreplicasources) section of the RedisEnterpriseDatabase (REDB) custom resource. -{{< note >}} -If the source cluster is reached through an ingress route (for example, an OpenShift route or any TLS pass-through that relies on SNI), set [`tlsSniName`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api#specreplicasources" >}}) on each `replicaSources` item to the SNI hostname configured on the ingress. Without it, the syncer cannot route TLS to the source database's proxy and replication fails. -{{< /note >}} +> [!NOTE] +> If the source cluster is reached through an ingress route (for example, an OpenShift route or any TLS pass-through that relies on SNI), set [`tlsSniName`](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md#specreplicasources) on each `replicaSources` item to the SNI hostname configured on the ingress. Without it, the syncer cannot route TLS to the source database's proxy and replication fails. A secret must be created with the `stringData` section containing the replica source URI as follows: diff --git a/content/operate/kubernetes/recommendations/_index.md b/content/operate/kubernetes/recommendations/_index.md index 5980a3f20f..6664404301 100644 --- a/content/operate/kubernetes/recommendations/_index.md +++ b/content/operate/kubernetes/recommendations/_index.md @@ -17,16 +17,16 @@ Follow these best practices and configuration recommendations to optimize your R Configure your Kubernetes infrastructure for optimal Redis Enterprise performance: -- [Node resources]({{< relref "/operate/kubernetes/recommendations/node-resources" >}}) - CPU, memory, and resource allocation recommendations -- [Node selection]({{< relref "/operate/kubernetes/recommendations/node-selection" >}}) - Best practices for selecting and configuring Kubernetes nodes -- [Persistent volumes]({{< relref "/operate/kubernetes/recommendations/persistent-volumes" >}}) - Storage configuration and persistent volume recommendations +- [Node resources](/content/operate/kubernetes/recommendations/node-resources.md) - CPU, memory, and resource allocation recommendations +- [Node selection](/content/operate/kubernetes/recommendations/node-selection.md) - Best practices for selecting and configuring Kubernetes nodes +- [Persistent volumes](/content/operate/kubernetes/recommendations/persistent-volumes.md) - Storage configuration and persistent volume recommendations ## Deployment recommendations Optimize your Redis Enterprise deployment configuration: -- [Sizing on Kubernetes]({{< relref "/operate/kubernetes/recommendations/sizing-on-kubernetes" >}}) - Guidelines for sizing clusters and databases -- [Pod stability]({{< relref "/operate/kubernetes/recommendations/pod-stability" >}}) - Ensure stable pod operations and prevent disruptions +- [Sizing on Kubernetes](/content/operate/kubernetes/recommendations/sizing-on-kubernetes.md) - Guidelines for sizing clusters and databases +- [Pod stability](/content/operate/kubernetes/recommendations/pod-stability.md) - Ensure stable pod operations and prevent disruptions ## Performance optimization diff --git a/content/operate/kubernetes/recommendations/node-resources.md b/content/operate/kubernetes/recommendations/node-resources.md index 9b291af619..a7e7bcf40b 100644 --- a/content/operate/kubernetes/recommendations/node-resources.md +++ b/content/operate/kubernetes/recommendations/node-resources.md @@ -42,7 +42,7 @@ For more information about monitoring node conditions, see [Node conditions](htt Kubernetes uses the `ResourceQuota` object to limit resource consumption per namespace. This lets you limit the number of objects created by a namespace or the amount of compute resources consumed by a namespace. -The resource settings for Redis Enterprise for Kubernetes are defined in the `operator.yaml` and the [`RedisEnterpriseCluster`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#spec" >}}) custom resource. +The resource settings for Redis Enterprise for Kubernetes are defined in the `operator.yaml` and the [`RedisEnterpriseCluster`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec) custom resource. The following settings are the minimum workloads for the operator to function. diff --git a/content/operate/kubernetes/recommendations/node-selection.md b/content/operate/kubernetes/recommendations/node-selection.md index 85810ec302..993e18da71 100644 --- a/content/operate/kubernetes/recommendations/node-selection.md +++ b/content/operate/kubernetes/recommendations/node-selection.md @@ -19,7 +19,7 @@ Use these options to control pod placement: ## Use node selectors -The [`nodeSelector`]({{}}) field matches the Kubernetes [`nodeSelector`](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector) syntax. +The [`nodeSelector`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec) field matches the Kubernetes [`nodeSelector`](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector) syntax. Label the nodes you want to target. For example, if nodes 'n1' and 'n2' are labeled with `memory=high`: ```sh @@ -40,13 +40,13 @@ spec: memory: high ``` -The operator copies [`nodeSelector`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#spec" >}}) into the pod spec. The scheduler places pods only on nodes that match the selector. +The operator copies [`nodeSelector`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec) into the pod spec. The scheduler places pods only on nodes that match the selector. ## Use node pools Node pools group similar nodes. Providers label nodes by pool. -Use [`nodeSelector`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#spec" >}}) to target a pool by label. For example, on GKE: +Use [`nodeSelector`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec) to target a pool by label. For example, on GKE: ```yaml apiVersion: app.redislabs.com/v1 @@ -76,7 +76,7 @@ Cloud providers label nodes by pool. See links below for specific documentation. ## Use node taints -Use node taints and pod tolerations to control REC pod scheduling. Set tolerations with [`spec.podTolerations`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#specpodtolerations" >}}) (standard [Kubernetes tolerations](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/#concepts)). +Use node taints and pod tolerations to control REC pod scheduling. Set tolerations with [`spec.podTolerations`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#specpodtolerations) (standard [Kubernetes tolerations](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/#concepts)). Example: on a single node pool, reserve nodes n1–n3 for REC by adding taints: @@ -170,9 +170,10 @@ Kubernetes will not schedule two pods with label `local/role: database` on the s Enable rack-zone awareness to improve availability during rack or zone failures. -{{%note%}}When creating your rack-zone ID, there are some constraints to consider; see [rack-zone awareness]({{< relref "/operate/rs/clusters/configure/rack-zone-awareness#rack-zone-id-rules" >}}) for more info. {{%/note%}} +> [!NOTE] +> When creating your rack-zone ID, there are some constraints to consider; see [rack-zone awareness](/content/operate/rs/clusters/configure/rack-zone-awareness.md#rack-zone-id-rules) for more info. -Configure it with [`spec.rackAwarenessNodeLabel`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#spec" >}}) in the REC. +Configure it with [`spec.rackAwarenessNodeLabel`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec) in the REC. ### Choose a node label @@ -182,11 +183,10 @@ If your platform doesn’t set this label automatically, you can use any custom ### Label all eligible nodes -{{< warning >}} -All eligible nodes **must** have the label for rack awareness to work. The operator requires every node that might run Redis Enterprise pods to be labeled. If any nodes are missing the label, reconciliation fails. -{{< /warning >}} +> [!WARNING] +> All eligible nodes **must** have the label for rack awareness to work. The operator requires every node that might run Redis Enterprise pods to be labeled. If any nodes are missing the label, reconciliation fails. -Eligible nodes are nodes where REC pods can run. By default, this means all worker nodes. You can limit eligibility with [`spec.nodeSelector`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#spec" >}}). +Eligible nodes are nodes where REC pods can run. By default, this means all worker nodes. You can limit eligibility with [`spec.nodeSelector`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec). Give each eligible node a label value that reflects its rack, zone, or region. @@ -225,21 +225,19 @@ After you apply the role and binding, you can configure rack awareness. ### Configure rack awareness -Set [`spec.rackAwarenessNodeLabel`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#spec" >}}) to the node label to use: +Set [`spec.rackAwarenessNodeLabel`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec) to the node label to use: {{}} -{{< note >}} -When you set [`spec.rackAwarenessNodeLabel`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#spec" >}}), the operator sets the anti-affinity `topologyKey` to that label unless you define [`spec.podAntiAffinity`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_cluster_api#specpodantiaffinity" >}}). If you define both, make sure `topologyKey` matches your node label. -{{< /note >}} +> [!NOTE] +> When you set [`spec.rackAwarenessNodeLabel`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec), the operator sets the anti-affinity `topologyKey` to that label unless you define [`spec.podAntiAffinity`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#specpodantiaffinity). If you define both, make sure `topologyKey` matches your node label. ### Rack awareness limitations -{{< warning >}} -**Pod restart distribution maintenance**: When rack awareness is enabled, node pods and shards are initially deployed based on rack constraints to ensure proper distribution across zones. However, Redis Enterprise does not automatically maintain this distribution when node pods are restarted. - -After pod restarts, the rack awareness policy may be violated, requiring manual intervention to restore proper shard distribution. While Redis Enterprise provides tools to identify shards that need to be moved to restore correct rack distribution, it does not provide automated orchestration to perform these moves. -{{< /warning >}} +> [!WARNING] +> **Pod restart distribution maintenance**: When rack awareness is enabled, node pods and shards are initially deployed based on rack constraints to ensure proper distribution across zones. However, Redis Enterprise does not automatically maintain this distribution when node pods are restarted. +> +> After pod restarts, the rack awareness policy may be violated, requiring manual intervention to restore proper shard distribution. While Redis Enterprise provides tools to identify shards that need to be moved to restore correct rack distribution, it does not provide automated orchestration to perform these moves. **Important considerations for production deployments:** diff --git a/content/operate/kubernetes/recommendations/persistent-volumes.md b/content/operate/kubernetes/recommendations/persistent-volumes.md index dc50251ed8..40b21b04d9 100644 --- a/content/operate/kubernetes/recommendations/persistent-volumes.md +++ b/content/operate/kubernetes/recommendations/persistent-volumes.md @@ -14,9 +14,8 @@ weight: 40 Redis Enterprise for Kubernetes can only use storage classes supported by block storage. Block storage is mounted at the Kubernetes node level and utilizes EXT4 or XFS file systems. It can be sourced from enterprise-grade SANs or cloud environments such as EBS, Azure Managed Disks, or GCP persistent disks. -{{}} -NFS, NFS-like, and multi-read-write/shared storage options are not supported. These types of storage are often slow and can cause locking behaviors that are incompatible with the requirements of database storage. -{{}} +> [!WARNING] +> NFS, NFS-like, and multi-read-write/shared storage options are not supported. These types of storage are often slow and can cause locking behaviors that are incompatible with the requirements of database storage. ## REC `persistentSpec` field To deploy a Redis Enterprise cluster with Redis Enterprise operator the @@ -32,11 +31,10 @@ spec should include a *persistentSpec* section, in the Persistence storage is a requirement for production deployments. -{{< note >}} -For **production deployments** of Redis Enterprise Cluster on Kubernetes, -the Redis Enterprise Cluster (REC) must be deployed with persistence enabled. -The REC deployment files in the [Kubernetes documentation](https://github.com/RedisLabs/redis-enterprise-k8s-docs) contain this declaration by default. -{{< /note >}} +> [!NOTE] +> For **production deployments** of Redis Enterprise Cluster on Kubernetes, +> the Redis Enterprise Cluster (REC) must be deployed with persistence enabled. +> The REC deployment files in the [Kubernetes documentation](https://github.com/RedisLabs/redis-enterprise-k8s-docs) contain this declaration by default. ## Volume size @@ -44,17 +42,16 @@ The REC deployment files in the [Kubernetes documentation](https://github.com/Re omitted, operator allocates five times (5x) the amount of memory (RAM) defined for nodes (see example below), which is the recommended persistent storage size as described in the [Hardware -requirements]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements" >}}) article. +requirements](/content/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md) article. To explicitly specify the persistent storage size, use the *volumeSize* property as described in the example above. -Persistent volume claims can be expanded, but not reduced after creation. See [Expand PersistentVolumeClaim (PVC)]({{}}) for details. +Persistent volume claims can be expanded, but not reduced after creation. See [Expand PersistentVolumeClaim (PVC)](/content/operate/kubernetes/re-clusters/expand-pvc.md) for details. -{{< note >}} -We recommend that you omit the volumeSize definition from the REC declaration -so that the Redis Enterprise Cluster deployment on Kubernetes use the default volume size. -{{< /note >}} +> [!NOTE] +> We recommend that you omit the volumeSize definition from the REC declaration +> so that the Redis Enterprise Cluster deployment on Kubernetes use the default volume size. ## Storage class name @@ -88,13 +85,11 @@ Below is an example of a response to the command. | *VolumeBindingMode:* | *Immediate* | | *Events:* | *\* | -{{< note >}} -storageClassName must be specified for this deployment type. -{{< /note >}} +> [!NOTE] +> storageClassName must be specified for this deployment type. -{{< warning >}} -The storage class cannot be changed after deployment. Trying to change this value after deployment could result in unexpected and potentially damaging behavior. -{{< /warning >}} +> [!WARNING] +> The storage class cannot be changed after deployment. Trying to change this value after deployment could result in unexpected and potentially damaging behavior. Example of the redisEnterpriseNodeResources definition: diff --git a/content/operate/kubernetes/recommendations/sizing-on-kubernetes.md b/content/operate/kubernetes/recommendations/sizing-on-kubernetes.md index 06cce995fb..ee6f298de1 100644 --- a/content/operate/kubernetes/recommendations/sizing-on-kubernetes.md +++ b/content/operate/kubernetes/recommendations/sizing-on-kubernetes.md @@ -14,7 +14,7 @@ The following article reviews the mechanism and methods available for sizing and scaling a Redis Enterprise cluster deployment. For minimum and recommended sizing, always follow the sizing guidelines -detailed in the [Redis Enterprise hardware requirements]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements" >}}). +detailed in the [Redis Enterprise hardware requirements](/content/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md). ## Sizing and scaling cluster nodes @@ -50,7 +50,8 @@ To apply the new cluster configuration run: kubectl apply -f redis-enterprise-cluster.yaml -{{}} Decreasing the number of nodes is not supported.{{}} +> [!WARNING] +> Decreasing the number of nodes is not supported. ### Sizing compute resources @@ -112,9 +113,8 @@ Then, apply the file by running: kubectl apply -f redis-enterprise-cluster.yaml -{{< warning >}} -When adjusting compute resources, make sure the ratio of persistent volume size and the new memory size are in accordance to the [Hardware -requirements]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements" >}}). - -Persistent volume claims can be expanded, but not reduced after creation. See [Expand PersistentVolumeClaim (PVC)]({{}}) for details. -{{< /warning >}} +> [!WARNING] +> When adjusting compute resources, make sure the ratio of persistent volume size and the new memory size are in accordance to the [Hardware +> requirements](/content/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md). +> +> Persistent volume claims can be expanded, but not reduced after creation. See [Expand PersistentVolumeClaim (PVC)](/content/operate/kubernetes/re-clusters/expand-pvc.md) for details. diff --git a/content/operate/kubernetes/upgrade/_index.md b/content/operate/kubernetes/upgrade/_index.md index 5dc9fc580e..4fe18ee90c 100644 --- a/content/operate/kubernetes/upgrade/_index.md +++ b/content/operate/kubernetes/upgrade/_index.md @@ -17,10 +17,10 @@ Keep your Redis Enterprise deployment up to date with the latest features, secur Choose the appropriate upgrade method for your deployment: -- [Upgrade Redis Enterprise for Kubernetes]({{}}) - Standard upgrade process for most Kubernetes distributions -- [Upgrade with OpenShift CLI]({{}}) - OpenShift-specific upgrade using CLI tools -- [Upgrade with OpenShift OperatorHub]({{}}) - Upgrade using OpenShift OperatorHub and OLM -- [Upgrade with Helm]({{}}) - Helm-specific upgrade instructions for chart-based deployments +- [Upgrade Redis Enterprise for Kubernetes](/content/operate/kubernetes/upgrade/upgrade-redis-cluster.md) - Standard upgrade process for most Kubernetes distributions +- [Upgrade with OpenShift CLI](/content/operate/kubernetes/upgrade/openshift-cli.md) - OpenShift-specific upgrade using CLI tools +- [Upgrade with OpenShift OperatorHub](/content/operate/kubernetes/upgrade/upgrade-olm.md) - Upgrade using OpenShift OperatorHub and OLM +- [Upgrade with Helm](/content/operate/kubernetes/deployment/helm.md#upgrade-the-chart) - Helm-specific upgrade instructions for chart-based deployments ## Upgrade process @@ -34,7 +34,8 @@ The upgrade process includes updating three components in order: When upgrading, both your Kubernetes version and Redis operator version need to be supported at all times. -{{}}If your current Kubernetes distribution is not [supported]({{}}), upgrade to a supported distribution before upgrading. {{}} +> [!WARNING] +> If your current Kubernetes distribution is not [supported](/content/operate/kubernetes/reference/supported_k8s_distributions.md), upgrade to a supported distribution before upgrading. ## RHEL9-based image @@ -46,6 +47,6 @@ As of version 7.8.2-6, Redis Enterprise images are based on Red Hat Enterprise L For detailed steps, see the relevant upgrade page: -- [OpenShift CLI]({{}}) -- [OpenShift OperatorHub]({{}}) -- [Kubernetes]({{}}) \ No newline at end of file +- [OpenShift CLI](/content/operate/kubernetes/upgrade/openshift-cli.md) +- [OpenShift OperatorHub](/content/operate/kubernetes/upgrade/upgrade-olm.md) +- [Kubernetes](/content/operate/kubernetes/upgrade/upgrade-redis-cluster.md) \ No newline at end of file diff --git a/content/operate/kubernetes/upgrade/openshift-cli.md b/content/operate/kubernetes/upgrade/openshift-cli.md index 16556fd517..26415e8fff 100644 --- a/content/operate/kubernetes/upgrade/openshift-cli.md +++ b/content/operate/kubernetes/upgrade/openshift-cli.md @@ -25,7 +25,7 @@ See the [troubleshooting](#troubleshooting) section for details on recovering a #### Kubernetes version -Check [Supported Kubernetes distributions]({{}}) to make sure your Kubernetes distribution is supported. If not, upgrade your Kubernetes distribution before upgrading the Redis operator. +Check [Supported Kubernetes distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md) to make sure your Kubernetes distribution is supported. If not, upgrade your Kubernetes distribution before upgrading the Redis operator. #### Redis operator version @@ -33,7 +33,7 @@ Your Redis Enterprise clusters must be running version 7.4.2-2 or later before u #### Redis database version -Your Redis databases must be running version 7.2 or later before upgrading your cluster version. See [upgrade databases](#upgrade-databases) for detailed steps. You can find your database version in the [REDB `spec.redisVersion` field]({{}}). +Your Redis databases must be running version 7.2 or later before upgrading your cluster version. See [upgrade databases](#upgrade-databases) for detailed steps. You can find your database version in the [REDB `spec.redisVersion` field](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md#spec). #### User-defined modules @@ -43,7 +43,7 @@ If your databases use user-defined modules (custom non-bundled modules): - Define the user-defined modules in the REC custom resource before upgrading the database. - See [Edit `redisEnterpriseImageSpec`](#edit-redisenterpriseimagespec) for more details. -For more information about user-defined modules, see [User-defined modules]({{< relref "/operate/kubernetes/re-databases/modules#user-defined-modules" >}}). +For more information about user-defined modules, see [User-defined modules](/content/operate/kubernetes/re-databases/modules.md#user-defined-modules). #### RHEL9-compatible modules @@ -61,7 +61,7 @@ To see which modules are currently in use, run: curl -k -u : -X GET https://localhost:9443/v1/bdbs | jq -r '.[].module_list | map(.module_name + "-" + .semantic_version) | .[]' ``` -See [Upgrade modules]({{}}) for details on how to upgrade modules with the `rladmin` tool. +See [Upgrade modules](/content/operate/oss_and_stack/stack-with-enterprise/install/upgrade-module.md) for details on how to upgrade modules with the `rladmin` tool. #### Valid license @@ -87,11 +87,12 @@ helm upgrade my-redis-enterprise redis/redis-enterprise-operator --version 7.8.2 After the Helm upgrade completes, continue with [upgrading the Redis Enterprise cluster](#upgrade-the-redis-enterprise-cluster) and [upgrading databases](#upgrade-databases). -For detailed Helm upgrade instructions, see [Upgrade the chart]({{}}). +For detailed Helm upgrade instructions, see [Upgrade the chart](/content/operate/kubernetes/deployment/helm.md#upgrade-the-chart). ## Upgrade the operator -{{}}If your databases use user-defined modules, set `autoUpgradeRedisEnterprise: false` in the REC custom resource before upgrading the operator.{{}} +> [!WARNING] +> If your databases use user-defined modules, set `autoUpgradeRedisEnterprise: false` in the REC custom resource before upgrading the operator. ### Download the bundle @@ -111,10 +112,9 @@ If you need a different release, replace `VERSION` in the above with a specific Apply the bundle to deploy the new operator binary. This will also apply any changes in the new release to custom resource definitions, roles, role binding, or operator service accounts. -{{< note >}} -If you are not pulling images from Docker Hub, update the operator image spec to point to your private repository. -If you have made changes to the role, role binding, RBAC, or custom resource definition (CRD) in the previous version, merge them with the updated declarations in the new version files. -{{< /note >}} +> [!NOTE] +> If you are not pulling images from Docker Hub, update the operator image spec to point to your private repository. +> If you have made changes to the role, role binding, RBAC, or custom resource definition (CRD) in the previous version, merge them with the updated declarations in the new version files. If you are using OpenShift, run this instead: @@ -137,9 +137,8 @@ deployment.apps/redis-enterprise-operator configured If you have the admission controller enabled, you need to manually reapply the `ValidatingWebhookConfiguration`. -{{}} -{{< embed-md "k8s-642-redb-admission-webhook-name-change.md" >}} -{{}} +> [!NOTE] +> {{< embed-md "k8s-642-redb-admission-webhook-name-change.md" >}} {{< embed-md "k8s-admission-webhook-cert.md" >}} @@ -158,27 +157,25 @@ NAME READY UP-TO-DATE AVAILABLE AGE redis-enterprise-operator 1/1 1 1 0m36s ``` -{{< warning >}} - We recommend upgrading the REC as soon as possible after updating the operator. After the operator upgrade completes, the operator suspends the management of the REC and its associated REDBs, until the REC upgrade completes. - {{< /warning >}} +> [!WARNING] +> We recommend upgrading the REC as soon as possible after updating the operator. After the operator upgrade completes, the operator suspends the management of the REC and its associated REDBs, until the REC upgrade completes. ## Security context constraints Upgrades to versions 7.22.0-6 and later run in **unprivileged mode** without any additional permissions or capabilities. If you don't specifally require additional capabilities, we recommend you maintain the default unprivileged mode, as its more secure. After upgrading, remove the existing `redis-enterprise-scc-v2` SCC and unbind it from the REC service account. -To enable automatic resource adjustment, see [Allow automatic resource adjustment > OpenShift upgrades]({{< relref "/operate/kubernetes/security/allow-resource-adjustment#openshift-upgrades" >}}). +To enable automatic resource adjustment, see [Allow automatic resource adjustment > OpenShift upgrades](/content/operate/kubernetes/security/allow-resource-adjustment.md#openshift-upgrades). ## Upgrade the Redis Enterprise cluster -{{}} -Verify your license is valid before upgrading. Invalid licenses will cause the upgrade to fail. - -Use `oc get rec` and verify the `LICENSE STATE` is valid on your REC before you start the upgrade process. -{{}} +> [!WARNING] +> Verify your license is valid before upgrading. Invalid licenses will cause the upgrade to fail. +> +> Use `oc get rec` and verify the `LICENSE STATE` is valid on your REC before you start the upgrade process. The Redis Enterprise cluster (REC) can be updated automatically or manually. To trigger automatic upgrade of the REC after the operator upgrade completes, specify `autoUpgradeRedisEnterprise: true` in your REC spec. If you don't have automatic upgrade enabled, follow the below steps for the manual upgrade. -Before beginning the upgrade of the Redis Enterprise cluster, check the K8s operator [release notes]({{}}) to find the Redis Enterprise image tag. +Before beginning the upgrade of the Redis Enterprise cluster, check the K8s operator [release notes](/content/operate/kubernetes/release-notes/_index.md) to find the Redis Enterprise image tag. After the operator upgrade is complete, you can upgrade Redis Enterprise cluster (REC). @@ -214,15 +211,15 @@ After the operator upgrade is complete, you can upgrade Redis Enterprise cluster The `name` field must match the `display_name` or `module_name` that appears in the module manifest (for example, "redisgears"). This enables the operator to run validation on the user-defined module. If these names don't match, the operator can't run validation on the user-defined module and preventable errors may occur. - {{< note >}} -Adding or modifying the `userDefinedModules` list triggers a rolling restart of the Redis Enterprise cluster pods in addition to the rolling upgrade for the version change. - {{< /note >}} + > [!NOTE] + > Adding or modifying the `userDefinedModules` list triggers a rolling restart of the Redis Enterprise cluster pods in addition to the rolling upgrade for the version change. + > 1. Save the changes to apply. ### Reapply roles and role bindings -If your operator is monitoring multiple namespaces, you'll need to [reapply your role and role bindings]({{< relref "/operate/kubernetes/re-clusters/multi-namespace#create-role-and-role-binding-for-managed-namespaces" >}}) for each managed namespace. See [Manage databases in multiple namespaces]({{< relref "/operate/kubernetes/re-clusters/multi-namespace" >}}) for more details. +If your operator is monitoring multiple namespaces, you'll need to [reapply your role and role bindings](/content/operate/kubernetes/re-clusters/multi-namespace.md#create-role-and-role-binding-for-managed-namespaces) for each managed namespace. See [Manage databases in multiple namespaces](/content/operate/kubernetes/re-clusters/multi-namespace.md) for more details. ### Monitor the upgrade @@ -256,11 +253,11 @@ If your REAADB uses supported modules, keep the existing `moduleList` version nu #### Upgrade with user-defined modules -If a user-defined module is used by any database in the cluster, the module must be defined in the REC custom resource before upgrading the database. See [Add user-defined modules to the REC]({{< relref "/operate/kubernetes/re-databases/modules#add-user-defined-modules-to-the-rec" >}}) for detailed instructions. +If a user-defined module is used by any database in the cluster, the module must be defined in the REC custom resource before upgrading the database. See [Add user-defined modules to the REC](/content/operate/kubernetes/re-databases/modules.md#add-user-defined-modules-to-the-rec) for detailed instructions. #### General upgrade notes -Note that if your cluster [`redisUpgradePolicy`]({{}}) or your database [`redisVersion`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api#spec" >}}) are set to `major`, you won't be able to upgrade those databases to minor versions. See [Redis upgrade policy]({{< relref "/operate/rs/installing-upgrading/upgrading#redis-upgrade-policy" >}}) for more details. +Note that if your cluster [`redisUpgradePolicy`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec) or your database [`redisVersion`](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md#spec) are set to `major`, you won't be able to upgrade those databases to minor versions. See [Redis upgrade policy](/content/operate/rs/installing-upgrading/upgrading/_index.md#redis-upgrade-policy) for more details. ## Troubleshooting diff --git a/content/operate/kubernetes/upgrade/upgrade-olm.md b/content/operate/kubernetes/upgrade/upgrade-olm.md index ae19184b16..0365cf290b 100644 --- a/content/operate/kubernetes/upgrade/upgrade-olm.md +++ b/content/operate/kubernetes/upgrade/upgrade-olm.md @@ -25,7 +25,7 @@ See the [troubleshooting](#troubleshooting) section for details on recovering a #### Kubernetes version -Check [Supported Kubernetes distributions]({{}}) to make sure your Kubernetes distribution is supported. If not, upgrade your Kubernetes distribution before upgrading the Redis operator. +Check [Supported Kubernetes distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md) to make sure your Kubernetes distribution is supported. If not, upgrade your Kubernetes distribution before upgrading the Redis operator. #### Redis operator version @@ -33,7 +33,7 @@ Your Redis Enterprise clusters must be running version 7.4.2-2 or later before u #### Redis database version -Your Redis databases must be running version 7.2 or later before upgrading your cluster version. See [upgrade databases](#upgrade-databases) for detailed steps. You can find your database version in the [REDB `spec.redisVersion` field]({{}}). +Your Redis databases must be running version 7.2 or later before upgrading your cluster version. See [upgrade databases](#upgrade-databases) for detailed steps. You can find your database version in the [REDB `spec.redisVersion` field](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md#spec). ### User-defined modules @@ -43,7 +43,7 @@ If your databases use user-defined modules (custom non-bundled modules): - Define the user-defined modules in the REC custom resource before upgrading the database. - See [Edit `redisEnterpriseImageSpec`](#edit-redisenterpriseimagespec) for more details. -For more information about user-defined modules, see [User-defined modules]({{< relref "/operate/kubernetes/re-databases/modules#user-defined-modules" >}}). +For more information about user-defined modules, see [User-defined modules](/content/operate/kubernetes/re-databases/modules.md#user-defined-modules). ### Valid license @@ -69,19 +69,18 @@ You can monitor the upgrade from the **Installed Operators** page. A new Redis E Upgrades to versions 7.22.0-6 and later run in **unprivileged mode** without any additional permissions or capabilities. If you don't specifally require additional capabilities, we recommend you maintain the default unprivileged mode, as its more secure. After upgrading, remove the existing `redis-enterprise-scc-v2` SCC and unbind it from the REC service account. -To enable automatic resource adjustment, see [Allow automatic resource adjustment > OpenShift upgrades]({{< relref "/operate/kubernetes/security/allow-resource-adjustment#openshift-upgrades" >}}). +To enable automatic resource adjustment, see [Allow automatic resource adjustment > OpenShift upgrades](/content/operate/kubernetes/security/allow-resource-adjustment.md#openshift-upgrades). ## Upgrade the Redis Enterprise cluster -{{}} -Verify your license is valid before upgrading. Invalid licenses will cause the upgrade to fail. - -Use `oc get rec` and verify the `LICENSE STATE` is valid on your REC before you start the upgrade process. -{{}} +> [!WARNING] +> Verify your license is valid before upgrading. Invalid licenses will cause the upgrade to fail. +> +> Use `oc get rec` and verify the `LICENSE STATE` is valid on your REC before you start the upgrade process. The Redis Enterprise cluster (REC) can be updated automatically or manually. To trigger automatic upgrade of the REC after the operator upgrade completes, specify `autoUpgradeRedisEnterprise: true` in your REC spec. If you don't have automatic upgrade enabled, follow the below steps for the manual upgrade. -Before beginning the upgrade of the Redis Enterprise cluster, check the K8s operator [release notes]({{}}) to find the Redis Enterprise image tag. +Before beginning the upgrade of the Redis Enterprise cluster, check the K8s operator [release notes](/content/operate/kubernetes/release-notes/_index.md) to find the Redis Enterprise image tag. After the operator upgrade is complete, you can upgrade Redis Enterprise cluster (REC). @@ -117,15 +116,15 @@ After the operator upgrade is complete, you can upgrade Redis Enterprise cluster The `name` field must match the `display_name` or `module_name` that appears in the module manifest (for example, "redisgears"). This enables the operator to run validation on the user-defined module. If these names don't match, the operator can't run validation on the user-defined module and preventable errors may occur. - {{< note >}} -Adding or modifying the `userDefinedModules` list triggers a rolling restart of the Redis Enterprise cluster pods in addition to the rolling upgrade for the version change. - {{< /note >}} + > [!NOTE] + > Adding or modifying the `userDefinedModules` list triggers a rolling restart of the Redis Enterprise cluster pods in addition to the rolling upgrade for the version change. + > 1. Save the changes to apply. ### Reapply roles and role bindings -If your operator is monitoring multiple namespaces, you'll need to [reapply your role and role bindings]({{< relref "/operate/kubernetes/re-clusters/multi-namespace#create-role-and-role-binding-for-managed-namespaces" >}}) for each managed namespace. See [Manage databases in multiple namespaces]({{< relref "/operate/kubernetes/re-clusters/multi-namespace" >}}) for more details. +If your operator is monitoring multiple namespaces, you'll need to [reapply your role and role bindings](/content/operate/kubernetes/re-clusters/multi-namespace.md#create-role-and-role-binding-for-managed-namespaces) for each managed namespace. See [Manage databases in multiple namespaces](/content/operate/kubernetes/re-clusters/multi-namespace.md) for more details. ### Monitor the upgrade @@ -159,7 +158,7 @@ If your REAADB uses supported modules, keep the existing `moduleList` version nu ### General upgrade notes -Note that if your cluster [`redisUpgradePolicy`]({{}}) or your database [`redisVersion`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api#spec" >}}) are set to `major`, you won't be able to upgrade those databases to minor versions. See [Redis upgrade policy]({{< relref "/operate/rs/installing-upgrading/upgrading#redis-upgrade-policy" >}}) for more details. +Note that if your cluster [`redisUpgradePolicy`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec) or your database [`redisVersion`](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md#spec) are set to `major`, you won't be able to upgrade those databases to minor versions. See [Redis upgrade policy](/content/operate/rs/installing-upgrading/upgrading/_index.md#redis-upgrade-policy) for more details. The Redis Enterprise cluster (REC) can be updated automatically or manually. To trigger automatic upgrade of the REC after the operator upgrade completes, specify `autoUpgradeRedisEnterprise: true` in your REC spec. If you don't have automatic upgrade enabled, follow the below steps for the manual upgrade. diff --git a/content/operate/kubernetes/upgrade/upgrade-redis-cluster.md b/content/operate/kubernetes/upgrade/upgrade-redis-cluster.md index efbaf8a14c..4f44d06935 100644 --- a/content/operate/kubernetes/upgrade/upgrade-redis-cluster.md +++ b/content/operate/kubernetes/upgrade/upgrade-redis-cluster.md @@ -25,15 +25,15 @@ See the [troubleshooting](#troubleshooting) section for details on recovering a ### Kubernetes version -Check [Supported Kubernetes distributions]({{}}) to make sure your Kubernetes distribution is supported by your target Redis Enterprise operator version. If not, upgrade your Kubernetes distribution before upgrading the Redis operator. +Check [Supported Kubernetes distributions](/content/operate/kubernetes/reference/supported_k8s_distributions.md) to make sure your Kubernetes distribution is supported by your target Redis Enterprise operator version. If not, upgrade your Kubernetes distribution before upgrading the Redis operator. ### Redis operator version -Check the [Redis Enterprise for Kubernetes release notes]({{}}) for the minimum operator version required for your target upgrade. Some versions may require intermediate upgrades. +Check the [Redis Enterprise for Kubernetes release notes](/content/operate/kubernetes/release-notes/_index.md) for the minimum operator version required for your target upgrade. Some versions may require intermediate upgrades. ### Redis database version -Check the release notes for your target version to determine the minimum Redis database version required. See [upgrade databases](#upgrade-databases) for detailed steps. You can find your database version in the [REDB `spec.redisVersion` field]({{}}). +Check the release notes for your target version to determine the minimum Redis database version required. See [upgrade databases](#upgrade-databases) for detailed steps. You can find your database version in the [REDB `spec.redisVersion` field](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md#spec). ### User-defined modules @@ -43,7 +43,7 @@ If your databases use user-defined modules (custom non-bundled modules): - Define the user-defined modules in the REC custom resource before upgrading the database. - See [Edit `redisEnterpriseImageSpec`](#edit-redisenterpriseimagespec-in-the-rec-spec) for more details. -For more information about user-defined modules, see [User-defined modules]({{< relref "/operate/kubernetes/re-databases/modules#user-defined-modules" >}}). +For more information about user-defined modules, see [User-defined modules](/content/operate/kubernetes/re-databases/modules.md#user-defined-modules). ### Valid license @@ -74,11 +74,12 @@ helm upgrade redis/redis-enterprise-operator --version }}). +For detailed Helm upgrade instructions, see [Upgrade the chart](/content/operate/kubernetes/deployment/helm.md#upgrade-the-chart). ## Upgrade the operator -{{}}If your databases use user-defined modules, set `autoUpgradeRedisEnterprise: false` in the REC custom resource before upgrading the operator.{{}} +> [!WARNING] +> If your databases use user-defined modules, set `autoUpgradeRedisEnterprise: false` in the REC custom resource before upgrading the operator. ### Download the bundle @@ -99,10 +100,9 @@ If you need a different release, replace `VERSION` in the above with a specific Apply the bundle to deploy the new operator binary. This will also apply any changes in the new release to custom resource definitions, roles, role binding, or operator service accounts. -{{< note >}} -If you are not pulling images from Docker Hub, update the operator image spec to point to your private repository. -If you have made changes to the role, role binding, RBAC, or custom resource definition (CRD) in the previous version, merge them with the updated declarations in the new version files. -{{< /note >}} +> [!NOTE] +> If you are not pulling images from Docker Hub, update the operator image spec to point to your private repository. +> If you have made changes to the role, role binding, RBAC, or custom resource definition (CRD) in the previous version, merge them with the updated declarations in the new version files. Upgrade the bundle and operator with a single command, passing in the bundle YAML file: @@ -125,9 +125,8 @@ deployment.apps/redis-enterprise-operator configured If you have the admission controller enabled, you need to manually reapply the `ValidatingWebhookConfiguration`. -{{}} -{{< embed-md "k8s-642-redb-admission-webhook-name-change.md" >}} -{{}} +> [!NOTE] +> {{< embed-md "k8s-642-redb-admission-webhook-name-change.md" >}} {{< embed-md "k8s-admission-webhook-cert.md" >}} @@ -146,25 +145,22 @@ NAME READY UP-TO-DATE AVAILABLE AGE redis-enterprise-operator 1/1 1 1 0m36s ``` -{{< warning >}} -We recommend upgrading the REC as soon as possible after updating the operator. After the operator upgrade completes, the operator suspends the management of the REC and its associated REDBs, until the REC upgrade completes. -{{< /warning >}} +> [!WARNING] +> We recommend upgrading the REC as soon as possible after updating the operator. After the operator upgrade completes, the operator suspends the management of the REC and its associated REDBs, until the REC upgrade completes. ## Upgrade the Redis Enterprise cluster (REC) The Redis Enterprise cluster (REC) can be updated automatically or manually. To trigger automatic upgrade of the REC after the operator upgrade completes, specify `autoUpgradeRedisEnterprise: true` in your REC spec. If you don't have automatic upgrade enabled, follow the below steps for the manual upgrade. -{{}} -Automatic upgrade is incompatible with image digest hashes. If you set a `digestHash` in any image spec (`redisEnterpriseImageSpec`, `redisEnterpriseServicesRiggerImageSpec`, `bootstrapperImageSpec`, or `usageMeter.callHomeClient.imageSpec`) while `autoUpgradeRedisEnterprise` is `true`, the operator invalidates the REC spec and publishes a Kubernetes warning event. Remove all `digestHash` values before you enable automatic upgrade, or upgrade the cluster [manually](#edit-redisenterpriseimagespec-in-the-rec-spec) instead. -{{}} +> [!WARNING] +> Automatic upgrade is incompatible with image digest hashes. If you set a `digestHash` in any image spec (`redisEnterpriseImageSpec`, `redisEnterpriseServicesRiggerImageSpec`, `bootstrapperImageSpec`, or `usageMeter.callHomeClient.imageSpec`) while `autoUpgradeRedisEnterprise` is `true`, the operator invalidates the REC spec and publishes a Kubernetes warning event. Remove all `digestHash` values before you enable automatic upgrade, or upgrade the cluster [manually](#edit-redisenterpriseimagespec-in-the-rec-spec) instead. -Before beginning the upgrade of the Redis Enterprise cluster, check the [Redis Enterprise for Kubernetes release notes]({{}}) to find the Redis Enterprise image tag for your target version. +Before beginning the upgrade of the Redis Enterprise cluster, check the [Redis Enterprise for Kubernetes release notes](/content/operate/kubernetes/release-notes/_index.md) to find the Redis Enterprise image tag for your target version. After the operator upgrade is complete, you can upgrade Redis Enterprise cluster (REC). -{{}} -For Active-Active databases, we recommend upgrading all participating clusters to the same operator version. -{{}} +> [!NOTE] +> For Active-Active databases, we recommend upgrading all participating clusters to the same operator version. ### Edit `redisEnterpriseImageSpec` in the REC spec @@ -198,15 +194,15 @@ For Active-Active databases, we recommend upgrading all participating clusters t The `name` field must match the `display_name` or `module_name` that appears in the module manifest (for example, "redisgears"). This enables the operator to run validation on the user-defined module. If these names don't match, the operator can't run validation on the user-defined module and preventable errors may occur. - {{< note >}} -Adding or modifying the `userDefinedModules` list triggers a rolling restart of the Redis Enterprise cluster pods in addition to the rolling upgrade for the version change. - {{< /note >}} + > [!NOTE] + > Adding or modifying the `userDefinedModules` list triggers a rolling restart of the Redis Enterprise cluster pods in addition to the rolling upgrade for the version change. + > 1. Save the changes to apply. ### Reapply roles and role bindings -If your operator is monitoring multiple namespaces, you'll need to [reapply your role and role bindings]({{< relref "/operate/kubernetes/re-clusters/multi-namespace#create-role-and-role-binding-for-managed-namespaces" >}}) for each managed namespace. See [Manage databases in multiple namespaces]({{< relref "/operate/kubernetes/re-clusters/multi-namespace" >}}) for more details. +If your operator is monitoring multiple namespaces, you'll need to [reapply your role and role bindings](/content/operate/kubernetes/re-clusters/multi-namespace.md#create-role-and-role-binding-for-managed-namespaces) for each managed namespace. See [Manage databases in multiple namespaces](/content/operate/kubernetes/re-clusters/multi-namespace.md) for more details. ### Monitor the upgrade @@ -244,11 +240,11 @@ If your REAADB uses supported modules, keep the existing `moduleList` version nu ### Upgrade with user-defined modules -If a user-defined module is used by any database in the cluster, the module must be defined in the REC custom resource before upgrading the database. See [Add user-defined modules to the REC]({{< relref "/operate/kubernetes/re-databases/modules#add-user-defined-modules-to-the-rec" >}}) for detailed instructions. +If a user-defined module is used by any database in the cluster, the module must be defined in the REC custom resource before upgrading the database. See [Add user-defined modules to the REC](/content/operate/kubernetes/re-databases/modules.md#add-user-defined-modules-to-the-rec) for detailed instructions. ### Upgrade policy -Note that if your cluster [`redisUpgradePolicy`]({{}}) or your database [`redisVersion`]({{< relref "/operate/kubernetes/reference/api/redis_enterprise_database_api#spec" >}}) are set to `major`, you won't be able to upgrade those databases to minor versions. See [Redis upgrade policy]({{< relref "/operate/rs/installing-upgrading/upgrading#redis-upgrade-policy" >}}) for more details. +Note that if your cluster [`redisUpgradePolicy`](/content/operate/kubernetes/reference/api/redis_enterprise_cluster_api.md#spec) or your database [`redisVersion`](/content/operate/kubernetes/reference/api/redis_enterprise_database_api.md#spec) are set to `major`, you won't be able to upgrade those databases to minor versions. See [Redis upgrade policy](/content/operate/rs/installing-upgrading/upgrading/_index.md#redis-upgrade-policy) for more details. ## Troubleshooting @@ -276,7 +272,7 @@ If your databases use user-defined modules and you encounter upgrade issues: kubectl describe rec ``` -For more information about user-defined modules, see [User-defined modules]({{< relref "/operate/kubernetes/re-databases/modules#user-defined-modules" >}}). +For more information about user-defined modules, see [User-defined modules](/content/operate/kubernetes/re-databases/modules.md#user-defined-modules). ### Invalid module version