Kaskade is a text user interface (TUI) for Apache Kafka, built with Textual by Textualize. It includes features like:
- Admin:
- List topics, partitions, groups and group members.
- Topic information like lag, replicas and records count.
- Create, edit and delete topics.
- Filter topics by name.
- Consumer:
- Json, string, integer, long, float, boolean and double deserialization.
- Filter by key, value, header and/or partition.
- Schema Registry support with avro.
- Protobuf deserialization support.
brew install kaskade
pipx install kaskade
kaskade admin -b my-kafka:9092
kaskade consumer -b my-kafka:9092 -t my-topic
kaskade admin -b my-kafka:9092,my-kafka:9093
kaskade consumer -b my-kafka:9092 -t my-topic -k json -v json
kaskade consumer -b my-kafka:9092 -t my-topic --from-beginning
kaskade consumer -b my-kafka:9092 \
-s url=http://my-schema-registry:8081 \
-t my-topic -k avro -v avro
For more information about Schema Registry configurations go to: Confluent Schema Registry client.
kaskade admin -b my-kafka:9092 -x security.protocol=SSL
For more information about SSL encryption and SSL authentication go to: SSL support in librdkafka.
kaskade admin -b ${BOOTSTRAP_SERVERS} \
-x security.protocol=SASL_SSL \
-x sasl.mechanism=PLAIN \
-x sasl.username=${CLUSTER_API_KEY} \
-x sasl.password=${CLUSTER_API_SECRET}
kaskade consumer -b ${BOOTSTRAP_SERVERS} \
-x security.protocol=SASL_SSL \
-x sasl.mechanism=PLAIN \
-x sasl.username=${CLUSTER_API_KEY} \
-x sasl.password=${CLUSTER_API_SECRET} \
-s url=${SCHEMA_REGISTRY_URL} \
-s basic.auth.user.info=${SR_API_KEY}:${SR_API_SECRET} \
-t my-topic \
-k string \
-v avro
More about confluent cloud configuration at: Kafka Client Quick Start for Confluent Cloud.
docker run --rm -it --network my-networtk sauljabin/kaskade:latest \
admin -b my-kafka:9092
docker run --rm -it --network my-networtk sauljabin/kaskade:latest \
consumer -b my-kafka:9092 -t my-topic
Install protoc
command:
brew install protobuf
Generate a Descriptor Set file from your .proto
file:
protoc --include_imports \
--descriptor_set_out=my-descriptor.desc \
--proto_path=${PROTO_PATH} \
${PROTO_PATH}/my-proto.proto
Consume using my-descriptor.desc
file:
kaskade consumer -b my-kafka:9092 --from-beginning \
-k string -v protobuf \
-t my-protobuf-topic \
-p descriptor=my-descriptor.desc -p value=mypackage.MyMessage
More about protobuf and
FileDescriptorSet
at: Protocol Buffers Documentation.
For development instructions see DEVELOPMENT.md.