Quickstart Guide
Deploy a running Krabka cluster and verify producer and consumer pipelines.
Option A: Docker Compose (Local Dev)
The quickest way to run a single-node KRaft cluster with local Prometheus metrics:
Run Compose Stack:
curl -fsSL https://krabka-io.github.io/quickstart/docker-compose.yml -o docker-compose.yml
docker compose up -d
KAFKA_TOOLS=docker.io/apache/kafka@sha256:01b9a4030e54c6068e66eb3ba4cb82c0d89238629ef1c30d79b86036bf89b1b7
docker run --rm --network host "$KAFKA_TOOLS" /opt/kafka/bin/kafka-topics.sh \
--bootstrap-server localhost:9092 --create --topic quickstart --partitions 1 --replication-factor 1
printf 'milestone-20-qualified\n' | docker run --rm -i --network host "$KAFKA_TOOLS" \
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic quickstart
docker run --rm --network host "$KAFKA_TOOLS" /opt/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 --topic quickstart --from-beginning --max-messages 1
docker compose down --volumes Option B: Kubernetes Operator (Helm)
Install the krabka-operator and provision a cluster CRD:
Helm Deployment:
kubectl apply -f https://krabka-io.github.io/quickstart/crds.yaml
helm repo add krabka https://krabka-io.github.io/charts
helm repo update
helm install krabka-operator krabka/krabka-operator --version 0.4.0 \
--namespace krabka-system --create-namespace \
--set image.repository=ghcr.io/krabka-io/krabka-operator \
--set-string image.digest=sha256:861796f11b63798f07cd8cfbcb0fa41376259cb6fce07b1e80e15e93de3a377b
kubectl rollout status deployment/krabka-operator-krabka-operator -n krabka-system --timeout=5m
kubectl apply -f https://krabka-io.github.io/quickstart/krabka-cluster.yaml
kubectl wait --for=condition=Ready kafka/m20-quickstart --timeout=10m
kubectl wait --for=condition=Ready kafkatopic/quickstart --timeout=5m
helm install krabka-rebalancer krabka/krabka-rebalancer --version 0.4.0 \
--set bootstrapServers=m20-quickstart-broker-headless.default.svc.cluster.local:9092 \
--set image.repository=ghcr.io/krabka-io/krabka-rebalancer \
--set-string image.digest=sha256:706b3b51a521d97d4166d98a1f39e045b5dfa1508b155bce174161c4bc009b11
kubectl rollout status deployment/krabka-rebalancer-krabka-rebalancer --timeout=5m
KAFKA_TOOLS=docker.io/apache/kafka@sha256:01b9a4030e54c6068e66eb3ba4cb82c0d89238629ef1c30d79b86036bf89b1b7
kubectl run kafka-tools --image="$KAFKA_TOOLS" --restart=Never --rm -i --command -- \
/bin/bash -lc "printf 'milestone-20-qualified\n' | /opt/kafka/bin/kafka-console-producer.sh --bootstrap-server m20-quickstart-broker-headless.default.svc.cluster.local:9092 --topic quickstart && /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server m20-quickstart-broker-headless.default.svc.cluster.local:9092 --topic quickstart --from-beginning --max-messages 1"
kubectl delete kafkatopic/quickstart
kubectl delete kafka/m20-quickstart
kubectl delete kafkanodepool/brokers --ignore-not-found
helm uninstall krabka-rebalancer
helm uninstall krabka-operator -n krabka-system
kubectl delete -f https://krabka-io.github.io/quickstart/crds.yaml