Apache Kafka, büyük ölçekli ve gerçek zamanlı verileri işlemek için tasarlanmış yüksek performanslı, dağıtık veri akış platformudur.
Apache Kafka’ nın temel bileşenleri;
- Producer (Üretici) : Kafka’ nın toplayacağı verileri ve bilgileri üretip gönderen bileşendir, bir sonraki makalemizde Kafka Connect yapısından da bahsettiğimizde sistem daha da belirginleşecek, Kafka Connect’ de kullanılan diğer sistemleri (Mysql, Postgres, vb) kafka ile entegre eder.
- Kafka Cluster (Topic 1, Topic2, Topic3) -> Topicler içinde tutan yapı (Kafka Broker)
- Consumer (Alıcı) : Kafka üzerindeki Topic’lere bağlanıp, topic’leri okuyan sistemlerdir.
Consumer ve Producer’ lar bootstrap server üzerinden Kafka kümesine erişebilir.

Şimdi kuruluma geçebiliriz,
Tüm işlemleri kafka namespace’ i oluşturup orada yapalım;
kubectl create namespace kafka
Kafka için repo’ muzu ekleyip, helm chart’ ı pull edelim.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull bitnami/kafka –version 27.1.2
values.yaml dosyamızı açtığımızda aşağıdaki chart bloğunu göreceğiz, broker’ lara hangi yöntem ile bağlanılacağını gösteriyor, kullanıcı adı ve şifre must.
listeners:
## @param listeners.client.name Name for the Kafka client listener
## @param listeners.client.containerPort Port for the Kafka client listener
## @param listeners.client.protocol Security protocol for the Kafka client listener. Allowed values are ‘PLAINTEXT’, ‘SASL_>
## @param listeners.client.sslClientAuth Optional. If SASL_SSL is enabled, configure mTLS TLS authentication type. If SSL p>
client:
containerPort: 9092
protocol: SASL_PLAINTEXT
name: CLIENT
sslClientAuth: “”
Şimdi uygulamamızı çalıştıralım ve kafka kurulumu tamamlandıktan sonra, username ve password’ ü not alalım ayrıca kafka service ismini de not alalım, web ui ve diğer bağlantılar için ilgili service name i kullanacağız.
Kafka can be accessed by consumers via port 9092 on the following DNS name from within your cluster:
kafka.kafka.svc.cluster.local -> broker’lara bağlantı için kullanılacak
To connect a client to your Kafka, you need to create the ‘client.properties’ configuration files with the content below:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
username=”user1″ \
password=”$(kubectl get secret kafka-user-passwords –namespace kafka -o jsonpath='{.data.client-passwords}’ | base64 -d | cut -d , -f 1)”;
Username -> user1
Password -> zhW5ECwq5Z
Kafka pod’ larımız running state’ e geçmiş.
root@master-node:/home/mada/kafka-kafdrop/kafka# kubectl get pods -n kafka
NAME READY STATUS RESTARTS AGE
kafka-controller-0 1/1 Running 0 50m
kafka-controller-1 1/1 Running 0 50m
kafka-controller-2 1/1 Running 0 50m
Şimdi kafdrop kurulumuna geçelim;
helm repo add lsst-sqre https://lsst-sqre.github.io/charts/
helm pull lsst-sqre/kafdrop –version 0.1.3
kafdrop values dosyamızdaki aşağıdaki alana not almış olduğumuz kafka servisimizin adresini girelim;
kafka:
brokerConnect: kafka.kafka.svc.cluster.local:9092
propertiesFile: “kafka.properties”
truststoreFile: “kafka.truststore.jks”
keystoreFile: “kafka.keystore.jks”
Şimdi kafka kurulumu sırasında almış olduğumuz kullanıcı adı ve şifremizle kafka properties dosyamızı oluşturalım;
cat << EOF > kafka.properties sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username=”user1″ password=”zhW5ECwq5Z”; security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN EOF
Uygulamamızın kurulumunu tamamlayabiliriz.
helm install -f values.yaml kafkadrop . -n kafka –set kafka.properties=”$(cat kafka.properties | base64)”
Tüm podlarımız running state’ e geçmiş.

kafdrop servis tipi NodePort olarak ayarlanmıştı, şimdi webui’ a bağlanalım.

Kafdrop üzerinden de kafka cluster’ ımızı görüntüleyebiliyor, broker’larımızı izleyebiliyoruz.
WebUI üzerinden de topic oluşturup cluster’ ı test edebilirsiniz.
Faydalı Olması Dileklerimle,