Helm ile Kafka ve Kafdrop UI Kurulumu

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.

Image 22 1024x392

Ş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ş.

Image 20

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

Image 21 1024x653

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,

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir