DevOps ve altyapı

GitOps ile altyapı ve dağıtım yönetimi

Altyapıyı ve dağıtımları Git üzerinden yönetiyoruz. Her değişiklik incelenir, kayıt altında kalır ve tek adımda geri alınabilir.

GitOps yaklaşımında altyapının ve uygulamanın istenen hali bir Git deposunda tanımlanır ve sunucuda elle değişiklik yapılmaz. Her değişiklik bir pull request ya da merge request olarak açılır, incelenir, kayıt altında kalır ve gerekirse tek adımda geri alınır. Kendi sitemizi de böyle yönetiyoruz: ana dala yapılan her birleştirme bir yayındır ve sunucuda hiçbir dosya elle düzenlenmez.

Çözdüğümüz sorun

Sunucuda elle yapılan değişiklikler iz bırakmaz. Bir yapılandırma dosyası düzenlenir, bir ayar değiştirilir ve birkaç ay sonra kimse neden öyle olduğunu hatırlamaz. Test ve canlı ortamlar zamanla birbirinden ayrışır ve testte çalışan bir değişiklik canlıda farklı davranır. Bir sorun çıktığında neyin, ne zaman ve kim tarafından değiştirildiğini bulmak saatler alır. Sunucuya erişimi olan herkes potansiyel bir değişiklik kaynağıdır ve bu değişikliklerin hiçbiri incelenmez. GitOps, Git'in kod için sağladığı inceleme, geçmiş ve geri alma olanaklarını altyapıya ve dağıtıma da taşır.

Nasıl çalışıyoruz

  1. Mevcut yapılandırmayı toplama

    Sunucularda, ortam ayarlarında ve dağıtım betiklerinde dağınık duran yapılandırmayı çıkarıyoruz. Gizli bilgiler depo dışında kalacak şekilde ayrılıyor, geri kalan her şey Git deposuna taşınıyor. Böylece sunucuların bugünkü hali ilk kez tek bir yerde yazılı hale geliyor.

  2. Dal ve onay kuralları

    Hangi dalın hangi ortama karşılık geldiğini, değişikliklerin kim tarafından onaylanacağını ve hangi otomatik kontrollerden geçeceğini tanımlıyoruz. Canlı ortama giden dal korumaya alınıyor.

  3. Depodan dağıtım

    Onaylanan her değişikliğin otomatik olarak ilgili ortama uygulandığı bir dağıtım hattı kuruyoruz. Ortamlar aynı tanımlardan üretildiği için test ve canlı arasındaki farklar açıkça görülüyor. Bir değişikliğin hangi ortamda ne zaman yayına çıktığı da hattın kayıtlarında görülüyor.

  4. Geri alma ve denetim

    Bir değişikliği geri almak, onu geri alan bir birleştirme ya da önceki sürümü yeniden yayımlamak kadar kolay hale geliyor. Değişiklik geçmişi, kimin neyi neden yaptığının kaydı olarak kalıyor.

Teslim ettiklerimiz

  • Altyapı ve dağıtım tanımlarını içeren Git deposu
  • Korumalı dallar ve onay kuralları
  • Onaylanan değişikliği uygulayan dağıtım hattı
  • Geri alma adımları ve ekip için çalışma kılavuzu

Sık sorulan sorular

GitOps ile DevOps arasındaki fark nedir?

DevOps, geliştirme ile işletmeyi birbirine yaklaştıran genel bir çalışma biçimidir. GitOps bunun bir uygulama yoludur: altyapının ve dağıtımın tek doğru kaynağı Git deposudur ve her değişiklik inceleme ile birleştirme üzerinden yapılır. İki hizmeti birlikte ya da ayrı ayrı alabilirsiniz.

Kubernetes kullanmamız gerekiyor mu?

Hayır. GitOps sıklıkla Kubernetes ile birlikte anılır, ama ilke herhangi bir ortama uygulanabilir. Bu site bir cPanel sunucusunda çalışıyor ve yayınlar yine de yalnızca Git deposundan, korumalı bir dal üzerinden yapılıyor.

Şifreler gibi gizli bilgiler depoda mı duracak?

Hayır. Şifreler, anahtarlar ve benzeri gizli bilgiler depoya girmez. Bunlar sunucuda ya da dağıtım aracının gizli değişkenlerinde tutulur, depoda yalnızca hangi ayarın gerektiği tanımlanır. Depoya yanlışlıkla gizli bilgi girmesini yakalayan otomatik bir kontrol de hattın parçasıdır.

Acil bir durumda sunucuya doğrudan müdahale edemez miyiz?

Edebilirsiniz, ama müdahale bir istisna olarak kalır ve hemen ardından depoya işlenir. Aksi halde bir sonraki yayın elle yapılan değişikliği sessizce geri alır. Acil durumlar için kısa yoldan onaylanan bir dal ve adım adım bir kılavuz hazırlıyoruz. Böylece hızlı müdahale ile kayıt altında kalmak birbirine engel olmuyor.

İlgili hizmetler

  • DevOps

    Geliştirmeden canlıya giden yolu otomatikleştiriyor, sunucularınızı izlenebilir ve yedekli hale getiriyoruz.

  • Yazılım otomasyonları

    Elle tekrarlanan işleri zamanlanmış, izlenebilir süreçlere dönüştürüyoruz.

GitOps geçişinizi planlayalım

Ne yapmak istediğinizi birkaç cümleyle anlatın. İhtiyacınızı inceleyip nasıl ilerleyebileceğimizi size yazalım.