control-plane.popsink.com, or
your own) which orchestrates and monitors the deployment.
Architecture overview
The chart deploys the following components:
You can disable any sub-component and bring your own:
- External Kafka —
tansu.enabled=false, configuredefaultKafka.* - External Schema Registry —
karapace.enabled=false, configureschemaRegistry.* - External PostgreSQL —
postgresql.enabled=false, configureexternalDatabase.*
Prerequisites
Cluster
Access to Popsink images
All images are published to a private GAR registry:- Chart-managed pull secret
- Bring your own pull secret
Let the chart create the
imagePullSecret for you:Onboarding flow (control plane)
Before installing the chart, you need a deployment ID and a deployment JWT token issued by the control plane.1
Open the control plane
Log into
https://control-plane.popsink.com (or your own control plane).2
Create a self-hosted deployment
Open Deployments → New deployment and pick Self-hosted.
3
Fill the wizard
- Optional pre-fill of PostgreSQL credentials (not stored).
- Retention strategy — pick S3-compatible storage (recommended) or PostgreSQL.
- FQDN — the public URL where the data plane will be reachable
(e.g.
https://popsink.your-company.com).
4
Copy the values snippet
The wizard outputs a
values-control-plane.yaml snippet containing
controlPlaneUrl, deploymentId and deploymentJwtToken.
Use these values verbatim — they identify and authenticate your data
plane against the control plane.5
Wait for connection
Keep the wizard open. After
helm install, the control plane will switch
from Awaiting connection… to Connected once the data plane
registers.Required secrets to generate yourself
Beyond the values handed by the control plane, you must generate four secrets locally:
If you prefer to manage secrets out of band (Vault, Sealed Secrets, External
Secrets Operator…), set the corresponding
existingSecret field instead.
Tansu storage (S3)
Tansu is a stateless Kafka broker that stores log segments in S3. You must provide an S3-compatible bucket and a way to authenticate.If you don’t want Tansu, set
tansu.enabled=false and karapace.enabled=false,
then point the data plane at your existing Kafka:Ingress
The chart’s built-iningress.enabled flag is off by default and we
recommend leaving it that way: ingress in production usually needs
company-specific annotations (cert-manager, WAF, allow-lists). Provide your
own Ingress resource that exposes:
- the data-plane HTTP service (
<release>-data-plane, port80), - on the FQDN you declared in the control plane (
ingressUrl).
Ingress for you, set ingress.enabled=true
and configure ingress.hostname, ingress.ingressClassName, ingress.tls.
Putting it together — minimal values.yaml
values.yaml
Install
Ready, head back to the control-plane deployment page —
the status should flip from Awaiting connection… to Connected within
a minute. Open ingressUrl and log in with the adminCredentials you set.
Production checklist
Versions & images
Versions & images
- Pin the chart version (
--version) and the application image (image.tag) — never deploylatest.
State
State
- Use external PostgreSQL (
postgresql.enabled=false,externalDatabase.*) backed by managed snapshots, not the in-cluster Bitnami chart. - Use external S3 with versioning + lifecycle policy for Tansu.
Resources & availability
Resources & availability
- Set explicit
resources.requests/limitson every component (defaults target small-medium clusters; tune for your workload). - Configure
replicaCount ≥ 2ondata-plane(default), keeptansu.replicaCount=3(default). - Enable
pdb.create: true(default) — at least 1 pod stays during node drains.
Secrets
Secrets
- Provide
imagePullSecretsvia a sealed secret / external secrets controller, not plain values. - Back up the four secrets (admin credentials, JWT secret, Fernet key, DB password) in your secret manager.
Safety switches
Safety switches
- Keep
allowDesignLogin: false(default) andpipelineMode: falseunless explicitly told otherwise — these are dev-only switches.
Network
Network
- Ingress: TLS-only, cert-manager (or equivalent), restrict source ranges if your data plane is internet-exposed only for known IPs.
Upgrade
Uninstall
Troubleshooting
For deeper logs:
Reference — most useful values
A full list lives invalues.yaml (annotated with @param blocks). The most
common knobs are:
Further reading
Installation prerequisites
Hardware, ingress and storage requirements for a Popsink-ready cluster.
Self-hosted onboarding
The control-plane wizard that issues your
deploymentId and JWT token.