ArgoCD ile GitOps Tabanlı Kubernetes Deployment Süreçleri

 · 

ArgoCD ile GitOps Tabanlı Kubernetes Deployment Süreçleri

ArgoCD ile Kubernetes Üzerinde GitOps Dönüşümü

Kubernetes cluster'larında manuel kubectl apply komutları veya karmaşık Jenkins pipeline'ları, yapılandırma sapmalarına (configuration drift) yol açar. ArgoCD, Git repository'sini tek doğruluk kaynağı (Single Source of Truth) kabul ederek, cluster durumunu deklaratif bir şekilde senkronize eder. Bu yaklaşım, sistemin istenen durumdan sapmasını otomatik olarak engeller.

ArgoCD Kurulumu ve Application Tanımlama

ArgoCD, kendi namespace'i içinde çalışan bir controller olarak dağıtılır. Kurulum sonrası, bir uygulamanın cluster üzerindeki yaşam döngüsünü yönetmek için Application CRD'si oluşturulmalıdır.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: production-app
  namespace: argocd
spec:
  destination:
    server: 'https://kubernetes.default.svc'
    namespace: prod-apps
  project: default
  source:
    repoURL: 'https://github.com/organization/manifests.git'
    path: k8s/overlays/production
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Yukarıdaki konfigürasyonda selfHeal: true parametresi, cluster üzerinde elle yapılan (out-of-band) değişiklikleri, Git repository'sindeki tanımlara göre otomatik olarak geri alır.

Production Senaryosu: Cluster Scaling ve Sync İşlemleri

Yüksek trafikli bir senaryoda, HPA (Horizontal Pod Autoscaler) tarafından oluşturulan pod'lar ile ArgoCD'nin senkronizasyon mekanizması bazen çakışabilir. ArgoCD, HPA tarafından yönetilen replicas gibi alanları yok sayacak şekilde ignoreDifferences ile yapılandırılmalıdır.

spec:
  ignoreDifferences:
  - group: apps
    kind: Deployment
    jsonPointers:
    - /spec/replicas

Bu yapılandırma, ölçekleme event'lerinin sürekli bir 'Out-of-Sync' hatası tetiklemesini önler. GitOps süreçlerinde Helm Chart'ları veya Kustomize overlay'lerini merkezi bir repoda tutarak, environment'lar arası geçişleri (dev-staging-prod) sadece bir Git commit ile yönetebilirsiniz.

Güvenlik ve RBAC

ArgoCD API server'ına erişimi kısıtlamak için OIDC entegrasyonu zorunludur. Cluster rollerini argocd-rbac-cm ConfigMap'i üzerinden tanımlayarak, geliştiricilerin sadece belirli namespace'lerde sync işlemi yapabilmesini sağlayabilirsiniz.

← Blog Listesine Dön