Hands-on tutorials for Kannika Armory, a backup, restore, and disaster recovery solution for Apache Kafka. Maintained by Kannika.io.
This repository contains runnable, self-contained tutorial environments for Kannika Armory. Each tutorial spins up a full local Kafka stack using Docker and Kubernetes (kind), so you can explore real Kafka operations (cluster migrations, consumer group management, schema handling, and more) without touching production.
Kannika Armory provides business continuity, compliance, and data resilience for organisations running Apache Kafka, without writing a single line of custom code. It delivers automated backups, point-in-time recovery, environment cloning, and seamless migration, all managed through a web console, REST API, or Kubernetes configurations.
- Console:
http://localhost:8080 - API:
http://localhost:8081 - Docs: docs.kannika.io
- Free trial: available at kannika.io
Run a tutorial without cloning:
curl -fsSL https://raw.githubusercontent.com/kannika-io/armory-examples/refs/heads/main/install.sh \
| bash -s -- migrate-consumer-groupsOr clone and run locally:
./setup migrate-consumer-groupsList available tutorials:
./setup list./setup <tutorial> # Run a tutorial (sets up everything)
./setup armory # Set up Kannika Armory only
./setup kafka # Set up Kafka clusters only
./setup network # Connect Kind cluster to Kafka network
./setup tools # Install kind, kubectl, helm to .bin
./setup list # List available tutorials
./teardown # Delete Kind cluster and stop KafkaAfter setup, services are available at:
| Component | Service | URL |
|---|---|---|
| Kannika Armory | Console | http://localhost:8080 |
| Kannika Armory | API | http://localhost:8081 |
| Kafka Source | Broker | localhost:9092 |
| Kafka Source | Console | http://localhost:8180 |
| Kafka Target | Broker | localhost:9093 |
| Kafka Target | Console | http://localhost:8181 |
- Docker
- kind, kubectl, helm (or use
./setup tools)
Create a new directory under tutorials/. The directory name is the tutorial name:
tutorials/my-tutorial/ # Run with: ./setup my-tutorial
├── README.md # First line used as description in ./setup list
├── help.txt # Printed after setup completes
├── values.yaml # Helm values merged into Armory install
├── k8s/ # Kubernetes resources applied automatically
├── pre-setup.sh # Hook: before anything starts
├── pre-cluster.sh # Hook: before Kind cluster creation
├── post-cluster.sh # Hook: after Kind cluster creation
├── pre-install.sh # Hook: before Armory Helm install
├── post-install.sh # Hook: after Armory install and k8s/ resources applied
├── post-setup.sh # Hook: after everything completes
└── teardown.sh # Hook: run by ./teardown <tutorial>
All files are optional. Hook scripts must be executable.
Questions or feedback? Join us on Slack or get in touch at hello@kannika.io.