Try the 25.2 Beta of the Redpanda Operator

Deploy the 25.2 beta release of the Redpanda Operator. This version of the Redpanda Operator is cluster scope so a single instance of the Operator can manage multiple Redpanda resources in different namespaces.

This beta version is available for testing and feedback. It is not supported by Redpanda and should not be used in production environments. To give feedback on beta releases, reach out to the Redpanda team in Redpanda Community Slack.

Prerequisites

Make sure that your Kubernetes cluster meets the requirements.

Deploy Redpanda Operator v25.2.1-beta1 in cluster scope

To deploy the Redpanda Operator in cluster scope (managing Redpanda resources across all namespaces), do the following:

  1. Make sure that you have permission to install custom resource definitions (CRDs):

    kubectl auth can-i create CustomResourceDefinition --all-namespaces

    You should see yes in the output.

    You need these cluster-level permissions to install cert-manager and Redpanda Operator CRDs in the next steps.

  2. Install cert-manager:

    helm repo add jetstack https://charts.jetstack.io
    helm repo update
    helm install cert-manager jetstack/cert-manager \
      --set crds.enabled=true \
      --namespace cert-manager \
      --create-namespace

    TLS is enabled by default and cert-manager is used to manage TLS certificates.

  3. Deploy the Redpanda Operator:

    helm repo add redpanda https://charts.redpanda.com
    helm upgrade --install redpanda-controller redpanda/operator \
      --namespace <operator-namespace> \
      --create-namespace \
      --version v25.2.1-beta1 \
      --set crds.enabled=true
  4. Ensure that the Deployment is successfully rolled out:

    kubectl --namespace <operator-namespace> rollout status --watch deployment/redpanda-controller-operator
    deployment "redpanda-controller-operator" successfully rolled out
  5. Define a Redpanda custom resource to deploy a Redpanda cluster.

    redpanda-cluster.yaml
    apiVersion: cluster.redpanda.com/v1alpha2
    kind: Redpanda
    metadata:
      name: redpanda
      namespace: <cluster-namespace> (1)
    1 Add your namespace.
  6. If you want to use enterprise features in Redpanda, add the details of a Secret that stores your Enterprise Edition license key.

    redpanda-cluster.yaml
    apiVersion: cluster.redpanda.com/v1alpha2
    kind: Redpanda
    metadata:
      name: redpanda
      namespace: <cluster-namespace>
    spec:
      clusterSpec:
        enterprise:
          licenseSecretRef:
            name: <secret-name>
            key: <secret-key>
  7. Apply the Redpanda resource:

    kubectl apply -f redpanda-cluster.yaml
  8. Wait for the Redpanda Operator to deploy the cluster:

    kubectl get redpanda --namespace <cluster-namespace> --watch
    NAME       READY   STATUS
    redpanda   True    Redpanda reconciliation succeeded

    This step may take a few minutes. You can watch for new Pods to make sure that the deployment is progressing:

    kubectl get pod --namespace <cluster-namespace>

    If it’s taking too long, see Troubleshooting.

Deploy multiple Redpanda clusters

You can deploy more than one Redpanda cluster in the same Kubernetes cluster by using a different namespace and unique node ports.

  1. Define a new Redpanda resource in a unique namespace.

    Make sure to also use unique node ports for the listeners in your Redpanda resource so that they don’t conflict with any existing node ports in your other Redpanda clusters.
    redpanda-cluster-two.yaml
    apiVersion: cluster.redpanda.com/v1alpha2
    kind: Redpanda
    metadata:
      name: redpanda-two
      namespace: <cluster-two-namespace>
    spec:
      clusterSpec:
        listeners:
          kafka:
            external:
              default:
                advertisedPorts: [31093]
          admin:
            external:
              default:
                advertisedPorts: [31645]
          http:
            external:
              default:
                advertisedPorts: [30083]
          rpc:
            port: 33146
          schemaRegistry:
            external:
              default:
                advertisedPorts: [30084]
  2. Apply the Redpanda resource:

    kubectl apply -f redpanda-cluster-two.yaml

Deploy Redpanda Operator v25.2.1-beta1 in namespace scope

To deploy the Redpanda Operator in namespace scope (managing only resources within its deployment namespace), do the following:

  1. Make sure that you have permission to install custom resource definitions (CRDs):

    kubectl auth can-i create CustomResourceDefinition --all-namespaces

    You should see yes in the output.

    You need these cluster-level permissions to install cert-manager and Redpanda Operator CRDs in the next steps.

  2. Install cert-manager:

    helm repo add jetstack https://charts.jetstack.io
    helm repo update
    helm install cert-manager jetstack/cert-manager \
      --set crds.enabled=true \
      --namespace cert-manager \
      --create-namespace

    TLS is enabled by default and cert-manager is used to manage TLS certificates.

  3. Deploy the Redpanda Operator:

    helm upgrade --install redpanda-controller redpanda/operator \
      --namespace <namespace> \
      --create-namespace \
      --version v25.1.3 \
      --set crds.enabled=true \
      --set 'additionalCmdFlags=["--namespace=<namespace>"]' (1)
    1 This flag restricts the Redpanda Operator to manage resources only within the specified namespace.
    Do not run multiple Redpanda Operators in different scopes (cluster and namespace scope) in the same cluster as this can cause resource conflicts.
  4. Ensure that the Deployment is successfully rolled out:

    kubectl --namespace <namespace> rollout status --watch deployment/redpanda-controller-operator
    deployment "redpanda-controller-operator" successfully rolled out
  5. Define a Redpanda custom resource to deploy a Redpanda cluster in the same namespace as the namespace-scoped Redpanda Operator.

    redpanda-cluster.yaml
    apiVersion: cluster.redpanda.com/v1alpha2
    kind: Redpanda
    metadata:
      name: redpanda
      namespace: <namespace>
  6. Apply the Redpanda resource:

    kubectl apply -f redpanda-cluster.yaml
  7. Wait for the Redpanda Operator to deploy the cluster:

    kubectl get redpanda --namespace <namespace> --watch
    NAME       READY   STATUS
    redpanda   True    Redpanda reconciliation succeeded

    This step may take a few minutes. You can watch for new Pods to make sure that the deployment is progressing:

    kubectl get pod --namespace <namespace>

    If it’s taking too long, see Troubleshooting.

Uninstall Redpanda

When you finish testing Redpanda, you can uninstall it from your Kubernetes cluster.

Follow the steps in exact order to avoid race conditions between the Redpanda Operator’s reconciliation loop and Kubernetes garbage collection.

  1. Delete all Redpanda-related custom resources:

    kubectl delete users      --namespace <operator-namespace> --all
    kubectl delete topics     --namespace <operator-namespace> --all
    kubectl delete schemas    --namespace <operator-namespace> --all
    kubectl delete redpanda   --namespace <operator-namespace> --all
  2. Make sure requests for those resources return no results. For example, if you had a Redpanda cluster named redpanda in the namespace <namespace>, run:

    kubectl get redpanda --namespace <cluster-namespace>
  3. Uninstall the Redpanda Operator Helm release:

    helm uninstall redpanda-controller --namespace <operator-namespace>

    Helm does not uninstall CRDs by default when using helm uninstall to avoid accidentally deleting existing custom resources.

  4. Remove the CRDs.

    1. List all Redpanda CRDs installed by the operator:

      kubectl api-resources --api-group='cluster.redpanda.com'

      This command displays all CRDs defined by the Redpanda Operator. For example:

      NAME        SHORTNAMES   APIVERSION                      NAMESPACED   KIND
      redpandas   rp           cluster.redpanda.com/v1alpha2   true         Redpanda
      schemas     sc           cluster.redpanda.com/v1alpha2   true         Schema
      topics                   cluster.redpanda.com/v1alpha2   true         Topic
      users       rpu          cluster.redpanda.com/v1alpha2   true         User
    2. Delete the CRDs:

      kubectl get crds -o name | grep cluster.redpanda.com | xargs kubectl delete

      This command lists all CRDs with the cluster.redpanda.com domain suffix and deletes them, ensuring only Redpanda CRDs are removed. Helm does not delete CRDs automatically to prevent data loss, so you must run this step manually.

  5. (Optional) Delete any leftover PVCs or Secrets in the namespace:

    The following command deletes all PVCs and Secrets in the namespace, which may remove unrelated resources if the namespace is shared with other applications.
    kubectl delete pvc,secret --all --namespace <cluster-namespace>

Next steps

To give feedback about this beta version, reach out to the Redpanda team in Redpanda Community Slack.