CNCF 2025 Annual Survey verilerine göre Kubernetes kullanan kurumsal ekiplerin %78’i GitOps yaklaşımını benimsiyor; ortalama deployment frekansı 3 katına çıkarken üretim hatalarında %62 azalma gözleniyor. CNCF GitOps Working Group tarafından yayımlanan OpenGitOps Principles v1.0 standardı, deklaratif tanım, versiyonlanmış kaynak, otomatik çekme ve sürekli mutabakat olmak üzere dört zorunlu ilkeyi tanımlıyor. Mart 2025’te Argo CD 3.0 GA sürümü; Nisan 2025’te Flux v2.5 yayımlandı ve iki proje de CNCF Graduated statüsünü koruyor. Bu yazıda Argo CD ve Flux’ı mimari, multi-tenancy, image automation, RBAC ve ölçeklenebilirlik eksenlerinde karşılaştırıyoruz.

Hedef kitle: 5+ Kubernetes cluster işleten platform mühendisliği ekipleri, SRE liderleri ve “Git tek doğruluk kaynağı” felsefesini kurumsal teslim hattına bağlamak isteyen mimarlar. Bu rehber; pull-based reconciliation modelinin neden push-based CI/CD’ye üstünlük sağladığını, drift detection döngüsünü, multi-cluster fan-out senaryolarını ve progressive delivery entegrasyonunu (Argo Rollouts + Flux Flagger) sayısal verilerle açıklıyor.

GitOps Prensipleri ve OpenGitOps v1.0 Standardı

GitOps, Weaveworks tarafından 2017’de tanımlanan ve CNCF GitOps Working Group eliyle OpenGitOps Principles v1.0 şeklinde standartlaştırılan bir teslim modelidir. Klasik kubectl apply yaklaşımı imperative, audit izi zayıf ve insan hatasına açıkken; GitOps deklaratif YAML manifestolarını Git’te tutarak her cluster durumunu commit hash’e bağlar. Bu, sistemin her an Git’teki “desired state”i yansıttığı bir kontrol döngüsü doğurur ve “state reconciliation by controller” pattern’ı haline gelir.

2025 GitOps Working Group Annual Survey’ine göre GitOps benimseyen kurumların %71’i platform engineering ile birleştirmiş, %58’i ise progressive delivery (canary, blue-green) ile entegre etmiş durumda. OpenGitOps standardının dört zorunlu prensibi aşağıdadır.

  • Declarative: Sistem durumu deklaratif (YAML, HCL) tanımlanır; imperative komut çalıştırılmaz.
  • Versioned and Immutable: Desired state versiyon kontrolünde tutulur, immutable artefaktlara bağlanır.
  • Pulled Automatically: Yazılım agent’leri istenen durumu otomatik olarak kaynaktan çeker (pull modeli).
  • Continuously Reconciled: Yazılım agent’leri gerçek durumu sürekli gözlemler ve desired state ile uyumlandırır.

Bu dört ilke ile audit log Git history’den türer (ek araç yok), rollback git revert kadar basittir, drift detection manuel müdahaleleri saniyeler içinde yakalar ve disaster recovery senaryosu “yeni cluster + Git URL” formülüne iner. Daha geniş bulut native bağlam için Cloud-Native Mimari 2026: Best Practices rehberi paralel okumadır.

Git deposu merkezde, reconciliation çizgileri ile çoklu Kubernetes cluster'larına yayılan GitOps topolojisi
Git deposu merkezde, reconciliation çizgileri ile çoklu Kubernetes cluster'larına yayılan GitOps topolojisi

Argo CD 3.0 ve Flux v2.5: Derinlemesine Mimari Karşılaştırması

İki proje de CNCF Graduated statüsünde olsa da felsefeleri belirgin biçimde ayrışıyor. Argo CD 3.0 (Mart 2025 GA) tek bir application-controller binary’si + zengin web UI + Argo Project Sync ekosistemi sunarken; Flux v2.5 (Nisan 2025) source-controller, kustomize-controller, helm-controller, notification-controller, image-automation-controller ve image-reflector-controller olmak üzere altı bağımsız controller ile modüler bir mimariye sahip.

ÖzellikArgo CD 3.0Flux v2.5
MimariMonolitik application-controller + UI6 bağımsız controller, modüler
UIYerleşik zengin web UI (resmi)Resmi UI yok; Weave GitOps / Capacitor
Multi-cluster modeliHub-and-spoke + ApplicationSetCluster başına bağımsız agent
Helm desteğiArgo Helm + post-render hooksHelmRelease CRD (native)
KustomizeYerleşik rendererkustomize-controller (Flux SIG)
RBACSSO + Dex + AppProject izolasyonuKubernetes-native RBAC + Tenant CRD
Image automationArgo Image Updater (ayrı proje)Image Automation Controller (core)
NotificationsArgo Notifications EngineNotification Controller + Provider CRD
Drift onarımıSelf-heal opsiyonel (flag)Varsayılan davranış
Yeniden başlatma süresi~30 saniye (tek pod)~10 saniye (controller bazında)

Argo CD’nin monolitik mimarisi geliştirici deneyimini ön plana çıkarırken Flux’ın modülerliği yatay ölçeklenebilirliği ve controller-bazlı yükseltmeleri kolaylaştırır. Docker ve Kubernetes Yönetimi başlığındaki container temelleri burada ön gerekliliktir.

Sync Stratejileri ve Drift Detection Döngüsü

Her iki araç da pull-based reconciliation döngüsü çalıştırır: controller, Git’ten desired state’i çeker, cluster’daki live state ile diff alır, fark varsa apply uygular. Argo CD’de varsayılan döngü 3 dakika, Flux’ta 1 dakikadır ve her ikisi de webhook ile anlık tetiklenebilir. Drift onarımı söz konusu olduğunda Flux varsayılan olarak self-heal eder; Argo CD’de bu davranış syncPolicy.automated.selfHeal: true ile etkinleştirilir.

Sync stratejisiArgo CD davranışıFlux davranışı
Manual syncUI veya argocd app syncflux reconcile kustomization
Otomatik syncautomated: { prune, selfHeal }Varsayılan (devre dışı bırakılabilir)
Prune (silinen kaynak)Opt-in flagOpt-in flag (prune: true)
Sync waves / dependencyargocd.argoproj.io/sync-wavedependsOn field (Kustomization)
Webhook tetiklemeGitHub/GitLab/Bitbucket nativeNotification receiver CRD
Sync windowProject-level zaman penceresisuspend: true + cron operator
Health checkLua custom healthkstatus standartı

Argo CD’nin sync waves ile dependency sıralama mekanizması karmaşık app-of-apps senaryoları için ergonomik; Flux’ın dependsOn tabanlı yaklaşımı ise daha açık ve test edilebilirdir. Drift dedektörünü 30 saniyenin altına çekmek için her iki araçta da webhook + reconcile interval tuning birlikte yapılmalıdır.

Desired state ile live state arasındaki diff'in reconciliation loop ile kapatıldığı drift detection döngüsü diyagramı
Desired state ile live state arasındaki diff'in reconciliation loop ile kapatıldığı drift detection döngüsü diyagramı

Multi-Tenancy ve RBAC Modeli

Kurumsal platform ekipleri için çoklu tenant izolasyonu hayati. Argo CD’nin AppProject CRD’si; cluster, namespace, repo, kaynak türü ve sync window düzeyinde sıkı bir sınır çizer ve role-based politikalar policy.csv dosyasında tanımlanır. Flux ise multi-tenancy lockdown modunu Tenant CRD ve ServiceAccount impersonation ile sağlar; her tenant’ın Kustomization’ı yalnızca kendi service account’u ile apply olur.

BoyutArgo CD AppProjectFlux Tenant + Impersonation
İzolasyon ünitesiAppProject CRDNamespace + ServiceAccount
RBAC backendArgo CD policy.csv (Casbin)Kubernetes RBAC (native)
SSO sağlayıcıDex (OIDC, SAML, LDAP)Cluster API server OIDC
Cluster whitelistdestinations fieldPer-tenant SA token
Repo whitelistsourceRepos fieldGitRepository sahipliği
Kaynak whitelistclusterResourceWhitelistRBAC Role + RoleBinding
Audit kaydıArgo CD audit eventsKubernetes audit log

Argo CD modeli, ürün ekiplerine self-service UI sunmak için ideal; Flux modeli ise platform mühendislerinin “namespace = tenant” mental modelini sürdüren ortamlarda daha doğal. Yetkilendirme derinliği için RBAC, ABAC ve ReBAC: Yetkilendirme Modelleri yazımız tamamlayıcıdır.

Image Automation: Argo Image Updater vs Flux Image Automation

Yeni container image üretildiğinde Git deposundaki tag’i otomatik güncelleyip commit atan mekanizmalar üretim hızını artırır. Argo CD’nin bu yeteneği Argo Image Updater isimli ayrı proje ile gelirken; Flux’ta Image Reflector Controller + Image Automation Controller core sürüm içinde gelir ve ImagePolicy + ImageUpdateAutomation CRD’leri ile yönetilir.

BoyutArgo Image UpdaterFlux Image Automation
Proje statüsüArgo ekosistemi (ayrı repo)Flux core controllers
CRDAnnotations on ApplicationImagePolicy + ImageRepository
Tag stratejisisemver, latest, regex, digestsemver, alphabetical, numerical
Git write-backArgo CD repo’ya commitImageUpdateAutomation ile commit
OCI registry desteğiDocker Hub, GHCR, ECR, GCR, ACRTüm OCI-compliant registry
Cosign / signatureManuel doğrulamaCosign keyless + Sigstore native
Reconcile sıklığı2 dakika varsayılan1 dakika varsayılan

Flux Image Automation’ın Cosign keyless imzalı tag’leri doğrulayabilmesi tedarik zinciri güvenliğinde belirgin bir avantaj sağlar. CI hattı tarafıyla bütünsel görüntü için CI/CD Pipeline Kurulumu rehberini paralel olarak incelemek faydalı.

Helm ve Kustomize Entegrasyonu

Kubernetes paketleme alanında iki dominant standart var: Helm chart’lar ve Kustomize overlay’leri. Argo CD her ikisini de yerleşik renderer ile destekler, Flux ise her birine ayrı bir controller ayırarak ayırma ilkesini sürdürür. Helm + GitOps en sık karıştırılan konu olduğundan, üç yaygın yaklaşımı bilmek gerekir: (1) chart’ı template’leyip rendered YAML‘ı Git’e koymak, (2) HelmRelease/Application CRD ile dinamik render etmek, (3) OCI artifact olarak versiyonlamak.

YaklaşımArgo CDFlux v2.5
Rendered YAMLRepo’da plain YAML; ergonomikkustomize-controller direkt apply
Helm chart Git’teApplication source: helmHelmRepository + HelmRelease
Helm chart OCIOCI registry desteği (3.0)OCIRepository CRD (v2.5)
Kustomize overlayApplication source: kustomizeKustomization CRD
values.yaml overridehelm.valueFiles, parametersHelmRelease values + valuesFrom
Pre-render hooksargocd-cmp-server (plugin)postBuild substitution
Diff doğrulamasıargocd app diffflux diff kustomization

Kurumsal en iyi pratik: Helm chart sürümünü mutlaka pin’lemek, values.yaml‘ı env bazında ayırmak (base + overlays) ve OCI artifact’a geçerek chart bütünlüğünü Cosign ile doğrulamak. Bu yaklaşım Argo Workflows vs Tekton vs GitHub Actions ile CI tarafında bağlanır.

Tek Git deposundan farklı bölgelerdeki Kubernetes cluster'larına fan-out şeklinde yayılan multi-cluster GitOps mimarisi
Tek Git deposundan farklı bölgelerdeki Kubernetes cluster'larına fan-out şeklinde yayılan multi-cluster GitOps mimarisi

Multi-Cluster Fan-Out ve Performans Ölçeklenebilirliği

Kurumsal ölçekte 50, 100 hatta 500+ cluster işleten ekipler için reconciliation engine’in ölçeklenebilirliği belirleyici. Argo CD’de ApplicationSet Controller, generator’lar (List, Cluster, Git, Matrix, SCM Provider) ile tek bir manifestoyu N cluster’a fan-out eder. Flux’ta her cluster kendi GitRepository + Kustomization CRD’sini barındırır; merkezi yönetim için fleet pattern veya overlay tabanlı dizin yapısı tercih edilir.

Cluster sayısıArgo CD bellek (controller)Flux bellek (toplam)Önerilen pattern
1-10~1 GB~500 MBTek hub (Argo) / Tek repo (Flux)
11-50~3 GB~1.5 GBApplicationSet / fleet repo
51-100~6 GB~2.5 GBSharded controller
101-250~10 GB (sharded)~4 GBMulti-hub Argo / Federation
250+Federated hub’lar~6 GBPer-region Flux + global registry

Argo CD 3.0 ile gelen application controller sharding ve dynamic cluster sharding sayesinde 100+ cluster ölçeğinde controller başına bellek ~2 GB’a indirildi. Flux ise her cluster lokal çalıştığı için bellek baskısı merkezde değil, edge cluster’larda toplanır. Operasyonel öneriler:

  • ApplicationSet’te progressiveSync ile aşamalı rollout yaparak risk azaltın.
  • Argo CD redis cache’ini external Redis Cluster’a alın (HA + memory off-load).
  • Flux’ta --watch-all-namespaces=false ile controller scope’unu daraltın.
  • Büyük monorepos için sparse checkout (her iki tarafta) zorunludur.
  • Webhook receiver’larında severity bazlı filtreleme ile gürültüyü kesin.

Ölçeklendirme tartışmalarını Kubernetes Network Policy: Cilium 2026 ve Azure Container Apps vs AWS App Runner vs Cloud Run yazılarıyla zenginleştirmek; serverless alternatiflerine kıyasla maliyet/karmaşıklık dengesini görmek mümkün.

Notification Controller ve Olay Akışı

Sync hataları, drift olayları ve image otomasyon commit’leri Slack, MS Teams, PagerDuty veya generic webhook’lara akmalı. Argo CD’de bu iş Argo Notifications Engine ile yapılır; trigger + template + subscription üçlüsü annotations üzerinden yönetilir. Flux’ta Notification Controller, Alert + Provider + Receiver CRD’leri ile aynı işi standart bir CRD yüzeyiyle çözer.

  • Sync failed, sync succeeded, health degraded, out-of-sync gibi event türlerini ayrı kanallara yönlendirin.
  • Provider olarak Slack + PagerDuty + MS Teams üçlüsünü severity bazlı bölün (warning -> Slack, critical -> PagerDuty).
  • Webhook receiver ile harici sistemler (Jira, ServiceNow) entegre edin.
  • Notification gürültüsünü summary ve suspend alanlarıyla yönetin.
  • SLO bazlı alert tasarımıyla “sync sürekli başarısız” gibi gürültüden kaçının; window-based threshold uygulayın.
  • Receiver CRD’lerini GitHub PR check ile bağlayıp pull request üzerinden preview deploy durumunu yansıtın.

İki ekosistem de Prometheus AlertManager’a doğrudan event yayar; multi-burn-rate SLO alarmları ile birleştirildiğinde operasyon ekibinin gerçek olaylara odaklanması sağlanır. Bunun yanında DevSecOps tarafıyla shift-left güvenlik politikalarını birleştirmek için DevSecOps: Shift-Left Güvenlik Protokolleri yazısı izlenmelidir.

Progressive Delivery: Argo Rollouts ve Flux Flagger

GitOps tek başına deployment’ı otomatize eder ama “safe” rollout için progressive delivery gerekir. Argo ekosisteminde Argo Rollouts, Flux ekosisteminde Flagger bu işi üstlenir. İkisi de canary, blue-green ve A/B test stratejilerini destekler; service mesh (Istio, Linkerd) veya ingress controller (NGINX, Traefik, Contour) ile traffic shifting yapar ve Prometheus metric query’leri ile otomatik rollback tetikler.

Argo Rollouts ve Flux Flagger ile canary deployment aşamalarını gösteren progressive delivery topolojisi
Argo Rollouts ve Flux Flagger ile canary deployment aşamalarını gösteren progressive delivery topolojisi

Argo Rollouts’un AnalysisTemplate CRD’si ile her canary adımında özel Prometheus, Datadog veya Stackdriver sorgusu çalıştırılabilir; Flagger’ın Canary CRD’si daha deklaratif ve “metric provider abstraction” sunar. Crossplane veya Terraform ile infrastructure provisioning’ini progressive delivery ile birleştirmek için Crossplane vs Terraform: Kubernetes Native IaC 2026 yazımız kapsamlı bir başvuru.

Güvenlik, Sealed Secrets ve Tedarik Zinciri

GitOps’un en güçlü güvenlik argümanı, cluster credential’ının dış CI sistemine sızmamasıdır: pull modeli ile cluster içinden Git’e okuma yapılır; CI’nın cluster KUBECONFIG’ine ihtiyacı yoktur. Ancak iki kritik dikkat noktası vardır: (1) Argo CD UI saldırı yüzeyi açar, NetworkPolicy + Authentication zorunludur; (2) plain YAML olarak secret commit edilemez.

  • Sealed Secrets: Bitnami projesi; cluster içindeki controller’ın private key’i ile şifre çözer, public key ile şifreli secret Git’e commit edilir.
  • External Secrets Operator (ESO): AWS Secrets Manager, HashiCorp Vault, Azure Key Vault ve GCP Secret Manager’dan secret çeker; rotation otomatiktir.
  • SOPS + age: Flux’un yerleşik desteği ile age veya GPG anahtarıyla şifreli YAML.
  • Cosign + Sigstore: Image tag’lerinin keyless imzasını doğrulayarak supply chain saldırılarını engeller.

Güvenlik tartışmasının tedarik zinciri ayağı için SBOM ve Yazılım Tedarik Zinciri Güvenliği: SLSA Framework okunmalıdır. Argo CD 3.0; SBOM üretimini, sigstore doğrulamasını ve image vulnerability check’i için harici sidecar plugin desteğini geliştirdi.

Sık Sorulan Sorular

Argo CD 3.0 ile Flux v2.5 arasındaki temel fark nedir, hangisini seçmeliyim?

Argo CD 3.0 monolitik bir application-controller ve zengin web UI etrafında şekillenir; geliştirici ekiplerinin self-service deployment, drag-drop sync ve görsel diff’le çalışmasına imkân verir. Flux v2.5 ise altı bağımsız controller’dan oluşan modüler bir mimaridir; platform ekipleri Kubernetes-native RBAC ile namespace başına izolasyon kurmak istiyorsa daha doğal. Geliştirici ergonomisi ve UI öncelikli kurumlarda Argo CD, platform mühendisleri tarafından sıkı yönetilen sade ortamlarda Flux öneririz. Her iki proje de CNCF Graduated olduğundan uzun vadeli güvenlidir.

GitOps’ta Helm chart’lar nasıl yönetilir, OCI artifact mı yoksa Git’te plain mi tutulmalı?

2025 itibarıyla en iyi pratik: Helm chart’ı OCI artifact olarak versiyonlamak ve Cosign keyless imza ile doğrulamak. Argo CD 3.0 ve Flux v2.5 ikisi de OCIRepository / OCI source desteği sunar. Git’te yalnızca HelmRelease veya Application manifesti, values.yaml dosyaları ve overlay’ler tutulur. Chart sürümü mutlaka pin’lenir (semver pinning), env bazlı values ayrımı zorunludur ve büyük chart’lar için postBuild substitution (Flux) veya parameter override (Argo) ile minimum duplikasyon hedeflenir.

Secret yönetimi GitOps ile nasıl güvenli yapılır?

Plain secret asla Git’e commit edilmez. Üç ana yaklaşım vardır: (1) Sealed Secrets: cluster içindeki controller’ın private key’i ile şifre çözen Bitnami projesi; küçük-orta ölçek için pratik. (2) External Secrets Operator: AWS Secrets Manager, HashiCorp Vault, Azure Key Vault ile entegre; rotation otomatik, kurumsal en kapsamlı seçenek. (3) SOPS + age: Flux’un yerleşik desteğiyle age anahtarıyla şifreli YAML; CI/CD ergonomisi yüksek. Tek doğru cevap yok; Vault entegrasyonu olan kurumlar için ESO, küçük ekipler için Sealed Secrets veya SOPS önerilir.

50+ Kubernetes cluster’ı tek GitOps platformuyla nasıl yönetirim?

Argo CD tarafında ApplicationSet Controller ile cluster generator (Cluster, Git, Matrix) kullanılır; tek manifesto N cluster’a fan-out olur ve progressiveSync ile aşamalı rollout uygulanır. 100+ cluster ölçeğinde application controller sharding kullanmalı, Redis’i external HA Redis Cluster’a almalısınız. Flux tarafında her cluster kendi GitRepository + Kustomization’ını barındırır (fleet pattern); merkezi yönetim için tek monorepo + cluster başına overlay önerilir. 250+ cluster için bölge başına Argo hub veya Flux federation modeli daha sürdürülebilirdir.

GitOps her iş yükü için uygun mu, sınırlamaları nelerdir?

Stateless mikroservisler, standart Kubernetes kaynakları (Deployment, Service, Ingress, ConfigMap) ve immutable workload’lar için GitOps mükemmel çalışır. Ancak veritabanı şema migrasyonları, sertifika rotation, kompleks orchestration veya büyük ML model dosyaları (>500 MB) için GitOps tek başına yetmez. Bu durumda Argo Workflows / Tekton ile tamamlama, Flux Image Automation ile tag yönetimi, OCI artifact veya Git LFS ile büyük dosya yönetimi ve cert-manager ile sertifika otomasyonu kullanılır. Stateful workload’larda PVC backup ve restore stratejisi GitOps dışında yönetilmelidir.

Sonuç: GitOps Engine Verdict ve Pratik Karar

Engine verdict: CNCF GitOps Working Group’un OpenGitOps v1.0 standardı netleştikçe Argo CD ve Flux farklarını “rakip mi tamamlayıcı mı” sorusu üzerinden değil, “kurum kültürü hangi mimariyi taşıyabilir” sorusu üzerinden tartmak gerekiyor. Argo CD 3.0; UI, geliştirici self-service ve ApplicationSet ile multi-cluster fan-out arayan, ürün ekiplerine deployment yetkisi delege etmek isteyen kurumlar için doğru seçim. Flux v2.5; modüler controller mimarisi, Kubernetes-native RBAC ile namespace izolasyonu ve Cosign keyless imzayla birlikte SOPS desteği arayan platform-merkezli ekiplerde daha doğal yerleşir.

Hangisini seçerseniz seçin başarı kriteri üç noktada toplanır: (1) Git repo organizasyonu (app-of-apps veya fleet pattern), (2) secret yönetimi (Sealed Secrets / ESO / SOPS), (3) drift detection + progressive delivery (Rollouts veya Flagger) ile birleşik bir teslim hattı. 2025 GitOps Working Group survey’ine göre bu üçlüyü doğru kuran kurumlar 12 ay içinde deployment frekansını 3 katına çıkardı ve üretim hatalarını yarıya indirdi. Resmi belgeler için Argo CD docs, Flux docs, OpenGitOps Principles, CNCF Blog, Flux Blog, Argo Project Blog, Codefresh Argo CD Hub ve Weaveworks GitOps kaynakları başvuru noktasıdır.

Ömer ÖNAL

Yazılım Mimarı | Yapay Zeka LLC. Ölçeklenebilir SaaS, .NET Core altyapıları ve Otonom AI süreçleri inşa ediyorum. Kod değil, sistem tasarlarım.

Yorum (1)

  1. Ömer ÖNAL
    Mayıs 16, 2026

    Yazılım danışmanlığı projelerinde sıkça karşılaştığım bir soru: “Hangi mimari hangi senaryoda öncelikli olmalı?” Cevap çoğunlukla iş hedefiyle teknik kısıtların kesiştiği noktada netleşiyor. Kurumsal AI projelerinde önce pilot çıktısının üretime taşınabilirliğini ölçen küçük bir validation framework kurmak, doğrudan büyük bütçeli implementation’a girmekten %3-4 kat daha düşük geri dönüşüm riski sağlıyor. Yorumlarınıza açığım.

Yorum Yap

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