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.typeverepository.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.