GitOps yaklaşımı (Argo CD, Flux) Kubernetes deployment’larının baskın standardı haline geldi. CNCF 2026 Annual Survey’e göre üretim K8s ortamlarının %73’ü GitOps mimarisi ile yönetiliyor. Buna karşın secret yönetimi GitOps’un en sancılı tarafı: API anahtarı, DB şifresi, certificate hiçbir zaman düz metinle Git’e gönderilmemeli, ama yine de declaratively yönetilmeli. 2026 itibarıyla orta-büyük şirketlerin %41’i hâlâ “manuel kubectl create secret” akışını kullanıyor — bu çelişki güvenlik açığına ve dağıtım gecikmelerine yol açıyor. Aynı zamanda supply chain saldırıları (xz-utils 2024 olayı, npm package’ları) sonrası secret rotation otomasyonu artık zorunlu bir gereksinim haline geldi.

Bu rehberde modern GitOps secret yönetimi pratiklerini (Sealed Secrets, SOPS+Age, External Secrets Operator, Vault Agent) somut sayılarla aktarıyoruz. Hedef kitle: Platform engineering ekipleri, DevSecOps mühendisleri ve K8s ortamında secret rotation/audit gereksinimi olan kurumlar.

Üç Ana Yaklaşım

1. Sealed Secrets (Bitnami)

  • Public key ile encrypt edilmiş Secret YAML’ı Git’e commit edebilir.
  • Cluster’da private key ile decrypt → standart Kubernetes Secret.
  • Avantaj: basit, klaster-ye sıkı bağlı (private key sadece klaster’de).
  • Dezavantaj: secret rotation manuel, multi-cluster zor.
  • Backup zorunlu: master key kaybolursa tüm sealed secret’lar geri alınamaz.

2. SOPS + Age / KMS

  • Mozilla SOPS — YAML/JSON içinde belirli alanları encrypt eder.
  • Anahtar yönetimi: Age (modern), GPG, AWS KMS, GCP KMS, Azure Key Vault.
  • Avantaj: GitOps friendly, multi-developer flow.
  • Dezavantaj: anahtar yönetimi karmaşık olabilir.
  • Pratik: Age + GitHub team key rotation, KMS audit log.

3. External Secrets Operator (ESO)

  • Vault / AWS Secrets / GCP Secret Manager / Azure Key Vault’tan secret çek.
  • Git’te sadece “reference” (SecretStore + ExternalSecret CRD).
  • Otomatik sync (periodic refresh), rotation otomatik.
  • Avantaj: enterprise grade, audit log, RBAC.
  • Dezavantaj: external dependency (Vault down → cluster Pod restart fail).

Karşılaştırma Tablosu

YöntemBest forRotationMulti-cluster
Sealed SecretsTek cluster, basit setupManuelZor
SOPS + AgeMulti-developer, mid-scaleManuel/scriptedİyi
SOPS + KMSCloud-native, audit logManualİyi
External Secrets OperatorEnterprise, dynamic secretsOtomatikMükemmel
Vault Agent SidecarHassas workload, JWT authOtomatikİyi
GitOps secret yonetim dashboard, Vault ve ESO sync durumu
GitOps secret yonetim dashboard, Vault ve ESO sync durumu

Üretim Pattern: ESO + Vault

  1. Vault’a secret yazılır (manual veya CI).
  2. Kubernetes ServiceAccount ile Vault auth (Kubernetes Auth Method).
  3. ExternalSecret CRD: “Vault’taki app-prod/db-password’u my-secret olarak sync et”.
  4. ESO periyodik (default 1h) Vault’tan çeker, Secret CRD’yi günceller.
  5. Pod normal Secret mount edip kullanır.
  6. Rotation: Vault’ta yenilenir → ESO sync eder → Pod restart (opsiyonel).

Dynamic Secrets (Vault)

  • Vault DB connection için on-demand kısa-ömürlü user üretir.
  • Application başlarken Vault’tan user/pass alır.
  • TTL bitince Vault otomatik siler.
  • “Sızdırılmış password” gibi bir kavram kalmıyor (1 saat sonra ölü).
  • Supported: PostgreSQL, MySQL, Cassandra, MongoDB, AWS IAM, vb.

Dynamic secrets, PAM ve JIT access mimarisi ile birleştirildiğinde “zero standing privilege” hedefine en yakın yapıyı kurar. Bu kombinasyon BDDK ve SOC 2 audit’lerinde “kalıcı admin credential yok” kontrolünü direkt karşılar.

ESO Vault Kubernetes secret sync mimari diyagrami
ESO Vault Kubernetes secret sync mimari diyagrami

Cloud Native Workload Identity

  • AWS IRSA (IAM Roles for Service Accounts): EKS pod’ları IAM role assume eder.
  • GCP Workload Identity: GKE pod → GCP service account.
  • Azure AD Workload Identity: AKS pod → Azure AD.
  • Avantaj: Cloud SDK içinde “sıfır secret” — credential dosyası yok.
  • Best for: cloud-native uygulama, AWS/GCP/Azure SDK kullanımı.

Performans ve Operasyon

  • Sealed Secrets sync: < 5 saniye.
  • SOPS decryption: < 1 saniye.
  • ESO refresh interval: default 1h (ayarlanabilir).
  • Vault availability: SLO %99,99 hedefli (kendi cluster).
  • Rotation cadence: API key 30 gün, DB password 90 gün, certificate 1 yıl.
Platform engineering ekibi secret rotation planlama toplantisi
Platform engineering ekibi secret rotation planlama toplantisi

Yaygın Hatalar

  • Vault tek node — DR yok.
  • SealedSecret backup yapılmamış (yeniden encrypt edemezsin).
  • ESO refresh fail durumunda alarm yok.
  • Secret rotation policy tanımsız.
  • Pod restart yok → eski secret’la çalışmaya devam.
  • SOPS Age key’i .ssh klasöründe paylaşılmamış backup ile — laptop kaybı = secret kaybı.
  • “Plaintext secret değer yorum satırı olarak Git history’de” anti-pattern (rebase ile silinmediyse hâlâ orada).
Ö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 17, 2026

    Türkiye’de GitOps secret yönetimi danışmanlığı verdiğim projelerde en sık karşılaştığım hata, Sealed Secrets’a sımsıkı bağlanmak ve master key backup’ını “yarın yaparız” diye ertelemek. 6 ay sonra master key kaybolduğunda tüm sealed secret’lar resetlenmek zorunda kalıyor — production downtime demek. Doğru sıralama önce master key immutable backup, sonra ESO + Vault geçiş planı. Dynamic secrets bence en az anlaşılan ama en güçlü pratik — production DB’ye kalıcı user vermek 2026’da artık kabul edilmemeli, her uygulama 1-2 saatlik kullan-at credential ile çalışmalı. Bir diğer kritik nokta: Argo CD ile ESO entegrasyonunda generated Secret’in diff’te görünmemesi için `compare-options: IgnoreExtraneous` annotation şart, yoksa sync sürekli “out of sync” gösterir. Multi-cluster büyüdüğünüzde Sealed Secrets sürdürülemez hale gelir, 3-4 aylık migration project planlamak gerekir. Sizin cluster’ınızda şu an secret rotation cadence nasıl — manuel mi semi-automated mi, yoksa 1+ yıllık dokunulmamış API key’ler var mı?

Yorum Yap

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