ArgoCD; Kubernetes için pull-based GitOps continuous delivery aracıdır. Intuit tarafından geliştirilmiş, 2020’de CNCF’in graduated projects listesine girmiştir. Çekirdek prensip basittir: kümede çalışan bir controller, Git’teki manifest’leri sürekli izler ve fark gördüğünde kümeyi Git’le eşitler. Bu sayede tek değişim girişi olarak Git ilkesi sağlanır.
Görsel UI’ı, ArgoCD’yi Flux’tan ayıran en görünür özelliktir: kaynak ağacı, sync durumu, manifest diff, rollout health bilgisi tek pencerede görülür. SSO entegrasyonu (OIDC, SAML), RBAC ve audit log production-grade bir CD platformu için gerekli her şeyi sunar.
Mono’nun yaklaşımı
GitOps sadece “araç kurmak” değil, organizasyonel disiplin gerektirir. Mono’nun ArgoCD kurulumlarında her zaman şu kararları netleştiririz:
- Tek repo mu çoklu repo mu? Genelde iki repo: uygulama kodu (CI ile container image build/push) + ortam manifest’leri (CD’nin tek kaynağı). Image promotion, manifest repo’da tag güncellemesi şeklinde olur.
- App-of-Apps: Her kümenin “root” Application’ı vardır; bu da diğer Application’ları yönetir. Yeni servis eklemek için tek dosya değiştirmek yeterli.
- ApplicationSet: Çoklu ortam (dev/staging/prod) ve çoklu küme için zorunlu. Her ortam farklı
values.yamlveya Kustomize overlay alır. - Sync politikaları: Üretim için manual sync + onay; staging için automated sync + self-heal.
- RBAC: Geliştiriciler kendi namespace’lerine sync yetkisi; SRE/platform ekibi cluster-wide.
Tipik akış
- Geliştirici
app-repo‘da PR açar → CI image build/push → CI manifest repo’daimage.taggünceller. - ArgoCD manifest repo’daki değişikliği algılar → “OutOfSync” durumuna geçer.
- Otomatik sync (staging) veya onaya bekler (production).
- Sync sonrası health check (Argo Rollouts ile blue-green/canary).
- Hata olursa otomatik abort + Git revert ile rollback.
Yaygın sorunlar ve çözümler
- “OutOfSync” sürekli görünüyor: Mutating webhook’lar (örn. service-mesh sidecar enjekte ediyor) tarafından eklenen field’ları
ignoreDifferencesile filtreleyin. - Webhook gecikmesi: Git polling default 3 dakikadır; webhook (GitHub/GitLab) entegrasyonuyla saniyelere indirilebilir.
- Sırlar: Git’e şifresiz secret koymayın. Sealed Secrets, External Secrets Operator veya SOPS ile şifreli akış.
- Yavaş büyük repo: Manifest repo’sunu domain’lere ayırın; her takım kendi alt-projesinde.
- Drift uyarısı: SRE ekibine Slack alert; otomatik geri alma istemiyorsanız
selfHeal: false+ manuel onay.
İlgili hizmetlerimiz
Sıkça sorulan sorular
ArgoCD mi Flux mu?
Push (CI'dan kubectl) yerine neden pull?
Helm/Kustomize ne zaman?
ApplicationSet ne işe yarar?
cluster-name parametresiyle deploy eden tek bir ApplicationSet, 25 ayrı YAML’ı eler.