Overview
Redpanda is a Kafka-compatible streaming platform written in C++. It implements the Kafka wire protocol natively, so any Kafka client, SDK, or tool works without modification. This template deploys a stateful Redpanda broker cluster with SASL authentication, Schema Registry, an optional HTTP REST proxy, and an optional web console. SASL credentials are not template values. Each user comes from a dictionary secret you create before installing, so the credentials never pass through Helm and never land in the release. The console ships closed to the internet, because the build shipped here has no login of its own.What Gets Created
- Stateful Redpanda Workload — (
RELEASE_NAME-cluster): 1, 3, or 5 brokers forming a Raft quorum, each with its own persistent volume. The container assembles/etc/redpanda/redpanda.yamlfrom the injected credentials at boot. - Standard Redpanda Console Workload (optional, enabled by default) — (
RELEASE_NAME-console): the web UI for browsing topics, inspecting messages, managing consumer groups, and viewing Schema Registry schemas. - Volume Set — (
RELEASE_NAME-data): one block volume per broker holding the topic data directory, with platform-managed snapshots. - Startup-Script Secrets — One opaque secret per workload holding the script that assembles the broker and console configuration files at boot. The template creates no credential secret of its own.
- Identity & Policy — An identity bound to the workloads and a policy granting it
revealon exactly the script secrets plus each SASL credentials secret you named. - Domain (optional) — Created only when external Kafka access or a console domain is configured.
This template does not create a GVC. You must deploy it into an existing GVC.
Upgrading From Earlier Versions
Template version 1.0.x took each SASL user’s username and password as plain Helm values and shipped a working default for the superuser, and it published the console to0.0.0.0/0. Both changed in 1.1.0.
Each removed key is rejected at render with a message naming its replacement, so a failing upgrade leaves the running release untouched.
- Create the secret with the username and password the cluster already uses. SASL users live in the cluster’s own metadata on disk, so changing this value does not change the password of an existing cluster — it only changes what the internal clients present, and a mismatch means they can no longer authenticate. Rotate a real user with
rpk security user updateand update the secret to match. - The console’s public URL now returns
403. Reach it withcpln port-forward(see Redpanda Console), or setredpanda_console.firewall.external_inboundAllowCIDRback explicitly — knowing the UI has no login at all.
Prerequisites
One secret per SASL user must exist before you install. Every entry inredpanda.auth.users names a dictionary secret holding username and password. Secrets are org-level, so no GVC flag is involved.
1
Create the superuser credentials secret
The first entry in Set
redpanda.auth.users is the cluster superuser: the console, the Schema Registry client and (when enabled) the HTTP Proxy all authenticate to the brokers as it.redpanda.auth.users[0].credentialsSecretName to the name you used.2
Add one secret per additional user
Create another dictionary secret in the same shape for each extra SASL user, and add one
credentialsSecretName entry per secret. Each additional user starts with no ACLs, so it can authenticate but cannot read or write anything until you grant it access.3
Read a secret back later
The
-o yaml is required — plain cpln secret reveal prints only a summary table, not the values:Installation
To install, follow the instructions for your preferred method:UI
Browse, install, and manage templates visually
CLI
Manage templates from your terminal
Terraform
Declare templates in your Terraform configurations
Pulumi
Declare templates in your Pulumi programs
Configuration
The defaultvalues.yaml for this template:
Cluster Size and Resources
redpanda.name— Suffix of the broker workload name, which isRELEASE_NAME-{name}.redpanda.replicas— Number of brokers. Must be1,3, or5: an even count cannot form a Raft quorum and is rejected at install. Changing it changes cluster membership, so treat it as a deliberate operation.redpanda.cpu/redpanda.memory— Limit per broker.redpanda.minCpu/redpanda.minMemory— reservation per broker. The shipped ratio is 3:1; if you raisecpu, raiseminCpuwith it, because a stateful workload rejects a CPU-to-reservation ratio above 4:1.redpanda.smp— Number of Seastar reactor threads. It must match the floor of the CPU limit (cpu: 1500m→smp: 1). Without it, Seastar uses all node CPUs and divides memory across them, starving each shard.redpanda.reserveMemory— Memory set aside for the OS. Redpanda uses(memory - reserveMemory).redpanda.multiZone— Spread brokers across availability zones within the location.redpanda.env— Extra environment variables for the broker container.
Storage
Each broker gets its own persistent volume. For high-throughput production workloads switch tohigh-throughput-ssd (minimum 200 GiB).
redpanda.volume.initialCapacity— Initial volume size in GB.redpanda.volume.performanceClass—general-purpose-ssdorhigh-throughput-ssd.redpanda.volume.fileSystemType—xfs(default) orext4.redpanda.volume.snapshots.createFinalSnapshot— Take a snapshot when the volume set is deleted.redpanda.volume.snapshots.retentionDuration— How long each snapshot is kept.redpanda.volume.snapshots.schedule— Cron expression in UTC for scheduled snapshots; an empty string disables them.
After deploying with custom encryption enabled, open each created volume in the Control Plane console, click
spec, and follow the AWS Custom Encryption Instructions to complete the setup.Authentication
SASL is always enabled, and every user’s credentials are a prerequisite secret (see Prerequisites). The first entry in the list becomes the cluster superuser.redpanda.auth.saslMechanism—SCRAM-SHA-256(default) orSCRAM-SHA-512.redpanda.auth.users[].credentialsSecretName— Name of the dictionary secret holding that user’susernameandpassword. At least one entry is required.redpanda.auth.superusers— Extra usernames to grant superuser rights, for users created outside this chart.
rpk security user update and change the secret to match.
ACLs
redpanda.acl.allowEveryoneIfNoAclFound— Whenfalse(default), a client with no matching ACL is denied. A non-superuser with no ACLs can authenticate but sees no topics and cannot create one.
Listeners
Enable the HTTP Proxy to produce and consume over REST without a Kafka client:
Extra Broker Configuration
Pass any Redpanda broker property throughextra_configurations; they are written into redpanda.yaml at startup. redpanda.secrets.cluster_id is generated on first boot when left empty — set it explicitly to preserve cluster identity across reinstalls.
Firewall
redpanda.firewall.internal_inboundAllowType— Which workloads can reach the brokers:same-gvc(default) orsame-org.redpanda.firewall.inboundAllowWorkload— Narrow internal access to specific workloads by path. This is the control that limits who can reach the unauthenticated Admin API.redpanda.firewall.external_inboundAllowCIDR/external_outboundAllowCIDR— Commented out by default. Comment a rule back in to allow that traffic.
Console
redpanda_console.enabled— Deploy the Redpanda Console workload (defaulttrue).redpanda_console.image,cpu,memory,minCpu,minMemory,replicas,timeoutSeconds— Image, resources and request timeout for the console workload.redpanda_console.domain— A custom domain for the console. It also requires external inbound to be open.redpanda_console.firewall.external_inboundAllowCIDR— Commented out, so the console is closed to the internet. See Redpanda Console before uncommenting it.
Connecting
Redpanda is reachable from any workload in the same GVC:
A specific broker replica is addressable directly:
rpk from a workload in the same GVC:
Redpanda Console
The console has no login in this build, and that is a licensing fact rather than a configuration gap. Console authentication (OIDC and basic login) and role-based authorization are Redpanda Enterprise features. Unlicensed, the console runs in static service account mode: there is no login screen, every visitor shares the same access level, and that shared session carries the cluster superuser’s SASL credentials. Anyone who can reach the console can browse and publish messages, create and delete topics, and manage consumer groups and ACLs. Adding authentication was therefore not an option, so external inbound is closed by default. Reach the UI through a tunnel instead — the tunnel goes through Control Plane infrastructure and is independent of the firewall:The console crash-loops for about 34 seconds on a cold install, logging a red
Invalid credentials error. It has started before broker 0’s postStart hook has created the SASL users, so its first run fails, and the platform restarts it into a working state. It self-heals with no action needed — do not go looking for a credential mistake in the first minute of a fresh install.The Admin API Is Unauthenticated
The broker Admin API on port9644 requires no credentials — for writes as well as reads — and under the default same-gvc firewall it is reachable by every workload in the GVC. This was verified directly: a neighbouring workload holding no credentials at all created a SASL user through it and then deleted it again. Reads leak the cluster topology and the SASL usernames.
It is not publicly reachable: external inbound on the broker workload is closed, so the exposure is bounded by the GVC. But treat GVC membership as equivalent to cluster admin until you narrow it, which you do with redpanda.firewall.inboundAllowWorkload — listing exactly the workloads that need broker access. The readiness probe, the postStart hook and the console all depend on this listener, so it cannot simply be closed.
External Access
Redpanda brokers can be exposed over the internet with TLS via a public domain. Each broker advertises its own per-replica subdomain and Control Plane routes clients to the correct broker using SNI.Requirements
- A domain you control with DNS managed by your registrar.
- Dedicated Load Balancer enabled on your GVC — required for external TCP routing. See Configure Domain.
- DNS records added before deploying. Disable proxying (for example Cloudflare’s orange cloud) — TCP traffic must pass through directly:
Add one CNAME per broker replica, pointing at the GVC gateway rather than at a direct replica address. The
_acme-challenge record lets Control Plane issue the certificate via DNS-01. Your GVC alias is under GVC settings in the Control Plane console.
External Access Configuration
Connecting Externally
Each broker advertises{clusterName}-{ordinal}-{location}.{domain}. Use them all as the bootstrap list:
security.protocol=SASL_SSL, sasl.mechanism=SCRAM-SHA-256, and the same bootstrap list.
Important Notes
- Every credentials secret named in
redpanda.auth.usersmust exist before you install. Without one the deployment wedges with no log output at all; see Prerequisites for the one diagnostic that names it. - Anyone who can reach the console acts as the cluster superuser — there is no login. Keep external inbound closed unless the console sits behind your own authenticating proxy.
- The broker Admin API on
9644is unauthenticated for reads and writes and open to the whole GVC by default — see The Admin API Is Unauthenticated. - The console crash-loops for roughly 34 seconds on a cold install with an
Invalid credentialserror, before the SASL users exist. It self-heals. - SASL users live in the cluster’s metadata after first boot. Editing a credentials secret does not rotate the user; use
rpk security user updateand change the secret to match. redpanda.replicasmust be1,3, or5. An even count cannot form a Raft quorum and is rejected at install.- A rolling upgrade is not serialized for a stateful workload, so brokers may restart together. Configure producers and consumers to retry.
- The first Helm upgrade after an install re-applies resources even with identical values, bouncing both workloads. Later upgrades are clean.
- Topic data survives reschedules and reinstalls of the same release, and the volume set carries scheduled snapshots — but the snapshots are the only backup, so use tiered storage or a mirroring job if you need point-in-time recovery elsewhere.
External References
Redpanda Documentation
Official Redpanda documentation
Redpanda Console Documentation
Redpanda Console UI guide
rpk CLI Reference
rpk command reference for managing Redpanda clusters
Schema Registry API
Confluent-compatible Schema Registry and HTTP Proxy API reference
Redpanda Template
View the source files, default values, and chart definition