📖 7 dakika okuma süresi
📋 İçindekiler
Giriş
Mikroservis mimarileri ve bulut tabanlı uygulamaların yaygınlaşmasıyla birlikte, uygulama ölçeklendirme ihtiyacı da giderek artmaktadır. Özellikle olay tabanlı uygulamalarda, iş yükündeki ani değişikliklere hızlı ve verimli bir şekilde yanıt verebilmek kritik öneme sahiptir. Kubernetes, container orkestrasyonu için endüstri standardı haline gelmiş olsa da, yerleşik otomatik ölçeklendirme mekanizmaları (Horizontal Pod Autoscaler – HPA) her zaman yeterli olmayabilir. İşte bu noktada, KEDA (Kubernetes Event-driven Autoscaling) devreye girerek olay tabanlı uygulama ölçeklendirme konusunda gelişmiş çözümler sunar.
Bu yazıda, KEDA’nın ne olduğunu, avantajlarını, kullanım senaryolarını ve Kubernetes ortamında nasıl kurulup yapılandırılacağını detaylı bir şekilde ele alacağız. Ayrıca, KEDA’nın BirCloud perspektifinden nasıl değerlendirildiğini ve sunduğumuz çözümlerle nasıl entegre edilebileceğini de inceleyeceğiz.
KEDA Nedir?
KEDA, Kubernetes üzerinde çalışan olay güdümlü uygulamaların otomatik ölçeklendirilmesini sağlayan açık kaynaklı bir projedir. HPA’nın yeteneklerini genişleterek, farklı olay kaynaklarına (event sources) dayalı ölçeklendirme yapabilme imkanı sunar. KEDA, belirli bir olay kaynağındaki metrikleri (örneğin, bir mesaj kuyruğundaki mesaj sayısı) izler ve bu metriklere göre uygulama podlarının sayısını otomatik olarak ayarlar. Bu sayede, uygulamalar sadece ihtiyaç duydukları kadar kaynak tüketir ve maliyetler optimize edilir.
KEDA, Kubernetes’in kontrol düzlemini genişleten bir Kubernetes Operator olarak çalışır. KEDA Operator, Custom Resource Definitions (CRDs) aracılığıyla tanımlanan ölçeklendirme kurallarını (ScaledObjects) izler ve bu kurallara göre HPA’ları yönetir. KEDA’nın temel amacı, uygulama geliştiricilerin ve operatörlerin, altyapı detaylarıyla uğraşmak yerine, iş mantığına odaklanmasını sağlamaktır.
KEDA’nın Avantajları
- Olay Tabanlı Ölçeklendirme: KEDA, HTTP istekleri gibi geleneksel metriklerin yanı sıra, mesaj kuyrukları, veritabanları, bulut hizmetleri ve özel olay kaynakları gibi çeşitli olay kaynaklarına dayalı ölçeklendirme yapabilir. Bu sayede, uygulamalar olay akışına gerçek zamanlı olarak yanıt verebilir.
- Otomatik Ölçeklendirme: KEDA, uygulama podlarının sayısını otomatik olarak artırıp azaltarak, iş yükündeki değişikliklere dinamik olarak uyum sağlar. Bu sayede, uygulamaların performansı optimize edilir ve kaynaklar verimli kullanılır.
- Sıfıra Ölçeklendirme (Scale-to-Zero): KEDA, iş yükü olmadığında uygulama podlarını sıfıra kadar ölçeklendirebilir. Bu özellik, kaynak tüketimini önemli ölçüde azaltır ve maliyetleri düşürür.
- Kolay Entegrasyon: KEDA, Kubernetes ortamına kolayca entegre edilebilir ve mevcut uygulamalarla uyumlu bir şekilde çalışır.
- Açık Kaynak: KEDA, açık kaynaklı bir projedir ve geniş bir topluluk tarafından desteklenmektedir. Bu sayede, sürekli olarak geliştirilmekte ve yeni özellikler eklenmektedir.
Kullanım Senaryoları
KEDA, çeşitli kullanım senaryolarında uygulama ölçeklendirme konusunda önemli avantajlar sunar. İşte bazı örnekler:
- Mesaj Kuyruğu İşleme: Bir mesaj kuyruğunda (örneğin, Apache Kafka, RabbitMQ, Azure Service Bus) bekleyen mesaj sayısına göre, mesaj işleme uygulamalarının pod sayısını otomatik olarak ölçeklendirebilirsiniz. Apache Kafka Streams ile Gerçek Zamanlı Veri İşleme ve Analizi yazımızda bu konuya değinmiştik.
- Veritabanı İşleme: Bir veritabanında (örneğin, MySQL, PostgreSQL, MongoDB) bekleyen sorgu sayısına veya veritabanı yüküne göre, veritabanı işleme uygulamalarının pod sayısını otomatik olarak ölçeklendirebilirsiniz.
- Bulut Hizmeti İşleme: Bir bulut hizmetinde (örneğin, Azure Blob Storage, AWS S3) bekleyen işleme taleplerine göre, bulut hizmeti işleme uygulamalarının pod sayısını otomatik olarak ölçeklendirebilirsiniz.
- Zamanlanmış Görevler: Belirli zamanlarda çalıştırılması gereken görevler için, görevlerin yoğunluğuna göre uygulama podlarının sayısını otomatik olarak ölçeklendirebilirsiniz.
Kurulum ve Başlangıç Rehberi
KEDA’nın Kubernetes ortamına kurulumu oldukça basittir. Aşağıdaki adımları izleyerek KEDA’yı kolayca kurabilirsiniz:
Adım 1: KEDA Operator’un Kurulumu
KEDA Operator’u kurmak için aşağıdaki komutları kullanabilirsiniz:
kubectl create namespace keda
kubectl apply -f https://github.com/kedacore/keda/releases/latest/download/keda-operator.yaml
Adım 2: ScaledObject Tanımlama
KEDA’nın ölçeklendirme yapabilmesi için bir ScaledObject tanımlamanız gerekir. ScaledObject, hangi olay kaynağının izleneceğini ve ölçeklendirme kurallarının nasıl uygulanacağını belirtir. Aşağıda, bir RabbitMQ kuyruğundaki mesaj sayısına göre ölçeklendirme yapan bir ScaledObject örneği verilmiştir:
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: rabbitmq-scaledobject
namespace: default
spec:
scaleTargetRef:
name: rabbitmq-consumer
triggers:
- type: rabbitmq
metadata:
queueName: my-queue
queueLength: '5' # Her 5 mesajda bir pod ölçeklendir
host: amqp://user:password@rabbitmq-service:5672
Bu ScaledObject, `rabbitmq-consumer` adlı Deployment’ı ölçeklendirecektir. `triggers` bölümünde, RabbitMQ kuyruğundaki mesaj sayısını izleyeceği ve her 5 mesajda bir pod ölçeklendireceği belirtilmiştir. `host` alanında, RabbitMQ sunucusunun adresi ve kimlik bilgileri yer almaktadır.
Adım 3: Deployment Tanımlama
ScaledObject’in ölçeklendireceği Deployment’ı tanımlamanız gerekir. Deployment, uygulama podlarının nasıl çalışacağını ve hangi container imajının kullanılacağını belirtir. Aşağıda, basit bir RabbitMQ tüketici uygulaması için bir Deployment örneği verilmiştir:
apiVersion: apps/v1
kind: Deployment
metadata:
name: rabbitmq-consumer
namespace: default
spec:
selector:
matchLabels:
app: rabbitmq-consumer
replicas: 1
template:
metadata:
labels:
app: rabbitmq-consumer
spec:
containers:
- name: rabbitmq-consumer
image: your-rabbitmq-consumer-image:latest
env:
- name: RABBITMQ_HOST
value: rabbitmq-service
- name: RABBITMQ_QUEUE
value: my-queue
Bu Deployment, `your-rabbitmq-consumer-image:latest` adlı container imajını kullanarak `rabbitmq-consumer` adlı bir uygulama podu çalıştıracaktır. `env` bölümünde, RabbitMQ sunucusunun adresi ve kuyruk adı gibi ortam değişkenleri yer almaktadır.
BirCloud Perspektifi
BirCloud olarak, müşterilerimize bulut tabanlı uygulamaların geliştirilmesi, dağıtımı ve yönetimi konusunda kapsamlı çözümler sunmaktayız. KEDA, olay tabanlı uygulama ölçeklendirme konusunda sunduğumuz çözümlerin önemli bir parçasıdır. KEDA’nın esnekliği ve kolay entegrasyonu sayesinde, müşterilerimizin uygulamalarını daha verimli ve maliyet etkin bir şekilde çalıştırmalarına yardımcı oluyoruz.
BirCloud olarak, KEDA’nın aşağıdaki avantajlarını özellikle vurgulamaktayız:
- Optimum Kaynak Kullanımı: KEDA, uygulamaların sadece ihtiyaç duydukları kadar kaynak tüketmesini sağlayarak, bulut ortamındaki kaynak kullanımını optimize eder.
- Maliyet Tasarrufu: KEDA, sıfıra ölçeklendirme özelliği sayesinde, iş yükü olmadığında uygulama podlarını kapatarak, bulut maliyetlerini önemli ölçüde azaltır.
- Gelişmiş Performans: KEDA, olay akışına gerçek zamanlı olarak yanıt vererek, uygulamaların performansını artırır ve kullanıcı deneyimini iyileştirir.
Ayrıca, BirCloud’un SIEM (Security Information and Event Management) çözümleri ile KEDA entegrasyonu sayesinde, güvenlik olaylarına hızlı ve otomatik yanıtlar verilebilir. Bu sayede, bulut ortamının güvenliği ve uyumluluğu sağlanır.
Sonuç
KEDA, Kubernetes üzerinde çalışan olay tabanlı uygulamaların otomatik ölçeklendirilmesi için güçlü ve esnek bir çözümdür. KEDA’nın sunduğu avantajlar sayesinde, uygulamaların performansı optimize edilebilir, kaynaklar verimli kullanılabilir ve maliyetler azaltılabilir. BirCloud olarak, KEDA’nın potansiyelini görüyor ve müşterilerimize bu teknolojiyi kullanarak daha iyi bulut çözümleri sunmaya odaklanıyoruz. Kubernetes Operatörleri ile Durumsal Uygulama Yönetimi: BirCloud Uzmanlığı başlıklı yazımızda da belirttiğimiz gibi, Kubernetes ekosistemindeki gelişmeleri yakından takip ediyor ve müşterilerimizin ihtiyaçlarına en uygun çözümleri sunmak için çalışıyoruz.
KEDA ve diğer bulut teknolojileri hakkında daha fazla bilgi edinmek için bizimle iletişime geçebilirsiniz. BirCloud olarak, bulut dönüşüm yolculuğunuzda size destek olmaktan memnuniyet duyarız.
❓ Sık Sorulan Sorular
KEDA nedir ve ne işe yarar?
KEDA (Kubernetes Event-driven Autoscaling), Kubernetes üzerinde çalışan olay güdümlü uygulamaların otomatik ölçeklendirilmesini sağlayan açık kaynaklı bir projedir. Farklı olay kaynaklarına dayalı ölçeklendirme yaparak, uygulamaların performansı optimize eder ve kaynakları verimli kullanır.
KEDA'nın avantajları nelerdir?
KEDA'nın avantajları arasında olay tabanlı ölçeklendirme, otomatik ölçeklendirme, sıfıra ölçeklendirme (scale-to-zero), kolay entegrasyon ve açık kaynak olması sayılabilir.
KEDA hangi olay kaynaklarını destekler?
KEDA, mesaj kuyrukları (Apache Kafka, RabbitMQ), veritabanları (MySQL, PostgreSQL), bulut hizmetleri (Azure Blob Storage, AWS S3) ve özel olay kaynakları gibi çeşitli olay kaynaklarını destekler.
KEDA nasıl kurulur?
KEDA, Kubernetes ortamına kolayca kurulabilir. KEDA Operator'u kurarak ve ScaledObject tanımlayarak KEDA'yı kullanmaya başlayabilirsiniz. Kurulum adımları için blog yazımızdaki rehberi inceleyebilirsiniz.
BirCloud KEDA konusunda nasıl destek sağlar?
BirCloud, müşterilerine bulut tabanlı uygulamaların geliştirilmesi, dağıtımı ve yönetimi konusunda kapsamlı çözümler sunmaktadır. KEDA entegrasyonu ile müşterilerimizin uygulamalarını daha verimli ve maliyet etkin bir şekilde çalıştırmalarına yardımcı oluyoruz.



