Add an Enterprise Edition License to Redpanda in Kubernetes

To enable enterprise features for Redpanda Self-Managed, you must have an Enterprise Edition license. This guide outlines how to apply or update an Enterprise Edition license for Redpanda Self-Managed in a Kubernetes environment.

Prerequisites

You must have an Enterprise Edition license. To get a trial license key or extend your trial period, generate a new trial license key. To purchase a license, contact Redpanda Sales.

Add a new license

Redpanda supports the following ways to apply a new license:

Use a Kubernetes Secret

You can store the license in a Kubernetes Secret and reference it in your Helm values or manifest file.

  1. Download your license file (redpanda.license) and create a Kubernetes Secret:

    kubectl create secret generic redpanda-license
    --from-file=license=./redpanda.license
    --namespace <namespace>

    This command creates a Kubernetes Secret named redpanda-license in the specified namespace, containing the license file.

  2. Reference the Secret:

    • Helm + Operator

    • Helm

    redpanda-cluster.yaml
    apiVersion: cluster.redpanda.com/v1alpha2
    kind: Redpanda
    metadata:
      name: redpanda
    spec:
      chartRef: {}
      clusterSpec:
        enterprise:
          licenseSecretRef:
            name: redpanda-license
            key: license
    kubectl apply -f redpanda-cluster.yaml --namespace <namespace>
    • --values

    • --set

    redpanda-license.yaml
    enterprise:
      licenseSecretRef:
        name: redpanda-license
        key: license
    helm upgrade --install redpanda redpanda/redpanda --namespace <namespace> --create-namespace \
      --values redpanda-license.yaml --reuse-values
    helm upgrade --install redpanda redpanda/redpanda \
      --namespace <namespace> \
      --create-namespace \
      --set enterprise.licenseSecretRef.name=redpanda-license \
      --set enterprise.licenseSecretRef.key=license

Provide the license inline

If you prefer to provide the license string directly, you can do so as follows:

  • Helm + Operator

  • Helm

redpanda-cluster.yaml
apiVersion: cluster.redpanda.com/v1alpha2
kind: Redpanda
metadata:
  name: redpanda
spec:
  chartRef: {}
  clusterSpec:
    enterprise:
      license: <license-key>
kubectl apply -f redpanda-cluster.yaml --namespace <namespace>
  • --values

  • --set

redpanda-license.yaml
enterprise:
  license: <license-key>
helm upgrade --install redpanda redpanda/redpanda --namespace <namespace> --create-namespace \
  --values redpanda-license.yaml --reuse-values
helm upgrade --install redpanda redpanda/redpanda \
  --namespace <namespace> \
  --create-namespace \
  --set enterprise.license=<license-key>

Use Redpanda Console

You can upload a license directly through Redpanda Console.

Verify a license

After adding or updating a license, you can use rpk to verify that the license was set.

kubectl exec <pod-name> --namespace <namespace> -c redpanda -- \
  rpk cluster license info

This command will display the current license details, including the expiration date and whether any enterprise features are active. For example:

LICENSE INFORMATION
===================
Organization:      redpanda
Type:              enterprise
Expires:           Oct 24 2027

Redpanda blocks upgrades to new feature releases if enterprise features are active without a valid license. Ensure compliance by obtaining a license to maintain access to the latest features and updates.

Update an existing license

The process for updating a license depends on how it was originally applied:

When a new license is uploaded, enterprise features in Redpanda Self-Managed are unlocked immediately without requiring a cluster restart. However, to unlock enterprise features in Redpanda Console, you must restart the Redpanda Console instance.

Update the Kubernetes Secret

If the license is provided through a Kubernetes Secret, follow these steps to update it:

  1. Download the updated license file and overwrite the existing redpanda.license file.

  2. Delete the existing Secret:

    kubectl delete secret redpanda-license --namespace <namespace>
  3. Create a new Secret with the updated license:

    kubectl create secret generic redpanda-license \
      --from-file=license=./redpanda.license \
      --namespace <namespace>
  4. Check the status of new license to make sure it was successfully applied:

    rpk cluster license info

    The output displays the following details:

    Organization:    Organization the license was generated for.
    Type:            Type of license.
    Expires:         Expiration date of the license.
    Version:         License schema version.
  5. If you use Redpanda Console, delete the Redpanda Console Pods to force Redpanda Console to reload the updated license:

    kubectl delete pod $(kubectl get pod --namespace <namespace> | grep redpanda-console | awk '{print $1}') --namespace <namespace>

Update the license inline

If you applied the license inline, follow these steps to update it:

  1. Modify the enterprise.license value with the new license string:

    • Helm + Operator

    • Helm

    redpanda-cluster.yaml
    apiVersion: cluster.redpanda.com/v1alpha2
    kind: Redpanda
    metadata:
      name: redpanda
    spec:
      chartRef: {}
      clusterSpec:
        enterprise:
          license: <license-key>
    kubectl apply -f redpanda-cluster.yaml --namespace <namespace>
    • --values

    • --set

    redpanda-license.yaml
    enterprise:
      license: <license-key>
    helm upgrade --install redpanda redpanda/redpanda --namespace <namespace> --create-namespace \
      --values redpanda-license.yaml --reuse-values
    helm upgrade --install redpanda redpanda/redpanda \
      --namespace <namespace> \
      --create-namespace \
      --set enterprise.license=<license-key>
  2. Check the status of new license to make sure it was successfully applied:

    rpk cluster license info

    The output displays the following details:

    Organization:    Organization the license was generated for.
    Type:            Type of license:.
    Expires:         Expiration date of the license.
    Version:         License schema version.
  3. If you use Redpanda Console, delete the Redpanda Console Pods to force a reload of the updated license:

    kubectl delete pod $(kubectl get pod --namespace <namespace> | grep redpanda-console | awk '{print $1}') --namespace <namespace>