GitOps Nedir? ArgoCD ile Kubernetes'e Sürekli Teslimat

GitOps Nedir? ArgoCD ile Kubernetes'e Sürekli Teslimat

Geleneksel CI/CD pipeline'larında deploy komutu dışarıdan tetiklenir ve cluster durumu ile Git arasında sapma (drift) oluşabilir. GitOps, Git repository'sini tek doğru kaynak (single source of truth) olarak kabul eder ve ArgoCD bu kaynağı Kubernetes cluster'ıyla sürekli senkronize tutar. Bu rehberde

Geleneksel CI/CD pipeline'larında deploy komutu dışarıdan tetiklenir ve cluster durumu ile Git arasında sapma (drift) oluşabilir. GitOps, Git repository'sini tek doğru kaynak (single source of truth) olarak kabul eder ve ArgoCD bu kaynağı Kubernetes cluster'ıyla sürekli senkronize tutar. Bu rehberde GitOps prensiplerini, ArgoCD kurulumunu ve production uygulamalarını ele alıyoruz.

GitOps Nedir?

GitOps, altyapı ve uygulama konfigürasyonunun tamamının Git'te tutulduğu ve cluster durumunun bu konfigürasyonla otomatik olarak eşlendiği bir operasyon modelidir. Dört temel prensibi vardır:

  • Declarative Configuration Tüm altyapı ve uygulama durumu YAML/JSON olarak tanımlanır. "Ne olması gerektiği" belirtilir, "nasıl yapılacağı" değil.
  • Git as Single Source of Truth Git repository'si istenen durumun tek kaynağıdır. Cluster'da yapılan manuel değişiklikler otomatik olarak geri alınır.
  • Otomatik Senkronizasyon Git'teki değişiklikler otomatik olarak cluster'a uygulanır. Manuel kubectl komutlarına gerek kalmaz.
  • Sürekli Reconciliation Agent sürekli olarak cluster durumunu Git ile karşılaştırır ve sapmaları düzeltir.

ArgoCD Kurulumu

ArgoCD, Kubernetes cluster'ınıza bir namespace olarak kurulur ve web UI, CLI ve API üzerinden yönetilir.

terminal
# ArgoCD namespace oluştur ve kur
$ kubectl create namespace argocd
$ kubectl apply -n argocd -f \
    https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# Admin parolasını al
$ argocd admin initial-password -n argocd

# Web UI'a erişim için port-forward
$ kubectl port-forward svc/argocd-server -n argocd 8080:443

ArgoCD Application Tanımlama

ArgoCD'de her uygulama bir Application CRD'si ile tanımlanır. Bu kaynak, Git repository'si, hedef cluster ve senkronizasyon politikasını belirtir.

application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: web-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/company/k8s-manifests.git
    targetRevision: main
    path: apps/web-app/production
  destination:
    server: https://kubernetes.default.svc
    namespace: production
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true

💡 İpucu: selfHeal: true ayarı, cluster'da manuel yapılan değişiklikleri otomatik olarak geri alır. Production ortamında bu ayarı açmak drift'i önler ancak acil müdahale gerektiren durumlarda geçici olarak kapatmanız gerekebilir.

Kubernetes temelleri için Kubernetes'e Giriş rehberimizi, Helm ile paket yönetimi için Helm Chart rehberimizi inceleyin. CI/CD entegrasyonu için GitHub Actions rehberimize göz atın. ArgoCD resmi dokümantasyonu ve OpenGitOps prensipleri ek kaynak olarak faydalıdır.

Sıkça Sorulan Sorular

GitOps ile geleneksel CI/CD arasındaki fark nedir?

Geleneksel CI/CD'de pipeline dışarıdan cluster'a push yapar. GitOps'ta ise cluster içindeki agent Git'ten pull yapar. Bu sayede cluster credential'ları CI sisteminde tutulmaz ve güvenlik artar.

ArgoCD ile Flux arasında hangisini seçmeliyim?

ArgoCD zengin web UI ve multi-cluster desteği sunar, görsel yönetim tercih edenler için uygundur. Flux daha hafif ve CLI odaklıdır, Terraform Controller gibi ek bileşenlerle genişletilebilir. Küçük ekipler için Flux, büyük organizasyonlar için ArgoCD önerilir.

GitOps sadece Kubernetes için mi?

GitOps prensipleri herhangi bir deklaratif sisteme uygulanabilir ancak en yaygın kullanımı Kubernetes iledir. Terraform, Crossplane ve Pulumi gibi araçlarla Kubernetes dışı altyapıya da GitOps uygulanabilir.

Secret'ları Git'te nasıl saklarım?

Secret'ları düz metin olarak Git'e koymayın. Sealed Secrets, SOPS veya External Secrets Operator kullanarak şifrelenmiş halde saklayın. ArgoCD bu araçlarla native entegrasyon sunar.

Sonuç

GitOps, Kubernetes deployment süreçlerini Git merkezli hale getirerek denetlenebilirlik, tekrarlanabilirlik ve güvenlik sağlar. ArgoCD ile otomatik senkronizasyon ve self-healing kurarak cluster drift'ini önleyin. Uygulama manifest'lerinizi ayrı bir Git repository'sinde tutun ve CI pipeline'ınızı yalnızca image build ile sınırlayın.

GitOps Altyapınız İçin Güçlü Sunucular

Hosted Cloud Kubernetes altyapısı ile GitOps pipeline'ınızı hızla kurun.

Bulut Sunucu Planlarını İncele →
A

Ahmet Yılmaz

Kıdemli Altyapı Mühendisi

10 yılı aşkın bulut altyapısı ve DevOps deneyimiyle Hosted Cloud'un teknik ekibinde yer almaktadır. Kubernetes, Terraform ve yüksek erişilebilirlik mimarileri üzerine uzmanlaşmıştır.

Yorumlar yakında