{
  "schema_version": 2,
  "id": "operate/kubernetes/deployment/helm",
  "title": "Install Redis Enterprise Helm chart",
  "url": "https://redis.io/docs/latest/operate/kubernetes/deployment/helm/",
  "summary": "Install Redis Enterprise for Kubernetes version 7.8.6 using Helm charts.",
  "tags": [
    "docs",
    "operate",
    "kubernetes"
  ],
  "last_updated": "2026-09-28T16:14:52+01:00",
  "page_type": "content",
  "content_hash": "ce6821734bdd28d277b1bbc7df11e5aad6904c91b980c924fb123b5737108b0a",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "Helm charts provide a simple way to install the Redis Enterprise for Kubernetes operator in just a few steps. For more information about Helm, go to [https://helm.sh/docs/](https://helm.sh/docs/)."
    },
    {
      "id": "prerequisites",
      "title": "Prerequisites",
      "role": "content",
      "text": "- A [supported distribution](https://redis.io/docs/latest/operate/kubernetes/reference/supported_k8s_distributions) of Kubernetes.\n- At least three worker nodes.\n- [Kubernetes client (kubectl)](https://kubernetes.io/docs/tasks/tools/).\n- [Helm 3.10 or later](https://helm.sh/docs/intro/install/)\n    or 3.18 for migrating from a non-Helm installation.\n\nIf you suspect your file descriptor limits are below 100,000, you must either manually increase limits or [Allow automatic resource adjustment](https://redis.io/docs/latest/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."
    },
    {
      "id": "example-values",
      "title": "Example values",
      "role": "example",
      "text": "The steps below use the following placeholders to indicate command line parameters you must provide:\n\n- `<release-name>` is the name you give a specific installation of the Helm chart (example: `my-redis-enterprise-operator`)\n- `<chart-version>` is the version of the Helm chart you are installing (example: `7.8.6-2`). Verify that the version you specify is listed in the [Redis Helm repository](https://helm.redis.io/). Using an invalid version number causes installation failures.\n- `<namespace-name>` is the name of the new namespace the Redis operator will run in (example: `ns1`)\n- `<path-to-chart>` is the filepath to the Helm chart, if it is stored in a local directory (example: `/home/charts/redis-enterprise-operator`)"
    },
    {
      "id": "install-the-operator",
      "title": "Install the operator",
      "role": "setup",
      "text": "Below are several ways to install the operator using Helm. To create the REC in the same step, see [Create the REC at install time](#create-the-rec-at-install-time).\n\n- [Install from the Redis Helm repository](#install-from-the-redis-helm-repository)\n- [Install from local directory](#install-from-local-directory)\n- [Specify values during install](#specify-values-during-install)\n- [Install with values file](#install-with-values-file)"
    },
    {
      "id": "install-from-the-redis-helm-repository",
      "title": "Install from the Redis Helm repository",
      "role": "setup",
      "text": "1. Add the Redis repository.\n\n   [code example]\n\n2. Install the Helm chart into a new namespace.\n\n[code example]\n\nTo install with Openshift, add `--set openshift.mode=true`.\n\nTo monitor the installation add the `--debug` flag. The installation runs several jobs synchronously and may take a few minutes to complete."
    },
    {
      "id": "install-from-local-directory",
      "title": "Install from local directory",
      "role": "setup",
      "text": "If you need a local copy of the chart, for example to inspect it or customize values, use one of the following methods.\n\n**Pull the packaged chart (recommended).** `helm pull` fetches the exact packaged chart the Helm repository serves for the version you specify, matching what `helm install` from the repository would deploy.\n\n1. Add the Redis repository, if you haven't already.\n\n   [code example]\n\n2. Pull and unpack the chart. This creates a `redis-enterprise-operator` directory in your current location.\n\n   [code example]\n\n3. Install the Helm chart from the local directory.\n\n   [code example]\n\n**Download the source code.** Alternatively, download the chart source from GitHub.\n\n1. Find the latest release on the [redis-enterprise-k8s-docs](https://github.com/RedisLabs/redis-enterprise-k8s-docs/releases) repo and download the `tar.gz` source code into a local directory.\n\n2. Install the Helm chart from your local directory.\n\n   [code example]\n\nTo install with Openshift, add `--set openshift.mode=true`.\n\nTo monitor the installation add the `--debug` flag. The installation runs several jobs synchronously and may take a few minutes to complete."
    },
    {
      "id": "specify-values-during-install",
      "title": "Specify values during install",
      "role": "content",
      "text": "1. View configurable values with `helm show values redis/redis-enterprise-operator`.\n\n2. Install the Helm chart, overriding specific value defaults using `--set`.\n\n[code example]"
    },
    {
      "id": "install-with-values-file",
      "title": "Install with values file",
      "role": "setup",
      "text": "1. View configurable values with `helm show values redis/redis-enterprise-operator`.\n\n2. Create a YAML file to specify the values you want to configure.\n\n3. Install the chart with the `--values` option.\n\n[code example]"
    },
    {
      "id": "create-the-rec-at-install-time",
      "title": "Create the REC at install time",
      "role": "content",
      "text": "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](https://redis.io/docs/latest/operate/kubernetes/reference/api/redis_enterprise_cluster_api).\n\n> [!NOTE]\n> `cluster.create` defaults to `false`. When `false`, the chart installs only the operator and you create the REC yourself.\n\n1. Create a values file with a `cluster` section. For example:\n\n    [code example]\n\n2. Install the chart with the values file.\n\n    [code example]\n\n    The chart runs a Kubernetes Job to create the REC. The Job deletes itself on success.\n\n3. Confirm the operator deployment is running.\n\n    [code example]\n\n4. Wait for the REC to reach the `Running` state. Initialization takes about a minute.\n\n    [code example]\n\nTo update or uninstall an REC created by the chart, see [Update an REC created by the chart](#update-an-rec-created-by-the-chart) and [Uninstall the REC and operator together](#uninstall-the-rec-and-operator-together)."
    },
    {
      "id": "upgrade-the-chart",
      "title": "Upgrade the chart",
      "role": "content",
      "text": "To upgrade an existing Helm chart installation:\n\n[code example]\n\nYou can also upgrade from a local directory:\n\n[code example]\n\nFor example, to upgrade a chart with the release name `my-redis-enterprise` from the chart's root directory:\n\n[code example]\n\nTo upgrade with OpenShift, add `--set openshift.mode=true`.\n\nThe upgrade process automatically updates the operator and its components, including the Custom Resource Definitions (CRDs). The CRDs are versioned and update only if the new version is higher than the existing version.\n\nAfter 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/).\n\n> [!NOTE]\n> 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](https://redis.io/docs/latest/operate/kubernetes/upgrade/upgrade-redis-cluster#user-defined-modules) for details.\n\nFor more information and options when upgrading charts, see [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/)."
    },
    {
      "id": "update-an-rec-created-by-the-chart",
      "title": "Update an REC created by the chart",
      "role": "content",
      "text": "If you used `cluster.create: true`, change REC settings by editing `cluster.spec` in your values file and running `helm upgrade`.\n\n1. Update your values file. For example, to add labels:\n\n    [code example]\n\n2. Apply the changes.\n\n    [code example]\n\n    Some REC fields trigger a StatefulSet rolling update. Others, such as `extraLabels`, take effect immediately.\n\n3. Confirm the change.\n\n    [code example]"
    },
    {
      "id": "uninstall",
      "title": "Uninstall",
      "role": "content",
      "text": "1. Delete any custom resources managed by the operator. See [Delete custom resources](https://redis.io/docs/latest/operate/kubernetes/re-clusters/delete-custom-resources) for detailed steps. You must delete custom resources in the correct order to avoid errors.\n\n2. Uninstall the Helm chart.\n\n[code example]\n\nThis removes all Kubernetes resources associated with the chart and deletes the release.\n\n> [!NOTE]\n> 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`."
    },
    {
      "id": "uninstall-the-rec-and-operator-together",
      "title": "Uninstall the REC and operator together",
      "role": "content",
      "text": "When `cluster.create` is `true`, `helm uninstall` removes both the REC and the operator. You don't need to delete the REC first.\n\n[code example]\n\nConfirm all resources are gone.\n\n[code example]\n\n> [!NOTE]\n> This applies only to RECs the chart created. If you created the REC outside the chart, follow [Delete custom resources](https://redis.io/docs/latest/operate/kubernetes/re-clusters/delete-custom-resources) before you run `helm uninstall`."
    },
    {
      "id": "migrate-from-a-non-helm-installation",
      "title": "Migrate from a non-Helm installation",
      "role": "content",
      "text": "To migrate an existing non-Helm installation of the Redis Enterprise operator to a Helm-based installation:\n\n1. [Upgrade](https://redis.io/docs/latest/operate/kubernetes/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.\n\n2. [Install](#install-the-operator) the Helm chart adding the `--take-ownership` flag:\n\n   [code example]\n\n   - The `--take-ownership` flag is available with Helm versions 3.18 or later.\n   - This flag is only needed for the first installation of the chart. Subsequent upgrades don't require this flag.\n   - Use the `helm install` command, not `helm upgrade`.\n\n3. Delete the old `ValidatingWebhookConfiguration` object from the previous non-Helm installation:\n\n   [code example]\n\n   This step is only needed when the `admission.limitToNamespace` chart value is set to `true` (the default). In this case, the webhook object installed by the chart is named `redis-enterprise-admission-<namespace>`, and the original webhook object, named `redis-enterprise-admission`, becomes redundant. If `admission.limitToNamespace` is set to `false`, the webhook installed by the chart is named `redis-enterprise-admission`, and the existing webhook object is reused."
    },
    {
      "id": "known-limitations",
      "title": "Known limitations",
      "role": "content",
      "text": "- Custom resources other than the REC must still be created using the standard process. The chart doesn't manage them.\n- The chart doesn't include configuration options for multiple namespaces, rack-awareness, and Vault integration. The steps for configuring these options remain the same.\n- The chart has had limited testing in advanced setups, including Active-Active configurations, air-gapped deployments, and IPv6/dual-stack environments."
    }
  ],
  "examples": [
    {
      "id": "install-from-the-redis-helm-repository-ex0",
      "language": "sh",
      "code": "helm repo add redis https://helm.redis.io",
      "section_id": "install-from-the-redis-helm-repository"
    },
    {
      "id": "install-from-the-redis-helm-repository-ex1",
      "language": "sh",
      "code": "helm install <release-name> redis/redis-enterprise-operator \\\n    --version <chart-version> \\\n    --namespace <namespace-name> \\\n    --create-namespace",
      "section_id": "install-from-the-redis-helm-repository"
    },
    {
      "id": "install-from-local-directory-ex0",
      "language": "sh",
      "code": "helm repo add <repo-name> https://helm.redis.io",
      "section_id": "install-from-local-directory"
    },
    {
      "id": "install-from-local-directory-ex1",
      "language": "sh",
      "code": "helm pull <repo-name>/redis-enterprise-operator --version <chart-version> --untar",
      "section_id": "install-from-local-directory"
    },
    {
      "id": "install-from-local-directory-ex2",
      "language": "sh",
      "code": "helm install <release-name> ./redis-enterprise-operator \\\n       --namespace <namespace-name> \\\n       --create-namespace",
      "section_id": "install-from-local-directory"
    },
    {
      "id": "install-from-local-directory-ex3",
      "language": "sh",
      "code": "helm install <release-name> <path-to-chart> \\\n       --namespace <namespace-name> \\\n       --create-namespace",
      "section_id": "install-from-local-directory"
    },
    {
      "id": "specify-values-during-install-ex0",
      "language": "sh",
      "code": "helm install <release-name> redis/redis-enterprise-operator \\\n    --version <chart-version> \\\n    --namespace <namespace-name> \\\n    --create-namespace\n    --set <key1>=<value1> \\\n    --set <key2>=<value2>",
      "section_id": "specify-values-during-install"
    },
    {
      "id": "install-with-values-file-ex0",
      "language": "sh",
      "code": "helm install <release-name> redis/redis-enterprise-operator \\\n    --version <chart-version> \\\n    --namespace <namespace-name> \\\n    --create-namespace \\\n    --values <path-to-values-file>",
      "section_id": "install-with-values-file"
    },
    {
      "id": "create-the-rec-at-install-time-ex0",
      "language": "yaml",
      "code": "cluster:\n      create: true\n      spec:\n        nodes: 3\n        redisEnterpriseImageSpec:\n          repository: redislabs/redis\n        redisEnterpriseServicesRiggerImageSpec:\n          repository: redislabs/k8s-controller\n        bootstrapperImageSpec:\n          repository: redislabs/operator",
      "section_id": "create-the-rec-at-install-time"
    },
    {
      "id": "create-the-rec-at-install-time-ex1",
      "language": "sh",
      "code": "helm install <release-name> redis/redis-enterprise-operator \\\n        --version <chart-version> \\\n        --namespace <namespace-name> \\\n        --create-namespace \\\n        --values <path-to-values-file>",
      "section_id": "create-the-rec-at-install-time"
    },
    {
      "id": "create-the-rec-at-install-time-ex2",
      "language": "sh",
      "code": "kubectl get deployment redis-enterprise-operator --namespace <namespace-name>",
      "section_id": "create-the-rec-at-install-time"
    },
    {
      "id": "create-the-rec-at-install-time-ex3",
      "language": "sh",
      "code": "kubectl get rec --namespace <namespace-name>",
      "section_id": "create-the-rec-at-install-time"
    },
    {
      "id": "upgrade-the-chart-ex0",
      "language": "sh",
      "code": "helm upgrade <release-name> redis/redis-enterprise-operator --version <chart-version>",
      "section_id": "upgrade-the-chart"
    },
    {
      "id": "upgrade-the-chart-ex1",
      "language": "sh",
      "code": "helm upgrade <release-name> <path-to-chart>",
      "section_id": "upgrade-the-chart"
    },
    {
      "id": "upgrade-the-chart-ex2",
      "language": "sh",
      "code": "helm upgrade my-redis-enterprise .",
      "section_id": "upgrade-the-chart"
    },
    {
      "id": "update-an-rec-created-by-the-chart-ex0",
      "language": "yaml",
      "code": "cluster:\n      create: true\n      spec:\n        nodes: 3\n        redisEnterpriseImageSpec:\n          repository: redislabs/redis\n        redisEnterpriseServicesRiggerImageSpec:\n          repository: redislabs/k8s-controller\n        bootstrapperImageSpec:\n          repository: redislabs/operator\n        extraLabels:\n          environment: production",
      "section_id": "update-an-rec-created-by-the-chart"
    },
    {
      "id": "update-an-rec-created-by-the-chart-ex1",
      "language": "sh",
      "code": "helm upgrade <release-name> redis/redis-enterprise-operator \\\n        --namespace <namespace-name> \\\n        --values <path-to-values-file>",
      "section_id": "update-an-rec-created-by-the-chart"
    },
    {
      "id": "update-an-rec-created-by-the-chart-ex2",
      "language": "sh",
      "code": "kubectl get rec <rec-name> --namespace <namespace-name> -o yaml",
      "section_id": "update-an-rec-created-by-the-chart"
    },
    {
      "id": "uninstall-ex0",
      "language": "sh",
      "code": "helm uninstall <release-name>",
      "section_id": "uninstall"
    },
    {
      "id": "uninstall-the-rec-and-operator-together-ex0",
      "language": "sh",
      "code": "helm uninstall <release-name> --namespace <namespace-name>",
      "section_id": "uninstall-the-rec-and-operator-together"
    },
    {
      "id": "uninstall-the-rec-and-operator-together-ex1",
      "language": "sh",
      "code": "kubectl get all --namespace <namespace-name>",
      "section_id": "uninstall-the-rec-and-operator-together"
    },
    {
      "id": "migrate-from-a-non-helm-installation-ex0",
      "language": "sh",
      "code": "helm install <release-name> redis/redis-enterprise-operator --take-ownership",
      "section_id": "migrate-from-a-non-helm-installation"
    },
    {
      "id": "migrate-from-a-non-helm-installation-ex1",
      "language": "sh",
      "code": "kubectl delete validatingwebhookconfiguration redis-enterprise-admission",
      "section_id": "migrate-from-a-non-helm-installation"
    }
  ]
}
