Configure Redpanda in Kubernetes

To configure the cluster and the Kubernetes components that the chart deploys, you can customize the values of the Redpanda Helm chart.

Helm does a three-way merge with the following:

  • Your overridden values

  • The values in the existing Helm release

  • The default values in the new Helm release (if you’re upgrading)

Find configuration options

To see what options you can override in the chart, use the helm show values command:

helm repo add redpanda https://charts.redpanda.com
helm repo update
helm show values redpanda/redpanda

This command displays all the values, descriptions, and defaults, which are also documented in the Redpanda Helm Chart Specification.

Configure Redpanda

  • Helm + Operator

  • Helm

To customize the values of the Redpanda Helm chart, you can override the defaults in the Redpanda custom resource.

You must add all your overrides to the spec.clusterSpec configuration.

redpanda-cluster.yaml
apiVersion: cluster.redpanda.com/v1alpha1
kind: Redpanda
metadata:
  name: redpanda
spec:
  chartRef: {}
  clusterSpec: {}

For example, to override the storage.persistentVolume.storageClass configuration:

redpanda-cluster.yaml
apiVersion: cluster.redpanda.com/v1alpha1
kind: Redpanda
metadata:
  name: redpanda
spec:
  chartRef: {}
  clusterSpec:
    storage:
      persistentVolume:
        storageClass: "<storage-class>"
kubectl apply -f redpanda-cluster.yaml --namespace <namespace>

The values in your Redpanda custom resource override their counterparts in the Helm chart’s values.yaml file. Any values that are not overridden maintain their defaults.

To customize the values of the Redpanda Helm chart, you can override the defaults in your own YAML file with the --values option or in the command line with the --set option.

Redpanda Data recommends using the --values option and creating separate YAML files for each configuration block that you need to override. The Redpanda documentation follows this best practice. This way, it’s clearer to understand what you’ve overridden from the helm command.

You can pass more than one --values option in the same command. For example, if you wanted to override the TLS configuration and the storage configuration, you could put those overrides in separate files:

helm upgrade --install redpanda redpanda/redpanda \
    --namespace <namespace> --create-namespace \
    --values custom-storage-class.yaml \
    --values enable-tls.yaml
  • --values

  • --set

The --values option enables you to keep your overrides in one or more YAML files. If you specify multiple files and then override the same values in two or more of them, the rightmost file takes precedence. For example, you might override the storage.persistentVolume.storageClass configuration in a file called storage-class.yaml:

storage-class.yaml
storage:
  persistentVolume:
    storageClass: "my-storage-class"

The helm command to apply this configuration override looks something like the following:

helm upgrade --install redpanda redpanda/redpanda \
    --namespace <namespace> --create-namespace \
    --values storage-class.yaml --reuse-values

The values in your YAML files override their counterparts in the Helm chart’s values.yaml file. Any values that are not overridden maintain their defaults.

Use the --reuse-values flag to apply your overrides on top of existing overrides that you’ve already made. Don’t include this flag if you’re upgrading to a new version of the Helm chart. If you’re upgrading to a new version of the Helm chart, this flag prevents any values in the new release from being applied.

The --set option allows you to specify configuration overrides in the command line. For example, you might override the storage.persistentVolume.storageClass configuration like so:

helm upgrade --install redpanda redpanda/redpanda \
    --namespace <namespace> --create-namespace \
    --set storage.persistentVolume.storageClass=my-storage-class

For more details, see the Helm documentation.

The values in the --set options override their counterparts in the Helm chart’s values.yaml file. Any values that are not overridden maintain their defaults.

If you’re upgrading and you already have Redpanda Console installed, set console.enabled to false to stop Helm from trying to deploy it again.

Configure Redpanda Console

Redpanda Console is included as a subchart of the Redpanda Helm chart.

You can configure Redpanda Console in the console.config object using the Redpanda Console configuration values.

For example, to enable the admin API for Redpanda Console:

  • Helm + Operator

  • Helm

redpanda-cluster.yaml
apiVersion: cluster.redpanda.com/v1alpha1
kind: Redpanda
metadata:
  name: redpanda
spec:
  chartRef: {}
  clusterSpec:
    console:
      enabled: true
      console:
        config:
          redpanda:
            adminApi:
              enabled: true
              urls:
              - http://redpanda-0.redpanda.<namespace>.svc.cluster.local.:9644
kubectl apply -f redpanda-cluster.yaml --namespace <namespace>
  • --values

  • --set

console-enable-admin-api.yaml
console:
  enabled: true
  console:
    config:
      redpanda:
        adminApi:
          enabled: true
          urls:
          - http://redpanda-0.redpanda.<namespace>.svc.cluster.local.:9644
helm upgrade --install redpanda redpanda/redpanda \
    --namespace <namespace> --create-namespace \
    --values console-enable-admin-api.yaml --reuse-values
helm upgrade --install redpanda redpanda/redpanda \
    --namespace <namespace> --create-namespace \
    --set console.console.config.redpanda.adminApi.enabled=true \
    --set console.console.config.redpanda.adminApi.urls={"http://redpanda-0.redpanda.<namespace>.svc.cluster.local.:9644"}

If you want to use the separate Redpanda Console Helm chart, disable Redpanda Console in the Redpanda Helm chart with console.enabled=false. To see what options you can override in the Redpanda Console chart, use the helm show values command:

helm repo add redpanda https://charts.redpanda.com
helm repo update
helm show values redpanda/console

For default values and documentation for configuration options, see the values.yaml file.