İçeriğe geç
ArgoCD

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.yaml veya 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ış

  1. Geliştirici app-repo‘da PR açar → CI image build/push → CI manifest repo’da image.tag günceller.
  2. ArgoCD manifest repo’daki değişikliği algılar → “OutOfSync” durumuna geçer.
  3. Otomatik sync (staging) veya onaya bekler (production).
  4. Sync sonrası health check (Argo Rollouts ile blue-green/canary).
  5. 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ı ignoreDifferences ile 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?
İkisi de pull-based GitOps. ArgoCD UI/UX ve görsel sync ağacı açısından daha güçlü; Flux GitOps Toolkit modüler yapısı ve CRD yönelimli operatör mimarisi açısından öne çıkar. Mono varsayılanı ArgoCD; çoklu küme + GitOps Toolkit ihtiyacı varsa Flux.
Push (CI'dan kubectl) yerine neden pull?
Güvenlik — CI’a kümeye admin erişimi vermek zorunda değilsiniz. Auditability — Git, dağıtımın tek kaynağı. Self-healing — manuel değişiklikler otomatik geri alınır. Disaster recovery — sıfır kümeye Git’ten 30 dakikada tam state geri yüklenir.
Helm/Kustomize ne zaman?
Helm: 3rd party uygulamalar (cert-manager, ingress-nginx). Kustomize: kendi uygulamalarımız için. ArgoCD ikisini de native destekler. Mono önerisi: kendi servislerinizde Kustomize, vendor uygulamalarda Helm.
ApplicationSet ne işe yarar?
Çoklu küme veya çoklu ortam senaryolarında uygulama tanımını parametrik şablona dönüştürür. Örnek: 5 bölgedeki 5 kümeye aynı uygulamayı cluster-name parametresiyle deploy eden tek bir ApplicationSet, 25 ayrı YAML’ı eler.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.