İngilizce dokümantasyon için: README.md
Bu modül, FastAPI ile geliştirilmiş bir Kafka yönetim ve mesajlaşma REST API servisidir. Kafka broker, topic, producer, consumer, consumer group işlemleri ve kimlik doğrulama (JWT) sunar. Tüm işlemler JWT ile korunur. Uygulama, Docker ile kolayca dağıtılabilir ve GitHub Actions ile otomatik olarak kurulabilir.
- FastAPI tabanlı REST API: Kafka broker, topic, producer, consumer, consumer group yönetimi
- JWT ile Kimlik Doğrulama: /token endpointi ile erişim token'ı alınır, tüm API'ler korumalıdır
- Kullanıcı Arayüzü: Bootstrap tabanlı web arayüzü (index.html)
- Kafka ile Tam Entegrasyon: Topic oluşturma, mesaj gönderme/alma, grup yönetimi
- Dinamik Broker Tanımı: Kafka broker adresleri ortam değişkeninden veya Terraform state/S3 üzerinden otomatik alınabilir
- Uzun Süreli Token: Kafka Connect gibi sistemler için 10 yıl geçerli token üretme scripti
- Prometheus için Healthcheck: /health endpointi
- Kolay Dağıtım: Dockerfile ve docker-compose ile hızlı kurulum
- CI/CD: GitHub Actions ile otomatik kurulum ve test
- main.py: FastAPI ana uygulama dosyası
- auth.py: JWT tabanlı kimlik doğrulama ve token üretimi
- config.py: Konfigürasyon ve ortam değişkenleri yönetimi
- models.py: API veri modelleri
- routers/:
- brokers.py: Broker yönetimi
- topics.py: Topic yönetimi
- producer.py: Mesaj gönderme
- consumer.py: Mesaj okuma
- consumer_groups.py: Consumer group işlemleri
- services/: Kafka ile ilgili yardımcı servisler
- templates/index.html: Web arayüzü
- static/app.js: Arayüz scriptleri
- generate_permanent_token.py: 10 yıl geçerli JWT üretici script
- requirements.txt: Python bağımlılıkları
- Dockerfile: Docker imajı
- docker-compose.yml: Servis tanımı
- Tüm API endpointleri JWT ile korunur.
- /token endpointine kullanıcı adı ve şifre ile POST isteği atılır, access_token alınır.
- API isteklerinde Authorization: Bearer header'ı zorunludur.
- Uzun ömürlü token için:
python generate_permanent_token.pykomutu kullanılabilir.
- POST /topics: Yeni topic oluştur
- GET /topics: Tüm topic'leri listele
- GET /topics/{topic}: Topic detayını al
- PUT /topics/{topic}/config: Topic konfigürasyonunu güncelle
- DELETE /topics/{topic}: Topic sil

- GET /consumer-groups: Tüm consumer group'ları listele
- GET /consumer-groups/{group_id}: Consumer group detayını al

docker-compose up -dcurl -X POST -d 'username=admin&password=admin123' http://localhost:2020/tokencurl -H "Authorization: Bearer <TOKEN>" http://localhost:2020/brokerscurl -X POST -H "Authorization: Bearer <TOKEN>" -H "Content-Type: application/json" \
-d '{"name": "topic-1", "num_partitions": 3, "replication_factor": 2}' \
http://localhost:2020/topicscurl -X POST -H "Authorization: Bearer <TOKEN>" -H "Content-Type: application/json" \
-d '{"topic": "topic-1", "value": "Merhaba Kafka!"}' \
http://localhost:2020/producecurl -X POST -H "Authorization: Bearer <TOKEN>" -H "Content-Type: application/json" \
-d '{"topic": "topic-1", "group_id": "rest-api-consumer", "max_messages": 5}' \
http://localhost:2020/consume- KAFKA_BOOTSTRAP_SERVERS: Kafka broker adresleri (virgül ile ayrılmış)
- FETCH_BROKERS_FROM_TERRAFORM: true/false (Terraform state'ten broker çek)
- AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY: S3 erişimi için
- KAFKA_SECURITY_PROTOCOL, KAFKA_SASL_MECHANISM, KAFKA_SASL_USERNAME, KAFKA_SASL_PASSWORD: Güvenlik ayarları
- API_USERNAME, API_PASSWORD, SECRET_KEY: API kimlik doğrulama ve JWT için
- Ansible playbook'ları, S3'teki Terraform state dosyasından Kafka Connect ve broker bilgilerini otomatik olarak çeker.
- Envanter ve ortam dosyaları dinamik olarak oluşturulur.
- Docker ve FastAPI uygulaması, bu bilgilerle otomatik olarak deploy edilir.
- Tüm süreç GitHub Actions ile tam otomatikleştirilmiştir.
- .github/workflows/ansible_kafka_api.yaml ile otomatik kurulum ve test
- Her push'ta Docker içinde Ansible ile kurulum, envanter üretimi, S3'ten connect/broker bilgisi çekme, healthcheck ve playbook çalıştırma
- http://localhost:2020 adresinden erişilebilir
- Tüm işlemler arayüzden JWT ile güvenli şekilde yapılabilir
- Varsayılan şifreleri değiştirin ve SECRET_KEY'i güçlü seçin
- Token'ları kimseyle paylaşmayın, uzun ömürlü token'ları güvenli saklayın
- Tüm trafik SSL ile korunmalıdır (prod ortamında reverse proxy önerilir)
- Docker ve ortam değişkenlerini versiyon kontrolünde gizli tutun
Bu servis, Kafka kümesi yönetimi için AdminClient tabanlı bir REST API sunar. Tüm işlemler, Section 2'de kurulan Kafka kümesine (bootstrap servers, security config) yapılır ve aynı bağlantı detayları kullanılır.
- REST API servisi Docker container olarak paketlenmiştir.
- Container, Section 2'deki Kafka kümesine bağlanacak şekilde konfigüre edilir (bootstrap servers, security).
- API portu 2020 olarak dışa açılır ve erişilebilir olmalıdır.
- Docker imajı oluşturma ve dağıtım adımları dokümantasyonda yer almaktadır.







