Merhaba.
Database-Driven Kubernetes Operator geliştirdim; ilgi duyabilecek kişiler için tanıtmak istiyorum.
Lynq, uygulamanın zaten veritabanında yönettiği verileri aynen kullanarak Kubernetes kaynaklarını otomatik olarak oluşturan/güncelleyen/temizleyen bir operatördür.
(Lynq, "linq" diye okunabilir ama Link’ten geldiği için "link" diye telaffuz ediyoruz.)
Geliştirme motivasyonu oldukça basitti.
Ortam/kiracı/düğüm gibi bilgilerin tamamı veritabanında dururken,
ufak bir değişiklik olduğunda bile bunu her seferinde yeniden yansıtmak çok zaman alıyor ve uğraştırıyordu.
Bu yüzden aklıma şu fikir geldi:
“Git ile yönetilmesi gereken şey aslında tek bir tekrar eden şablon olabilir;
geri kalanlar ise provisioning verisi her değiştiğinde otomatik olarak onu takip etse yetmez mi?”
Çeşitli araştırmalar yaptım ama tatmin edici bir araç bulamadım.
Zaten 5~6 yıldan uzun süredir Helm ve Terraform kullanıyordum, ancak şu sınırlamalar vardı:
- Veritabanı değişikliklerine anında tepki verememesi,
- Sürekli çalışan bir reconcile modelinin olmaması,
- Sonuçta çeşitli script’leri ve pipeline’ları doğrudan sizin sürdürmek zorunda kalmanız.
Bu yüzden bu gereksinimleri doğrudan karşılayan bir operatör olarak Lynq’ı yaptım.
Ayrıca Lynq’ın production ortamında yanlış anlaşılmadan işletilebilmesi için görselleştirme ve dokümantasyona çok emek veriyoruz.
Örneğin oluşturma/silme/çakışma gibi durumların daha kolay anlaşılması için aşağıdaki sayfalarda görselleştirmeleri tek bakışta görebilirsiniz (Interactive):
=> Policies Docs
=> Dependency Visualizer
Özellikle şu kullanım örneklerinde faydalı olabilir
- SaaS ortamlarında müşteri/kiracı yapılandırmalarını otomatik oluşturma
- Çok sayıda staging/preview ortamı oluşturup yaşam döngüsünü yönetmesi gereken sistemler
- GitOps olmadan da kaynakların hızlı senkronize edilmesi gereken mimariler
- Veritabanı tabanlı olarak büyük ölçekli yapılandırmalar işleten ekipler
- Birden çok şube/düğüm/site ayarını şablonlarla merkezi olarak yönetmesi gereken yapılar
Eğer “bu yaklaşımla şu alanda da kullanılabilir” diye düşündüğünüz fikirler ya da
doğrudan yaşadığınız problem senaryoları varsa, rahatça geri bildirim paylaşırsanız çok yardımcı olur.
Teşekkürler.
Quick Start dokümanını izleyerek yerel ortamda kolayca çalıştırabilirsiniz; Helm ile kurulum da mümkündür.
Ek olarak izleme için Prometheus Rule ve Grafana Dashboard JSON da sunulmaktadır.
- GitHub Repo: https://github.com/k8s-lynq/lynq
- Docs: https://lynq.sh/
2 yorum
Vay, belgeleri inanılmaz ayrıntılı ve çok güzel hazırlamışsınız.
Teşekkürler hehe
Benzer araç neredeyse hiç olmadığı ve alışılmadık geldiği için, önceliği görsel olarak anlaşılmayı kolaylaştırmaya veriyorum.
Dokümanlara bakarken hâlâ anlaşılmayan ya da kavram olarak kafa karıştıran bir yer olursa, hangi kısmı geliştirmenin iyi olacağına dair geri bildirim verirseniz çok sevinirim!
Şu anda canlı demo ve E2E testleri yazarak olgunluğu artırıyorum; takipte kalırsanız sevinirim.