Argo CD ile GitOps Tabanlı Sürekli Dağıtım Stratejileri: Çoklu Küme Yönetimi ve İleri Seviye Senkronizasyon - BirCloud Blog
Bulut Bilişim

Argo CD ile GitOps Tabanlı Sürekli Dağıtım Stratejileri: Çoklu Küme Yönetimi ve İleri Seviye Senkronizasyon

📖 6 dakika okuma süresi

Giriş

Günümüzde, modern yazılım geliştirme süreçlerinde sürekli entegrasyon ve sürekli dağıtım (CI/CD) büyük önem taşımaktadır. Özellikle Kubernetes gibi konteyner orkestrasyon platformlarının yaygınlaşmasıyla birlikte, GitOps yaklaşımı, altyapı ve uygulama dağıtımlarını yönetmek için popüler bir yöntem haline gelmiştir. Bu yazıda, Argo CD kullanarak GitOps tabanlı sürekli dağıtım stratejilerini, özellikle çoklu küme yönetimi ve ileri seviye senkronizasyon konularına odaklanarak inceleyeceğiz. GitOps ve Argo CD ile Güvenli ve Ölçeklenebilir Sürekli Dağıtım başlıklı yazımızda bu temellere değinmiştik.

GitOps ve Argo CD Nedir?

GitOps, altyapı ve uygulama tanımlamalarının (Infrastructure as Code – IaC) Git gibi bir versiyon kontrol sisteminde saklanması ve bu tanımlamaların otomatik olarak uygulanması prensibine dayanır. Bu yaklaşım, sistemlerin istenen duruma getirilmesini ve tutulmasını sağlar, değişikliklerin izlenmesini kolaylaştırır ve geri alma işlemlerini basitleştirir.

Argo CD ise, Kubernetes için özel olarak tasarlanmış, açık kaynak kodlu bir GitOps aracıdır. Git depolarında tanımlanan uygulama manifestlerini Kubernetes kümelerine otomatik olarak dağıtır ve senkronize eder. Argo CD, deklaratif konfigürasyon yönetimi, otomatik senkronizasyon ve sağlık kontrolü gibi özellikleri sayesinde, uygulama dağıtım süreçlerini kolaylaştırır ve güvenilir hale getirir.

Çoklu Küme Yönetimi

Birçok kuruluş, farklı amaçlar için birden fazla Kubernetes kümesi kullanır. Örneğin, geliştirme, test ve üretim ortamları ayrı kümelerde barındırılabilir. Argo CD, çoklu küme yönetimini kolaylaştırarak, tek bir merkezden tüm kümelerdeki uygulamaların dağıtımını ve senkronizasyonunu sağlar.

Çoklu Küme Yapılandırması

Argo CD’ye birden fazla Kubernetes kümesi eklemek için, her küme için bir `Kubernetes Cluster` kaynağı tanımlamanız gerekir. Bu kaynak, kümenin API sunucusuna erişim bilgilerini (URL, sertifika, token vb.) içerir. Argo CD, bu bilgiler sayesinde kümelerle iletişim kurabilir ve uygulama manifestlerini dağıtabilir.


apiVersion: v1
kind: Secret
metadata:
  name: my-cluster-credentials
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
data:
  server: 
  config:
    eyJjbHVzdGVycyI6W3siY2x1c3RlciI6eyJhY3Rpb24tcXVlcnktcGVyLW1hcCI6MCwiY2VydGlmaWNhdGUtYXV0aG9yaXR5LWRhdGEiOiI8YmFzZTY0IGVuY29kZWQgQ0EgZGF0YT4iLCJzZXJ2ZXIiOiJodHRwczovL215LWNsdXN0ZXIuY29tIn19XX0=

Uygulama Dağıtımı

Çoklu kümeye uygulama dağıtımı yapmak için, Argo CD’de bir `Application` kaynağı oluşturmanız gerekir. Bu kaynak, uygulamanın Git deposundaki manifestlerin yolunu, hedef kümeyi ve diğer dağıtım seçeneklerini belirtir. Argo CD, bu bilgilere göre uygulamayı hedef kümeye dağıtır ve senkronize eder.


apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-application
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/my-org/my-app.git
    targetRevision: HEAD
    path: manifests/production
  destination:
    server: https://my-cluster.com
    namespace: my-namespace
syncPolicy:
    automated: {}

İleri Seviye Senkronizasyon Stratejileri

Argo CD, temel senkronizasyon işlemlerinin yanı sıra, daha karmaşık dağıtım senaryoları için çeşitli ileri seviye senkronizasyon stratejileri sunar.

Sync Windows

Sync Windows, uygulamaların yalnızca belirli zaman aralıklarında senkronize edilmesine olanak tanır. Bu özellik, örneğin, yoğun saatlerde dağıtım yapmaktan kaçınmak veya belirli bakım pencerelerinde güncelleme yapmak için kullanılabilir.


apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-application
  namespace: argocd
spec:
  # ...
  syncPolicy:
    automated: {}
    syncOptions:
    - CreateNamespace=true
    managedNamespaceMetadata:
      labels:
        my-label: my-value
      annotations:
        my-annotation: my-annotation-value

Pre-Sync ve Post-Sync Hooks

Pre-Sync ve Post-Sync Hooks, senkronizasyon işleminin öncesinde veya sonrasında özel komutlar çalıştırmanıza olanak tanır. Bu özellik, örneğin, veritabanı şemasını güncellemek, önbelleği temizlemek veya diğer bağımlılıkları yönetmek için kullanılabilir.


apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-application
  namespace: argocd
spec:
  # ...
  syncPolicy:
    automated: {}
    syncOptions:
      - PruneLast=true

Health Checks

Argo CD, uygulamaların sağlık durumunu sürekli olarak izler ve senkronizasyonun başarılı olup olmadığını belirlemek için bu bilgileri kullanır. Health Checks sayesinde, hatalı veya çalışmayan uygulamaların otomatik olarak geri alınması sağlanabilir.

Ayrıca, Kubernetes’te Olay Güdümlü Otomatik Ölçeklendirme: KEDA ile Performansı Optimize Edin yazımızda da bahsettiğimiz gibi, KEDA gibi araçlarla Argo CD’nin senkronizasyon süreçlerini daha da optimize edebilirsiniz.

Kullanım Senaryoları

  • Çoklu Ortam Yönetimi: Geliştirme, test ve üretim ortamlarını farklı Kubernetes kümelerinde barındırarak, her ortam için ayrı konfigürasyonlar tanımlayabilir ve Argo CD ile bu konfigürasyonları otomatik olarak senkronize edebilirsiniz.
  • Mikroservis Mimarisi: Mikroservis tabanlı uygulamaları, her bir servisi ayrı bir Argo CD uygulaması olarak tanımlayarak yönetebilirsiniz. Bu sayede, her servisin bağımsız olarak dağıtılması ve güncellenmesi sağlanır.
  • Felaket Kurtarma (Disaster Recovery): Farklı bölgelerde veya veri merkezlerinde birden fazla Kubernetes kümesi oluşturarak, bir felaket durumunda uygulamaların otomatik olarak diğer kümelerde ayağa kalkmasını sağlayabilirsiniz.

Kurulum ve Başlangıç Rehberi

Argo CD’yi kurmak için aşağıdaki adımları izleyebilirsiniz:

  1. Argo CD kurulum manifestlerini indirin: kubectl create namespace argocd ve kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
  2. Argo CD CLI’yı indirin ve kurun: Argo CD CLI Kurulumu
  3. Argo CD’ye erişmek için bir port-forwarding oluşturun: kubectl port-forward svc/argo-cd-server -n argocd 8080:443
  4. Argo CD web arayüzüne erişin ve ilk kullanıcı adınız `admin` olacaktır. Başlangıç şifrenizi almak için: kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d komutunu kullanın.
  5. Bir Git deposu oluşturun ve uygulama manifestlerinizi bu depoya ekleyin.
  6. Argo CD’de bir `Application` kaynağı oluşturarak, uygulamanızı hedef kümeye dağıtın.

BirCloud Perspektifi

BirCloud olarak, müşterilerimizin bulut altyapılarını en verimli şekilde yönetmelerine yardımcı olmayı hedefliyoruz. Argo CD, GitOps prensiplerini uygulayarak, uygulama dağıtım süreçlerini otomatikleştirmenize, güvenilirliği artırmanıza ve maliyetleri düşürmenize olanak tanır. Uzman ekibimiz, Argo CD kurulumu, yapılandırması ve yönetimi konularında size destek sağlayabilir ve bulut stratejilerinizi optimize etmenize yardımcı olabilir. Argo CD ile GitOps Tabanlı Sürekli Teslimin (CD) Geleceği: BirCloud’un Vizyonu yazımızda da bu konuya değinmiştik.

Sonuç

Argo CD, GitOps tabanlı sürekli dağıtım stratejilerini uygulamak için güçlü ve esnek bir araçtır. Çoklu küme yönetimi ve ileri seviye senkronizasyon özellikleri sayesinde, karmaşık dağıtım senaryolarını kolayca yönetebilir ve uygulama dağıtım süreçlerinizi optimize edebilirsiniz. BirCloud olarak, Argo CD ve diğer bulut çözümleriyle ilgili uzmanlığımızla, işletmenizin dijital dönüşüm yolculuğunda size rehberlik etmekten memnuniyet duyarız.

❓ Sık Sorulan Sorular

Argo CD nedir?

Argo CD, Kubernetes için tasarlanmış, GitOps prensiplerine uygun, açık kaynak kodlu bir sürekli dağıtım aracıdır.

GitOps nedir?

GitOps, altyapı ve uygulama tanımlamalarının Git gibi bir versiyon kontrol sisteminde saklanması ve bu tanımlamaların otomatik olarak uygulanması prensibine dayanan bir yaklaşımdır.

Argo CD ile çoklu küme yönetimi nasıl yapılır?

Argo CD'ye her küme için bir Kubernetes Cluster kaynağı tanımlayarak ve ardından Application kaynaklarını bu kümelere yönlendirerek çoklu küme yönetimi yapılabilir.

Sync Windows nedir?

Sync Windows, uygulamaların yalnızca belirli zaman aralıklarında senkronize edilmesine olanak tanıyan bir Argo CD özelliğidir.

Argo CD'yi nasıl kurabilirim?

Argo CD'yi kurmak için Argo CD kurulum manifestlerini uygulayabilir, CLI'yı indirebilir ve bir port-forwarding oluşturarak web arayüzüne erişebilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir