# Redpanda in Kubernetes

> For the complete documentation index, see [llms.txt](https://docs.redpanda.com/llms.txt). Component-specific: [streaming-full.txt](https://docs.redpanda.com/streaming-full.txt)

---
title: Redpanda in Kubernetes
latest-redpanda-tag: v24.3.9
latest-console-tag: v3.7.3
latest-operator-version: v26.1.4
# EOL = End-of-Life (support lifecycle status)
page-is-nearing-eol: "false"
page-is-past-eol: "true"
page-eol-date: December 3, 2025
latest-connect-version: 4.93.0
docname: deployment-option/self-hosted/kubernetes/k-deployment-overview
page-component-name: streaming
page-version: "24.3"
page-component-version: "24.3"
page-component-title: Streaming
page-relative-src-path: deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc
page-edit-url: https://github.com/redpanda-data/docs/edit/v/24.3/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc
description: Learn about Redpanda in Kubernetes and the tools that are available.
page-git-created-date: "2024-01-04"
page-git-modified-date: "2025-01-17"
support-status: past end-of-life
---

<!-- Source: https://docs.redpanda.com/streaming/24.3/deploy/deployment-option/self-hosted/kubernetes/k-deployment-overview.md -->

Kubernetes is a container orchestration tool that helps you manage Redpanda deployments using declarative configuration files called _manifests_. Kubernetes provides a standardized way of achieving the following:

-   High availability

-   Disaster recovery

-   Scalability


## [](#deployment-tools)Deployment tools

To deploy Redpanda in Kubernetes, you can choose to use Helm for its simplicity or the Redpanda Operator to leverage custom resource definitions (CRDs) for a more GitOps-friendly deployment process. The Redpanda Operator is the recommended option for production deployments.

| Feature | Helm | Redpanda Operator |
| --- | --- | --- |
| Version management | Supported through Helm, enabling updates and rollbacks. | Managed through Redpanda custom resources, with optional integration with Flux for GitOps workflows. |
| Multi-tenant Kubernetes clusters | Supported. Helm allows deployment of multiple independent Redpanda clusters by defining different Helm release names. | Supported. The Redpanda Operator provides a declarative approach for managing multi-tenant clusters using the RedpandaList custom resource. |
| Dependency and configuration management | Managed through the Redpanda Helm chart. | Configurations are defined in custom resources. |

> 💡 **TIP**
>
> If you are already using the Redpanda Helm chart and want to migrate to the latest Redpanda Operator for better lifecycle management, see [Migrate from the Redpanda Helm chart](https://docs.redpanda.com/streaming/24.3/upgrade/migrate/kubernetes/helm-to-operator/).

### [](#helm)Helm

[Helm](https://helm.sh/docs) is a package manager for Kubernetes that simplifies defining, installing, and upgrading Kubernetes applications. Helm uses charts, a collection of files describing Kubernetes resources, to deploy applications in a Kubernetes cluster.

The Redpanda Helm chart provides all the manifest files required to deploy Redpanda in Kubernetes, including:

-   A StatefulSet to manage Redpanda brokers

-   A Headless ClusterIP Service for internal communication with the Redpanda cluster

-   A NodePort Service for external communication with the Redpanda cluster


### [](#helm-and-redpanda-operator)Redpanda Operator

The Redpanda Operator provides two deployment modes controlled by the `useFlux` flag. The modes differ in how reconciliation is handled.

> ❗ **IMPORTANT**
>
> The `useFlux: false` configuration is in beta. It is not supported for production deployments. Beta features are available for users to test and [provide feedback](https://redpandacommunity.slack.com/).

-   **Flux-managed mode (`useFlux: true`)**: When `useFlux` is set to `true` (default), the Redpanda Operator delegates reconciliation to [Flux](https://fluxcd.io/flux/concepts/) controllers. The workflow is as follows:

    1.  The Redpanda Operator defines the necessary CRDs for Redpanda. A Redpanda resource represents a Redpanda cluster, configured through the Redpanda Helm chart values.

    2.  When the Redpanda Operator detects changes to Redpanda resources, it triggers Flux to reconcile the corresponding HelmRelease resource.

    3.  Flux uses the HelmRelease resource to manage the lifecycle of the Redpanda Helm chart, applying updates as needed.


-   **Redpanda-managed mode (`useFlux: false`)**: When `useFlux` is set to `false`, the Redpanda Operator manages and reconciles Redpanda resources directly, without involving Flux. This mode works as follows:

    1.  The Redpanda Operator creates both `HelmRelease` and `HelmRepository` resources but suspends them, keeping Flux inactive.

        > 📝 **NOTE**
        >
        > Although these resources are created in a suspended state, the operator still requires the Flux CRDs to be installed.

    2.  The operator directly reconciles Redpanda resources, performing tasks such as installations, updates, and cleanup, normally handled by Flux.

    3.  If `useFlux` is later re-enabled, the operator unsuspends the Flux resources, and Flux resumes lifecycle management.



Example configuration to specify the deployment mode in Redpanda’s custom resource:

```yaml
apiVersion: cluster.redpanda.com/v1alpha2
kind: Redpanda
metadata:
  name: redpanda
spec:
  chartRef:
    useFlux: true  # or false, depending on your desired deployment mode
```

![CRDs for the Redpanda Operator include Flux CRDs. Flux manages the Redpanda Helm chart through the HelmRelease resource.](https://docs.redpanda.com/streaming/24.3/shared/_images/operator-flux-relationship.png)

## [](#kubernetes-deployment-environments)Kubernetes deployment environments

You can run Redpanda on managed Kubernetes services as well as in bare-metal environments. Managed Kubernetes services offer simpler deployment and maintenance, while bare-metal environments provide complete control and cost efficiencies.

### [](#managed-kubernetes)Managed Kubernetes

Managed Kubernetes services, such as Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS), handle core components of a Kubernetes cluster, offering benefits such as:

-   **Ease of deployment**: Pre-configured instances join your Kubernetes cluster automatically.

-   **Control plane maintenance**: The provider maintains the control plane, ensuring security and reliability.

-   **Health monitoring and repairs**: The provider monitors master nodes and repairs them as needed.


You remain responsible for deploying and maintaining Redpanda instances on worker nodes.

> ❗ **IMPORTANT**
>
> Deploy Kubernetes clusters with **unmanaged (manual) node updates**. Managed (automatic) updates during cluster deployment can lead to service downtime, data loss, or quorum instability. Transitioning from managed updates to unmanaged updates after deployment may require downtime. To avoid these disruptions, plan for unmanaged node updates from the start. See [Kubernetes Cluster Requirements and Recommendations](https://docs.redpanda.com/streaming/24.3/deploy/deployment-option/self-hosted/kubernetes/k-requirements/#node-updates).

### [](#bare-metal-kubernetes-environments)Bare-metal Kubernetes environments

Bare-metal Kubernetes environments give you complete control over both the control plane and the worker nodes, which can be advantageous when you want the following:

-   **Complete control**: Bare-metal Kubernetes offers control over every aspect of deployment, suited for highly customized environments.

-   **Custom configurations**: You have granular control to fine-tune the Kubernetes setup.

-   **Cost efficiency**: Owning and operating your hardware may be more economical over time.


## [](#documentation-conventions)Documentation conventions

This documentation follows conventions to help users easily identify Kubernetes resource types and Helm values:

-   **Resource names**: Kubernetes resource names, such as Service or PersistentVolume, are capitalized and in Pascal case to match the manifest files.

-   **Helm values**: Helm values, like `storage.persistentVolume.enabled`, are displayed in monospace font.


## [](#next-steps)Next steps

-   Get started

    -   [Local Deployment Guide](https://docs.redpanda.com/streaming/24.3/deploy/deployment-option/self-hosted/kubernetes/local-guide/) (kind and minikube)

    -   [Azure Kubernetes Service Guide](https://docs.redpanda.com/streaming/24.3/deploy/deployment-option/self-hosted/kubernetes/aks-guide/) (AKS)

    -   [Elastic Kubernetes Service Guide](https://docs.redpanda.com/streaming/24.3/deploy/deployment-option/self-hosted/kubernetes/eks-guide/) (EKS)

    -   [Google Kubernetes Engine Guide](https://docs.redpanda.com/streaming/24.3/deploy/deployment-option/self-hosted/kubernetes/gke-guide/) (GKE)


-   [Kubernetes Cluster Requirements and Recommendations](https://docs.redpanda.com/streaming/24.3/deploy/deployment-option/self-hosted/kubernetes/k-requirements/)

-   [Production deployment workflow](https://docs.redpanda.com/streaming/24.3/deploy/deployment-option/self-hosted/kubernetes/k-production-workflow/)


## [](#suggested-reading)Suggested reading

-   [Kubernetes operator documentation](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/)

-   [Helm documentation](https://helm.sh/docs/intro/using_helm/)

-   [Redpanda Helm Specification](https://docs.redpanda.com/streaming/24.3/reference/k-redpanda-helm-spec/)

-   [Redpanda CRD Reference](https://docs.redpanda.com/streaming/24.3/reference/k-crd/)


## Suggested labs

-   [Set Up GitOps for the Redpanda Helm Chart](https://docs.redpanda.com/labs/kubernetes/gitops-helm/)

[Search all labs](https://docs.redpanda.com/labs)