GitOps Nedir?
GitOps, altyapı ve uygulama durumunu Git deposunda tanımlayıp bir aracın canlı ortamı bu tanıma otomatik eşitlemesidir. İlkeler, örnek akış.
GitOps nedir?
GitOps, bir sistemin istenen durumunun (hangi uygulamanın hangi sürümle, hangi ayarlarla çalışacağının) Git deposunda bildirimsel olarak tanımlandığı ve otomatik bir aracın canlı ortamı bu tanıma sürekli olarak eşitlediği işletim modelidir. Git hem sürüm geçmişi hem de tek doğruluk kaynağı rolünü üstlenir.
Temel değişiklik şudur: Canlı ortama elle komut çalıştırmak yerine depoya değişiklik gönderilir. Ortamı değiştiren şey kişi değil, depoyu izleyen araçtır.
GitOps nasıl çalışır?
Akış dört adımda özetlenebilir:
- Geliştirici ya da operasyon ekibi, istenen durumu (örneğin Kubernetes manifestlerini) bir Git deposunda değiştirir ve değişiklik inceleme sürecinden geçer.
- Depodaki değişiklik birleştirilir ve yeni istenen durum olur.
- Küme içinde çalışan bir ajan, depoyu sürekli izler ve canlı durumu depodakiyle karşılaştırır.
- Fark varsa ajan canlı ortamı depodaki duruma çeker. Biri canlı ortamı elle değiştirirse ajan sapmayı fark edip düzeltebilir.
Bu yaklaşımda dağıtım bir kişinin çalıştırdığı komut değil, depodaki bir birleştirme (merge) olayıdır.
Örnek: bir uygulamanın yeni sürüme geçirilmesi
Örneğin bir ekip, bir web servisinin imaj sürümünü yükseltmek istiyor. Eski yöntemde bir mühendis kümeye bağlanıp güncelleme komutu çalıştırır; ne zaman, kim tarafından, hangi değerlerle yapıldığını sonradan çıkarmak zordur.
GitOps'ta mühendis, manifest dosyasındaki imaj sürümünü değiştirip değişiklik isteği açar. Ekip arkadaşı inceler, birleştirilir. Küme içindeki ajan farkı görüp yeni sürümü uygular. Bir sorun çıkarsa geri alma, deponun önceki sürümüne dönmek kadar basittir ve her adımın kaydı Git geçmişinde durur.
Argo CD ve Flux
GitOps ilkelerini uygulayan iki yaygın açık kaynak araç Argo CD ve Flux'tır. İkisi de Kubernetes üzerinde çalışır, depoyu izler ve kümeyi depoyla eşitler.
Argo CD, uygulamaları ve eşitleme durumunu gösteren bir arayüz sunması ve uygulama tanımlarıyla çalışmasıyla bilinir. Flux, kaynak tanımları, Kustomize, Helm ve imaj otomasyonu gibi bileşenleri küme içi denetleyiciler olarak çalıştıran modüler bir yapıdadır. Hangisinin seçileceği ekibin ihtiyacına, çoklu küme düzenine ve işletim alışkanlıklarına göre değişir.
GitOps ile klasik CI/CD ve DevOps arasındaki fark
DevOps bir kültür ve pratikler bütünüdür. GitOps ise bu pratiklerin altyapı ve dağıtım tarafındaki belirli bir uygulama biçimidir.
Klasik CI/CD'de pipeline derleme ve test sonrasında kümeye dışarıdan bir anahtarla bağlanıp değişikliği iter (push). GitOps'ta ise küme içindeki ajan değişikliği depodan çeker (pull). Bu fark, kümeye dışarıdan geniş yetkiyle erişim ihtiyacını azaltır ve canlı ortamın depoyla uyumunu sürekli denetler. Pratikte iki yaklaşım birlikte çalışır: CI imajı üretir, GitOps dağıtımı yönetir.
Sık yapılan hatalar ve Mindset programları
- Sırları (parola, anahtar) düz metin olarak depoya koymak. Sır yönetimi için ayrı bir çözüm gerekir.
- Tüm ortamlar için tek dalı kullanıp ortam ayrımını belirsiz bırakmak.
- Canlı ortamı elle değiştirmeye devam edip depoyla sapma yaratmak.
- Depo yapısını ve yetkileri baştan tasarlamamak.
Mindset kataloğundaki GitOps ile Sürekli Dağıtım (ArgoCD, Flux), Argo CD ile GitOps Sürekli Teslimat ve Flux ile GitOps Operasyonları programları bu konuyu işler. Modül başlıkları arasında GitOps ilkeleri ve depo tasarımı, yapılandırma ve sır yönetimi, yayın stratejileri ve geri alma, ApplicationSet ile ölçekli yönetim, Flux'ta Kustomize ve Helm entegrasyonu ile güvenlik ve işletim yer alır.
İlgili Mindset programı
GitOps ile Sürekli Dağıtım (ArgoCD, Flux)
Sık sorulan sorular
GitOps yalnızca Kubernetes için mi geçerlidir?
Kavram olarak değil, ama araçlar ve en yaygın uygulama Kubernetes üzerindedir. İstenen durumun bildirimsel tanımlanabildiği her altyapıda, örneğin altyapı kodu araçlarıyla, Git tabanlı akış benzer şekilde kurulabilir.
GitOps güvenliği artırır mı?
Yapıyı doğru kurarsanız evet. Değişiklikler inceleme ve denetim kaydından geçer, kümeye dışarıdan geniş yetki verme ihtiyacı azalır. Ancak depo erişimi, imza doğrulama ve sır yönetimi iyi tasarlanmazsa risk deponun kendisine kayar.
Argo CD ile Flux arasında hangisini seçmeliyim?
İkisi de olgun araçlardır ve aynı ilkeyi uygular. Arayüz üzerinden uygulama durumunu izlemek önemliyse Argo CD, modüler ve küme içi denetleyici yapısı ile Kustomize ve Helm akışları öne çıkıyorsa Flux düşünülebilir. Karar ekibin işletim tarzına ve mevcut araç zincirine bağlıdır.
GitOps'ta geri alma nasıl yapılır?
Depodaki değişiklik geri alınır (revert) ya da önceki bir sürüme dönülür. Ajan canlı ortamı yeniden depodaki duruma eşitler. Böylece geri alma ayrı bir prosedür değil, aynı akışın bir adımıdır ve Git geçmişinde izlenebilir.