EMZETT.
Giriş yap

GitOps: altyapıyı Git’ten yönetmek

Kısaca: Uygulamaların ve altyapının istenen durumu bir Git deposunda saklanır ve bir araç çalışan sistemleri otomatik olarak bununla uzlaştırır.

Biraz daha ayrıntılı: GitOps’ta Git tek doğruluk kaynağıdır. Değişiklikler sunucuda elle komutlarla değil, bir commit veya çekme isteği olarak yapılır. Kümedeki bir ajan (örneğin Argo CD veya Flux), depodaki istenen durumu gerçek durumla sürekli karşılaştırır ve sapmaları düzeltir.

Ayrıntılı

İlkeler

  • Bildirimsel (declarative): dosyalar oraya nasıl gidileceğini değil, neyin çalışması gerektiğini anlatır (Kubernetes için YAML).
  • Sürümlü: her değişikliğin bir yazarı, bir zamanı ve bir nedeni vardır ve geri alınabilir (git revert).
  • Otomatik uygulanır: bir ajan onaylanmış değişiklikleri devralır.
  • Kendi kendini iyileştiren: bir şey elle değiştirilirse ajan onu sıfırlar (sapma algılama).

Push yerine pull

Klasik ardışık düzenler değişiklikleri kümeye kendi kimlik bilgileriyle iter (push). GitOps’ta kümedeki ajan değişiklikleri depodan çeker (pull). Kümenin ardışık düzene kimlik bilgisi vermesi gerekmez; bu güvenliği artırır ve durum her an izlenebilir.

Tipik akış

  1. Geliştiriciler manifest dosyasını (örneğin yeni bir imaj etiketi) bir dalda değiştirir.
  2. İnceleme ve otomatik denetimlerle çekme isteği.
  3. Birleştirmeden sonra ajan değişikliği algılar.
  4. Ajan uygular ve durumu bildirir.

Geri almak şu demektir: commit’i geri alın.

Engeller

Sırlar (parolalar) depoya düz metin olarak girmemelidir; bunun için Sealed Secrets veya SOPS gibi araçlar vardır. Uygulama kodunu ve ortam yapılandırmasını ayırın, yoksa her kod değişikliği bir yapılandırma derlemesi tetikler. GitOps, kod olarak altyapı ile birlikte en etkilidir.

Ayrıca bak: Kod olarak altyapı, Kubernetes temelleri, Git, CI/CD ardışık düzeni