Apache Kafka cluster with testing topics

Apache Kafka has proven to be an extremely popular event streaming platform, as its scalable distributed architecture, high performance, and use cases, some key terms and concepts as below:

  • Kafka clusters and Kafka brokers
  • Kafka clients and servers
  • Producers, and Consumers, and Consumer groups
  • Kafka topics & Kafka partitions, offsets
  • Kafka topic replication, leaders, and followers
  • ZooKeeper or not

Typical Kafka Topology:

    image tooltip here

  • Helm install bitnami/kafka

Here we use helm to install Kafka, then validate statefulset storage and cluster availability by creating a topic, producer, and consumer.

helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull bitnami/kafka
kubectl create ns kafka
helm install zz-kafka . -n kafka
  • Kafka-cluster status
kubectl get all | grep zz-kaf
pod/zz-kafka-client                                          1/1     Running   0               6m27s
pod/zz-kafka-controller-0                                    1/1     Running   0               8m52s
pod/zz-kafka-controller-1                                    1/1     Running   0               8m52s
pod/zz-kafka-controller-2                                    1/1     Running   0               8m52s
service/zz-kafka                                  ClusterIP   10.96.58.62             9092/TCP                        8m52s
service/zz-kafka-controller-headless              ClusterIP   None                    9094/TCP,9092/TCP,9093/TCP      8m52s
statefulset.apps/zz-kafka-controller                                    3/3     8m52s

kubectl get pvc
NAME                         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
data-zz-kafka-controller-0   Bound    pvc-f3831a5c-c9cf-46bb-a47d-58ea80f82e28   8Gi        RWO            rook-ceph-block   9m19s
data-zz-kafka-controller-1   Bound    pvc-a45fd063-7979-4c0d-8ae4-93b4b4b0bf7f   8Gi        RWO            rook-ceph-block   9m19s
data-zz-kafka-controller-2   Bound    pvc-ed48b71d-81be-4067-b05f-9e8dc64fab04   8Gi        RWO            rook-ceph-block   9m19s
  • Validate cluster by setting key

Create client.properties with SASL authentication details and copy to client.

kubectl run zz-kafka-client --restart='Never' --image docker.io/bitnami/kafka:3.6.1-debian-11-r0 --namespace default --command -- sleep infinity
kubectl cp --namespace default client.properties zz-kafka-client:/tmp/client.properties

Open two bash windows to access the Kafka client.

kubectl exec --tty -i zz-kafka-client --namespace default -- bash

Window 1 (Producer):

kafka-console-producer.sh \
    --producer.config /tmp/client.properties \
    --broker-list zz-kafka-controller-0.zz-kafka-controller-headless.default.svc.cluster.local:9092,zz-kafka-controller-1.zz-kafka-controller-headless.default.svc.cluster.local:9092,zz-kafka-controller-2.zz-kafka-controller-headless.default.svc.cluster.local:9092 \
    --topic test

Window 2 (Consumer):

kafka-console-consumer.sh \
    --consumer.config /tmp/client.properties \
    --bootstrap-server zz-kafka.default.svc.cluster.local:9092 \
    --topic test \
    --from-beginning

Test topic and PRODUCER with CONSUMER.

    image tooltip here

Welcome to Zack's Blog

Join me for fun journey about ##AWS ##DevOps ##Kubenetes ##MLOps

  • Latest Posts