KEDA ile Kubernetes'te Olay Güdümlü (Event-Driven) Uygulama Ölçeklendirme - BirCloud Blog
Bulut Bilişim

KEDA ile Kubernetes’te Olay Güdümlü (Event-Driven) Uygulama Ölçeklendirme

📖 7 dakika okuma süresi

Giriş

Günümüzün dinamik ve hızlı tempolu iş dünyasında, uygulamaların değişen taleplere anında yanıt verebilmesi kritik öneme sahiptir. Olay güdümlü (event-driven) mimariler, bu ihtiyacı karşılamak için ideal bir çözüm sunar. Kubernetes Event-driven Autoscaling (KEDA), Kubernetes üzerindeki uygulamaların olaylara tepki vererek otomatik olarak ölçeklenmesini sağlayan açık kaynaklı bir projedir. Bu blog yazısında, KEDA’nın ne olduğunu, avantajlarını, kullanım senaryolarını ve nasıl kurulacağını detaylı bir şekilde inceleyeceğiz. Ayrıca, BirCloud olarak KEDA’yı nasıl kullandığımızı ve müşterilerimize nasıl fayda sağladığımızı da ele alacağız.

KEDA Nedir?

KEDA, Kubernetes ortamında çalışan uygulamaların ölçeklendirilmesini olay kaynaklarına (event sources) göre otomatik hale getiren bir Kubernetes Operator’üdür. Geleneksel Kubernetes Horizontal Pod Autoscaler (HPA) yalnızca CPU ve bellek kullanımına göre ölçeklendirme yaparken, KEDA daha geniş bir yelpazede olay kaynaklarını destekler. Bu olay kaynakları arasında mesaj kuyrukları (Kafka, RabbitMQ, Azure Service Bus), veritabanları (PostgreSQL, MySQL), bulut servisleri (AWS SQS, Azure Event Hubs) ve daha birçok farklı sistem yer alabilir.

KEDA, Kubernetes kümenize kurulan bir kontrol düzlemi ve bir dizi özel kaynak tanımından (Custom Resource Definitions – CRDs) oluşur. Bu CRD’ler aracılığıyla, hangi olay kaynağına göre hangi uygulamanın nasıl ölçekleneceğini tanımlayabilirsiniz. KEDA, olay kaynağındaki metrikleri sürekli olarak izler ve uygulamanın pod sayısını buna göre ayarlar. Uygulama trafiği azaldığında, KEDA pod sayısını sıfıra kadar indirebilir, böylece kaynak tüketimini optimize eder.

KEDA’nın Avantajları

KEDA kullanmanın birçok avantajı vardır:

  • Olay Güdümlü Ölçeklendirme: Uygulamalarınızı yalnızca CPU ve bellek kullanımına değil, gerçek iş yükünü yansıtan olaylara göre ölçeklendirin.
  • Otomatik Ölçeklendirme: KEDA, ölçeklendirme işlemlerini otomatik olarak gerçekleştirir, böylece manuel müdahaleye gerek kalmaz.
  • Sıfıra Ölçeklendirme: Uygulama trafiği olmadığında, KEDA pod sayısını sıfıra kadar indirebilir, bu da kaynak maliyetlerini önemli ölçüde azaltır.
  • Geniş Olay Kaynağı Desteği: KEDA, birçok farklı olay kaynağını destekler, böylece farklı uygulamalarınız için tek bir ölçeklendirme çözümü kullanabilirsiniz.
  • Kolay Entegrasyon: KEDA, Kubernetes ile kolayca entegre olur ve mevcut altyapınıza minimal değişikliklerle adapte edilebilir.

Kullanım Senaryoları

KEDA, çeşitli kullanım senaryolarında etkin bir şekilde kullanılabilir:

  • Mesaj Kuyruğu İşleme: Bir mesaj kuyruğuna (örneğin, Kafka) yeni mesajlar geldiğinde, KEDA bu mesajları işlemek için otomatik olarak daha fazla pod oluşturabilir.
  • Veritabanı İşleme: Bir veritabanında yeni veriler oluştuğunda, KEDA bu verileri işlemek için otomatik olarak daha fazla pod oluşturabilir. TiDB: Dağıtık ve Ölçeklenebilir HTAP Veritabanı ile Veri Yönetiminde Yeni Bir Çağ yazımızda da bahsedildiği gibi, veritabanı performansı kritik öneme sahip uygulamalarda KEDA kullanımı büyük avantaj sağlar.
  • Arka Plan Görevleri: Arka planda çalışan ve belirli bir zaman aralığında tetiklenen görevler için KEDA, görevlerin yoğunluğuna göre otomatik olarak pod sayısını ayarlayabilir.
  • Web Uygulamaları: Web uygulamalarının trafiği arttığında, KEDA otomatik olarak daha fazla pod oluşturarak uygulamanın performansını koruyabilir. Istio ile Gelişmiş Trafik Yönetimi ve Güvenlik Politikaları: BirCloud ile Bulutta Mükemmelliğe Ulaşın başlıklı yazımızda, web uygulamalarının ölçeklendirilmesinde Istio’nun rolüne değinmiştik. KEDA ile Istio’yu birlikte kullanarak daha da gelişmiş bir ölçeklendirme stratejisi oluşturulabilir.

Kurulum ve Başlangıç Rehberi

KEDA’yı Kubernetes kümenize kurmak oldukça basittir. Aşağıdaki adımları takip ederek KEDA’yı kolayca kurabilirsiniz:

1. Helm ile Kurulum

KEDA’yı kurmanın en kolay yolu Helm kullanmaktır. Helm, Kubernetes için bir paket yöneticisidir ve uygulamaların kurulumunu ve yönetimini kolaylaştırır.


helm repo add kedacore https://kedacore.github.io/charts
helm repo update
helm install keda kedacore/keda --namespace keda --create-namespace

Bu komutlar, KEDA’yı `keda` namespace’ine kurar. Kurulum tamamlandıktan sonra, KEDA’nın çalıştığını doğrulamak için aşağıdaki komutu kullanabilirsiniz:


kubectl get pods -n keda

Bu komut, `keda` namespace’indeki pod’ları listeler. KEDA pod’larının çalıştığını görmelisiniz.

2. Bir Uygulama Ölçeklendirme

KEDA’yı kurduktan sonra, bir uygulamayı ölçeklendirmek için bir `ScaledObject` veya `ScaledJob` kaynağı oluşturmanız gerekir. `ScaledObject`, sürekli çalışan uygulamalar için kullanılırken, `ScaledJob` ise tamamlanması gereken görevler için kullanılır.

Aşağıda, bir RabbitMQ kuyruğundaki mesaj sayısına göre bir uygulamayı ölçeklendiren bir `ScaledObject` örneği verilmiştir:


apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: rabbitmq-scaledobject
  namespace: default
spec:
  scaleTargetRef:
    name: my-app
  minReplicaCount: 0
  maxReplicaCount: 10
  triggers:
  - type: rabbitmq
    metadata:
      host: amqp://user:password@rabbitmq-service:5672
      queueName: my-queue
      queueLength: '5'

Bu `ScaledObject`, `my-app` adlı Deployment’ı ölçeklendirir. `minReplicaCount` 0 olarak ayarlandığı için, kuyrukta mesaj olmadığında uygulama sıfıra kadar ölçeklenebilir. `maxReplicaCount` 10 olarak ayarlandığı için, uygulama en fazla 10 pod’a kadar ölçeklenebilir. `triggers` bölümünde, RabbitMQ kuyruğundaki mesaj sayısına göre ölçeklendirme yapılacağı belirtilir. `queueLength` 5 olarak ayarlandığı için, her 5 mesaj için bir pod oluşturulur.

3. Uygulamayı Dağıtma

Son olarak, ölçeklenecek uygulamayı Kubernetes’e dağıtmanız gerekir. Aşağıda, basit bir Nginx Deployment örneği verilmiştir:


apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: default
spec:
  selector:
    matchLabels:
      app: my-app
  replicas: 1
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Bu Deployment, tek bir Nginx pod’u oluşturur. KEDA, bu Deployment’ı yukarıdaki `ScaledObject`’e göre otomatik olarak ölçeklendirecektir.

BirCloud Perspektifi

BirCloud olarak, müşterilerimize en iyi bulut çözümlerini sunmayı hedefliyoruz. KEDA, Kubernetes ortamında çalışan uygulamaların ölçeklendirilmesini optimize etmek için harika bir araçtır. Müşterilerimizin kaynak maliyetlerini azaltmalarına ve uygulamalarının performansını artırmalarına yardımcı oluyoruz. Kubernetes Küme Performansını İzleme: Prometheus ve Grafana ile Derinlemesine Analiz yazımızda bahsettiğimiz gibi, performans izleme araçlarıyla KEDA’yı entegre ederek daha da kapsamlı bir çözüm sunuyoruz. Ayrıca, GitOps ile Altyapı Yönetimi: Flux ve ArgoCD Derinlemesine Karşılaştırması yazımızda değindiğimiz GitOps prensiplerini kullanarak KEDA konfigürasyonlarını yönetiyor ve altyapı yönetimini kolaylaştırıyoruz.

KEDA’yı kullanarak, müşterilerimizin aşağıdaki konularda fayda sağlamasına yardımcı oluyoruz:

  • Maliyet Optimizasyonu: Uygulama trafiği olmadığında pod sayısını sıfıra kadar indirerek kaynak maliyetlerini azaltıyoruz.
  • Performans Artışı: Uygulama trafiği arttığında otomatik olarak daha fazla pod oluşturarak uygulamanın performansını koruyoruz.
  • Operasyonel Kolaylık: Ölçeklendirme işlemlerini otomatik hale getirerek manuel müdahale ihtiyacını ortadan kaldırıyoruz.

Sonuç

KEDA, Kubernetes ortamında çalışan uygulamaların olay güdümlü bir şekilde ölçeklendirilmesini sağlayan güçlü bir araçtır. Geniş olay kaynağı desteği, otomatik ölçeklendirme yetenekleri ve sıfıra ölçeklendirme özelliği sayesinde, KEDA uygulamalarınızın performansını artırmanıza ve kaynak maliyetlerinizi azaltmanıza yardımcı olabilir. BirCloud olarak, KEDA’yı kullanarak müşterilerimize en iyi bulut çözümlerini sunmaktan gurur duyuyoruz. Eğer siz de KEDA’yı kullanmaya başlamak veya daha fazla bilgi edinmek isterseniz, bizimle iletişime geçebilirsiniz.

❓ Sık Sorulan Sorular

KEDA nedir?

KEDA, Kubernetes ortamında çalışan uygulamaların olay kaynaklarına göre otomatik olarak ölçeklenmesini sağlayan bir Kubernetes Operator'üdür.

KEDA'nın avantajları nelerdir?

KEDA'nın avantajları arasında olay güdümlü ölçeklendirme, otomatik ölçeklendirme, sıfıra ölçeklendirme, geniş olay kaynağı desteği ve kolay entegrasyon bulunur.

KEDA hangi olay kaynaklarını destekler?

KEDA, mesaj kuyrukları (Kafka, RabbitMQ), veritabanları (PostgreSQL, MySQL), bulut servisleri (AWS SQS, Azure Event Hubs) gibi birçok farklı olay kaynağını destekler.

KEDA nasıl kurulur?

KEDA, Helm kullanılarak kolayca kurulabilir. Helm repo'sunu ekleyip KEDA chart'ını kurarak KEDA'yı Kubernetes kümenize kurabilirsiniz.

BirCloud KEDA konusunda nasıl yardımcı olabilir?

BirCloud, KEDA'yı kullanarak müşterilerinin uygulamalarını optimize etmelerine, kaynak maliyetlerini azaltmalarına ve operasyonel kolaylık sağlamalarına yardımcı olur. Performans izleme ve GitOps prensipleriyle entegre çözümler sunar.

One comment on “KEDA ile Kubernetes’te Olay Güdümlü (Event-Driven) Uygulama Ölçeklendirme

Comments are closed.