ArgoCD Nedir ve Kurulumu Nasıl Yapılır?

Merhaba okuyucular! Bu makale , bir GitOps aracı olarak Kubernetes’te Argo CD’si hakkında bilgi vermeye çalışacağım.

Öyleyse başlayalım! 🙂

DevOps, kuruluşların şeffaflığı, hesap verebilirliği ve iş yerinde daha hızlı süreçleri teşvik etmek için kullandıkları günümüz dijital dönüşüm stratejisi için çok önemlidir. GitOps, DevOps’ta süreçleri hızlandıran ve işe muazzam verimlilik katan bir sonraki seviye dalgasıdır.Ayrıca GitOps Argo CD, geliştiricilerin sürekli teslim ve etkin BT operasyonları sağlamak için Kubernetes kümesinde sürekli olarak teslim etmelerine ve uygulamaları izlemelerine yardımcı olur.Haydi bunu daha iyi anlayalım.

GitOps’un Özellikleri

Infrastructure as code (IAC) üzerinde başarılı bir şekilde çalışan herkes, GitOps konseptinin gerçek bir yaratıcısıdır. GitOps’u uygulamanın hedeflerinden biri, uçtan uca bir test paketini entegre etmektir. Tüm dağıtımları Kubernetes kümesine taşıdıysanız ve teslim iş akışlarını yeniden tasarladıysanız, düzenli bir yaklaşımın verimsiz olduğunu bilirsiniz.ArgoCD GitOps araçlarından biri olan, tüm yapılandırmaları senkronize tutar ve istenen durumu doğrudan (ve yalnızca Git’ten) uygular. Bunlar GitOps’un temel özellikleridir.

  1. GitOps, geliştiricilerin Git tabanlı iş akışlarına ve Git PR’ye (çekme isteği) güvenerek altyapıyla ilgili daha fazla görev gerçekleştirmesine olanak tanır.
  2. Git deposu durumuna bağlı olarak bir sistemin bulut altyapısının hemen yeniden oluşturulabilmesini sağlar. Git bir istek çeker ve depo durumunu değiştirir. Git PR onaylanıp birleştirildiğinde, otomatik olarak yeniden yapılandırılır ve Git deposunun durumunun canlı altyapısıyla eşitlenir.
  3. Sunucularda oturum açmadan kümenizde yapılan her değişikliğin tüm geçmişine her zaman erişebilirsiniz.
  4. Her kod değişikliği bir ekip lideri tarafından incelenir ve onaylanır.
  5. Her kod, taahhüt edildiğinde GitHub/GitLab işlem hatlarında test edilir.
  6. Pipelines, yeni yazılım konfigürasyonlarını otomatik olarak kullanıma sunar.

Argo CD’nin Özellikleri

GitOps ilkelerini kurmanın yollarından biri ArgoCD’sini Argo projesinin bir parçası olarak kullanmaktır. ArgoCD, GitOps metodolojisini izleyen ve herhangi bir uyumluluk veya güvenlik sorunu olmadan uygulama dağıtımını ve yaşam döngüsü yönetimini hızlandıran, Kubernetes’te yerel bir bildirime dayalı sürekli teslim aracıdır.

ArgoCD’nin birçok avantajı vardır, örneğin, ArgoCD’yi herhangi bir sürekli entegrasyon sistemiyle entegre etmek için kapsamlı bir komut satırı arabirimi (CLI) sağlar. Ayrıca, bir uygulamanın istenen durumunu tanımlamak için yml dosyaları dışında şablonlama araçlarıyla (Helm, ksonnet ve Özelleştirme) entegre edilebilir. Uygulamaların istenen duruma manuel ve otomatik olarak eşitlenmesini sağlar. Argo CD’nin bazı özellikleri şunlardır:

  1. Automatic deployment of an application to a Kubernetes cluster(Bir uygulamanın Kubernetes kümesine otomatik dağıtımı)
  2. Version-control application deployments (Git)(Sürüm kontrol uygulma dağıtımları)
  3. Visualizing Kubernetes cluster resources with a web-based UI(Web tabanlı bir kullanıcı arayüzü ileKubernetes cluster kaynakları görselleştirme )
  4. Metrics dashboard with Grafana
  5. Automation and traceability via GitOps workflow(GitOps iş akışı aracılığıyla otomasyon ve izlenebilirlik)
  6. Easy management of multiple cluster deployments(Birden çok küme dağıtımının kolay yönetimi)
  7. Rollback to any application configuration in the target repository at any point in time(Hedef depodaki herhangi bir zamanda herhangi bir uygulama yapılandırmasına geri dönme)

Argo CD’sinin Mimarisi

ArgoCD, çalışan uygulamaları sürekli olarak izleyen ve geçerli (canlı) durumu Git deposunda (istenen hedef durum olarak adlandırılır) belirtilen durumla karşılaştıran bir Kubernetes denetleyicisi olarak uygulandı.

Mevcut durumu hedef durumundan sapan konuşlandırılmış bir uygulama, senkronizasyon dışı olarak kabul edilir. ArgoCD, mevcut durumu otomatik veya manuel olarak istenen hedef duruma geri senkronize etmek için olanaklar sağlarken farklılıkları raporlar ve görselleştirir. Git deposunda istenen hedef durumunda yapılan herhangi bir değişiklik otomatik olarak uygulanabilir ve belirli hedef ortamlara yansıtılabilir.

Tıpkı Kubernetes gibi, Argo CD’nin de bir API sunucusu, bir depo sunucusu ve bir denetleyici dahil olmak üzere kendi kontrol düzlemi vardır. Bu üç bileşen, Argo CD’deki önemli bileşenlerdir.

ArgoCD deposu sunucusu, Kubernetes kümesinde dağıtılan her uygulamayla ilişkili Git deposunu önbelleğe alır. Bir Git kaynak kodundan kümede dağıtılan Kubernetes bildirimi oluşturur ve gerektiğinde yapılandırma yönetimi araçları ve eklentileri uygular.

ArgoCD API sunucusu, web kullanıcı arayüzü ve CLI’den etkileşimli ArgoCD’ye izin verir. Ayrıca, ArgoCD’nin Uygulama denetleyicisi, kümede dağıtılan uygulamaları izlemekten sorumludur.

 

 

 

Argo CD’sinin bazı önemli bileşenlerine bir göz atalım.

  • Git Deposu : Tüm YAML ve manifest dosyalarını içerir. Bu, her aşamada bir değişiklik veya dağıtım için tek bilgi kaynağı olarak kabul edilir.
  • Argo CD Kullanıcı Arayüzü : ArgoCD, kurulum sonrası uygulamaları yapılandırmak ve izlemek için bize etkileşimli bir web kullanıcı arayüzü sunar.
  • Depo Sunucusu : Bu bileşen, uygulama düzeyindeki bildirim dosyalarıyla birlikte Git depolarındaki yerel önbelleklerin korunmasından sorumludur.
  • API Sunucusu : Web kullanıcı arayüzü, CI/CD yapıları vb. tarafından tüketilen API’yi ortaya çıkaran bir REST sunucusudur. API Sunucusu, ArgoCD altyapısı boyunca uygulamaların durumunu yönetmekten sorumludur. Kümelerin ve havuzun kimlik bilgilerini yönetmekten bile sorumludur.
  • Redis & Dex Sunucusu : Dex sunucusu, bellek içi bir veritabanıdır ve içinde tutarsız veriler bulunur. Redis Sunucusu, tüm uygulama için bir önbellek hizmetidir.
  • Uygulama Denetleyicisi : Tüm kurulumun kalbidir. Uygulama Denetleyicisi, ArgoCD sunucusunda çalışan uygulamaları izlemekten sorumludur. Ayrıca uygulamanın mevcut durumunu istenen durumla karşılaştırır ve buna göre düzeltici önlemleri almamız için OutofSync’i durum olarak döndürür.

 

ArgoCD Uygulama Deployment Aşamaları

Adım 1: ArgoCD kullanan uygulamalarınız için CICD ardışık düzenleri istiyorsanız, Jenkins CI aracını ArgoCD ile entegre etmeniz gerekir.

Adım 2: Yukarıda belirtildiği gibi, uygulama deposunu bildirim deposundan ayırabilirsiniz.

Adım 3: Ana uygulama havuzunda yapılan değişiklikler, işlem hattınızı tetikleyecek ve bir liman işçisi görüntüsü oluşturacaktır.

Adım 4: Bir liman işçisi görüntüsü oluşturulduktan sonra, Jenkins onu bir Docker kayıt defterine gönderir ve ilgili liman işçisi görüntü etiketlerini bir GitOps deposuna işler.

Adım 5: Otomatik tamamlama, bildirim deposundaki liman görüntüsü sürümünü güncelleyecek ve değiştirilen kümeler hakkında ArgoCD’yi bilgilendirecektir.

Adım 6: Argo CD bu değişikliği otomatik olarak algılar ve Git deposuna göre kaynakların durumunu değiştirmek için senkronizasyonu tetikler.

7. Adım: Senkronizasyon eylemi, taahhütten sonra veya düzenli bir yoklama aralığından sonra Jenkins CI’den gelen bir web isteği  aracılığıyla tetiklenir.

Adım 8: Argo CD, çalışan uygulamaları sürekli olarak izleyen ve mevcut durumu istenen hedef durumla (GitOps deposunda belirtildiği gibi) karşılaştıran Kubernetes kümesinde bir denetleyici olarak çalışır.

Adım 9: Denetleyici, diff-in Helm bildirim şablonu çıktıları tarafından yapılan ve isteğe bağlı olarak düzeltici eylemi gerçekleştiren bir senkronizasyon dışı uygulama durumunu algılar.

ArgoCD Kurulumu

Uygulamaları dağıtabilmemiz için kümemize ArgoCD yüklememiz gerekiyor. ArgoCD kurulumuna başlamadan önce çalışmış olduğumuz ortamda Kubernetes’in kurulu olduğunu varsıyoruz.

Bir namespace oluşturmak için aşağıdaki komutu çalıştırın. Argocd olarak adlandırın.Bu namespace’i oluşturmamızın sebebi mevcuttaki podlarla karışmaması için böyle bir izlemekteyim.İsteyen namespace ‘i oluşturmadan da bir sonraki kurulum aşamasına geçebilir.

kubectl create namespace argocd

ArgoCD’sini dağıtmak için aşağıdaki komutu çalıştırın.

kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Tarayıcı üzerinden ArgoCD ‘ ye erişeceğimiz için aşağıdaki komutu çalıştırmamız gerekiyor.

kubectl patch svc argocd-server -p '{"spec": {"type": "NodePort"}}' -n argocd

Tarayıcımız üzerinden ArgoCD ye giriş yaptığımızda giriş bilgileri kullanıcı admin ve şifre ise aşağıdaki komut çalıştırılarak elde edebiliriz.

kubectl get secret argocd-initial-admin-secret -n argocd -o yaml

 

Eğer Kubernetes ortamımız cluster bir yapı üzerinde kurulu ve hangi server üzerinden kurulacağını tespit etmek istiyorsak aşağıdaki komut çalıştırılmalıdır.Öncesinden kubectl get svc | grep argocd-server -n argocd ile elde etmiş olduğumuz port ile arayüze erişebiliriz.

kubectl describe pods -n argocd argocd-server

 

Evettt ArgoCD ile ilgili yazımızın sonuna gelmiş bulunmaktayız 🙂.İlerleyen zamanlarda ArgoCD de uygulama deploy edilmesi ve yönetilmesi gibi konuları içeren bir yazı hazırlayacağım.Umarım bu makalem ArgoCD ile tanışmak isteyenler için güzel bir başlangıç olması dileğiyle. 🙂

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*