Documentation · Start here

Quickstart

Bring up Kafka, Klamm, and a browser console for each of two tenants with one command.

A self-contained Compose stack runs a single-node Kafka broker, Klamm, and one Redpanda Console per tenant. Each console shows only its tenant’s view of the same underlying broker.

Bring up the stack

The Klamm image emits its own docker-compose.yml — Kafka, the proxy, and two consoles, all wired together with inline config and secrets:

docker run --rm jerrinot/klamm:snapshot quickstart > docker-compose.yml
docker compose up -d

Klamm listens inside the Compose network on proxy:29092. The snippets below run kcat in a one-shot container attached to that network (klamm-quickstart), so nothing extra needs to be installed on your host.

Open two browser tabs

Produce and consume as each tenant

Produce a message as tenant-a:

echo "order-1 from tenant-a" | docker run --rm -i --network klamm-quickstart \
  edenhill/kcat:1.7.1 -b proxy:29092 -P -t orders \
  -X security.protocol=SASL_PLAINTEXT -X sasl.mechanisms=PLAIN \
  -X sasl.username=tenant-a -X sasl.password=tenant-a-secret

Produce to the same logical topic as tenant-b:

echo "order-1 from tenant-b" | docker run --rm -i --network klamm-quickstart \
  edenhill/kcat:1.7.1 -b proxy:29092 -P -t orders \
  -X security.protocol=SASL_PLAINTEXT -X sasl.mechanisms=PLAIN \
  -X sasl.username=tenant-b -X sasl.password=tenant-b-secret

Consume as tenant-a — you see only tenant-a’s own message:

docker run --rm -i --network klamm-quickstart \
  edenhill/kcat:1.7.1 -b proxy:29092 -C -t orders -o beginning -e \
  -X security.protocol=SASL_PLAINTEXT -X sasl.mechanisms=PLAIN \
  -X sasl.username=tenant-a -X sasl.password=tenant-a-secret

Tear down

docker compose down -v

What this demonstrates

  • Each tenant sees its own cluster. Both consoles are connected to the same Kafka broker through Klamm, but neither console can see the other tenant’s topics, consumer groups, or transactions.
  • Logical names are unprefixed. Both tenants see a topic called orders. The prefix appears only on the broker side.
  • Physical storage is shared. The broker has a single partition set for each logical topic, named with the tenant prefix.

Next steps