Ana içeriğe geç

GitOps

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/gitops

Kısaca

GitOps, sistemin istenen durumunu Git'te tutan ve otomatik bir ajanın canlı sistemi bununla senkronize ettiği bir altyapı ve dağıtım yönetimi yöntemidir.

GitOps nedir?

GitOps, bir sistemin nasıl görünmesi gerektiği konusunda tek doğru kaynak olarak bir Git repository'sini kullanan bir operasyon pratiğidir. İstenen durum, yani hangi uygulama sürümlerinin çalıştığı, kaç kopyası olduğu ve nasıl yapılandırıldığı, genellikle YAML biçiminde bildirimsel dosyalar olarak yazılır. Canlı ortamı değiştirmek için sunuculara komut çalıştırmak yerine bu dosyaları bir commit veya pull request üzerinden değiştirirsiniz.

Çoğunlukla bir Kubernetes kümesinin içinde çalışan otomatik bir ajan, canlı durumu repository'nin söylediğiyle sürekli karşılaştırır. Bunlar birbirinden farklı olduğunda, örneğin yeni bir commit'ten sonra ya da biri kümeyi elle değiştirdiği için, ajan Git'teki dosyaları uygulayarak ikisini uzlaştırır (reconcile). Bu çekme tabanlı (pull-based) model, CI pipeline'ının canlı ortama doğrudan kimlik bilgilerine ihtiyaç duymadığı anlamına gelir ve Git geçmişi her değişikliğin tam bir denetim kaydı olur.

Bir termostat gibidir: istediğiniz sıcaklığı ayarlarsınız ve sistem, ısıtıcıyı sizin açıp kapatmanız yerine odayı buna uydurmak için sürekli ayar yapar. GitOps, Kubernetes platformlarında, çok kümeli kurulumlarda ve ortamlarında gözden geçirilmiş, tekrarlanabilir değişiklikler isteyen ekiplerde yaygın olarak kullanılır. Geri alma, bir commit'i geri döndürmek kadar basit hale gelir.

GitOps sıklıkla CI/CD ve kod olarak altyapı ile karıştırılır. Kod olarak altyapı, altyapıyı dosyalarda tarif eder; GitOps ise bu dosyaların Git'te durması ve uzlaştırıcı bir ajan tarafından otomatik uygulanması kuralını ekler. CI kodu yine derler ve test eder; GitOps ise genellikle onaylanmış durumu kümeyle senkronize ederek teslimat adımını devralır.

Önemli noktalar

  • Git, sistemin istenen durumu için tek doğru kaynaktır.
  • Değişiklikler elle komutlarla değil, commit'ler ve pull request'ler üzerinden yapılır.
  • Bir ajan, canlı sistemi repository ile sürekli uzlaştırır.
  • Elle yapılan değişikliklerin yol açtığı kayma otomatik olarak algılanır ve düzeltilir.
  • Rollback bir git revert'tür ve Git logu aynı zamanda denetim izi görevi görür.

Örnek

Yeni bir sürümü GitOps yöntemiyle dağıtmakbash
# Change the desired state: bump the image version in the manifest
sed -i 's/web-app:1.4.0/web-app:1.5.0/' apps/web-app/deployment.yaml

# Propose the change for review like any other code
git switch -c release-web-app-1.5.0
git commit -am "Deploy web-app 1.5.0"
git push -u origin release-web-app-1.5.0

# After the pull request is merged, the GitOps agent
# notices the new commit and updates the cluster to match.

# Rolling back is just another commit
git revert <commit>

Sık sorulan sorular

GitOps ile DevOps arasındaki fark nedir?

DevOps, geliştirme ile operasyonu bir araya getirmek için geniş bir kültür ve pratikler bütünüdür. GitOps ise DevOps'un bir bölümünü uygulamanın belirli bir yoludur: dağıtımlar ve altyapı değişiklikleri tamamen Git'e yapılan commit'lerle yönlendirilir.

GitOps yalnızca Kubernetes için midir?

Hayır, fikir durumu bildirimsel olarak tarif edilebilen ve otomatik olarak uzlaştırılabilen her sistem için işe yarar. Uygulamada en çok Kubernetes ile yaygındır, çünkü platform bildirimsel yapılandırma ve uzlaştırma döngüleri etrafında inşa edilmiştir.

Yapılandırma kayması (configuration drift) nedir?

Yapılandırma kayması, canlı sistemin çoğunlukla elle yapılan düzeltmeler yüzünden zamanla amaçlanan yapılandırmayla uyuşmamaya başlamasıdır. GitOps ajanı kümeyi Git ile karşılaştırarak kaymayı algılar ve bu değişiklikleri otomatik olarak geri alabilir.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar