Add an Enterprise Edition License to Redpanda in Kubernetes

To enable enterprise features for Redpanda Streaming, you must have an Enterprise Edition license. This guide outlines how to apply or update an Enterprise Edition license for Redpanda Streaming 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:

    • 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:

  • 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 Streaming 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 a new name that contains the contents of the updated license:

    kubectl create secret generic redpanda-license-updated \
      --from-file=license=./redpanda.license \
      --namespace <namespace>
  4. Update the Redpanda CRD to use the new Secret.

    redpanda-cluster.yaml
    apiVersion: cluster.redpanda.com/v1alpha2
    kind: Redpanda
    metadata:
      name: redpanda
    spec:
      chartRef: {}
      clusterSpec:
        enterprise:
          licenseSecretRef:
            name: redpanda-license-updated
            key: license
  5. Apply the changes to the Redpanda CRD:

    kubectl apply -f redpanda-cluster.yaml --namespace <namespace>

    The Redpanda Operator updates the license without restarting the Repanda broker.

  6. Check the status of the 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.
  7. 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:

    • 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>