Kestra’yı Kubernetes Üzerinde External PostgreSQL ile Kurmak

Kestra, modern workflow yönetimi ve task orkestrasyonu sağlayan güçlü bir platformdur. Kubernetes üzerinde deploy edilebilir ve hem internal hem de external veri kaynakları ile çalışabilir. Bu yazıda, Kestra’yı external PostgreSQL ile Kubernetes’e kurma adımlarını detaylı bir şekilde anlatacağız.


1. Namespace Oluşturma

Kestra için ayrı bir namespace oluşturmak, cluster’daki kaynakları izole etmek ve yönetimi kolaylaştırmak için iyi bir uygulamadır:

kubectl create ns kestra-system
kubectl get ns

Bu sayede Kestra pod’ları ve servisleri kendi alanında çalışacaktır.


2. Helm Repo Ekleme ve Güncelleme

Kestra’nın resmi Helm chart repository’sini ekleyelim:

helm repo add kestra https://helm.kestra.io/
helm repo update

Bu adım, Helm’in en güncel chart sürümlerine erişmesini sağlar.


3. Values.yaml Hazırlama

External PostgreSQL ile kullanmak için chart’ın default değerlerini override eden bir values.yaml dosyası oluşturuyoruz:

postgresql:
  enabled: false

configuration:
  kestra:
    queue:
      type: postgres       # Task queue için PostgreSQL kullanılıyor
    repository:
      type: postgres       # Workflow ve metadata PostgreSQL üzerinde
  datasources:
    postgres:
      url: jdbc:postgresql://127.0.0.1:5432/kestra
      driverClassName: org.postgresql.Driver
      username: kestra
      password: Mypassword!

Açıklamalar:

  • postgresql.enabled: false → Helm chart’ın kendi internal PostgreSQL kurulumunu devre dışı bırakır.
  • queue.type ve repository.type → Her ikisi de PostgreSQL kullanacak şekilde yapılandırılmıştır.
  • datasources.postgres → External PostgreSQL bağlantı bilgilerini içerir. Bu sayede Kestra tüm workflow ve task verilerini external bir database üzerinde tutar.

4. Helm ile Deploy Etme

Hazırladığımız values.yaml dosyası ile Kestra’yı Kubernetes üzerinde deploy edelim:

helm install kestra kestra/kestra --namespace kestra-system -f values.yaml

Pod’ların durumunu kontrol etmek için:

kubectl get pods -n kestra-system

Pod log’larını izlemek için:

kubectl logs -f <kestra-pod-ismi> -n kestra-system


5. Avantajlar

  • External PostgreSQL kullanımı: Veri yönetimi tamamen sizin kontrolünüzde olur, backup ve HA işlemleri dış sistemler üzerinden yönetilebilir.
  • Internal database devre dışı: Kubernetes cluster içinde gereksiz pod ve storage kullanımını önler.
  • Queue ve Repository aynı DB üzerinde: Task yönetimi ve workflow metadata tek bir veritabanında toplanır, yönetimi kolaylaşır.

6. Özet

Bu adımlarla Kestra’yı Kubernetes üzerinde external PostgreSQL kullanacak şekilde kurduk. Böylece, internal database ihtiyacı ortadan kalktı ve tüm workflow verileriniz merkezi bir PostgreSQL üzerinde güvenli bir şekilde saklanıyor.