Giriş
Kubernetes üzerinde hizmet güncellemeleri yaparken "her şey ya hep ya hiç" yaklaşımı risklidir. Canary dağıtımı, yeni sürümü küçük bir kullanıcı kesimine açıp davranışı izleyerek ilerlemeye olanak verir. Bu rehberde GitOps yaklaşımıyla Argo CD kullanarak manifests tabanlı yönetim, Istio ile trafikte kademeli yönlendirme ve temel otomasyon-adımlarını ele alacağız. Amaç, tekrarlanabilir, gözlemlenebilir ve güvenli bir canary süreci kurmaktır.
Önkoşullar
Bu makaledeki adımları uygulayabilmek için aşağıdaki bileşenlere sahip olmalısınız: bir Kubernetes kümesi (1.20+ önerilir), Argo CD kurulumu, Istio servis mesh kurulumu (ingress/gateway dahil), Git deposu (manifests için) ve izleme için Prometheus/Grafana. Ayrıca kubectl, argocd CLI ve gerekli RBAC izinleri gereklidir.
1) Manifests ve GitOps Hazırlığı
Uygulamanızı Kustomize veya Helm ile paketleyin. İki ayrı sürüm manifesti tutmak faydalıdır: v1 ve v2. Git deposunda şunları organize edin: /overlays/stable (v1), /overlays/canary (v2) ve ortak base dosyalar. Argo CD bu repo'yu izleyerek kümedeki kaynakları senkronize eder. Argo CD Application manifesti ile otomatik senkronizasyon veya manuel onay tercih edilebilir.
2) Istio ile Trafik Yönlendirme
Istio VirtualService ve DestinationRule kaynakları ile servis içinde ağırlık bazlı dağıtım yapabilirsiniz. Örnek kısa yapı: bir VirtualService içinde canary için %10, %50 gibi ağırlıklar belirlenir. Örnek kontrol komutu: kubectl -n your-namespace get virtualservice. Canary sürecinde ağırlıkları Git üzerinden değiştirerek Argo CD ile otomatik olarak uygulayabilirsiniz; böylece tüm değişiklikler version kontrolünde kalır.
3) Otomasyon ve Güvenlik: Argo CD + Webhook
Manifests'te ağırlık değişiklikleri bir PR ile yapılır. CI pipeline'ınız bu PR'ı doğrular (lint, güvenlik taramaları). Merge sonrası Argo CD otomatik senkronize eder. Opsiyonel: bir webhook ile Argo CD sync tamamlandığında Prometheus sorguları tetikleyerek sağlık kontrolü başlatabilirsiniz. Eğer belirlenen SLO/SLA dışı metrikler tespit edilirse, otomatik rollback için Argo CD uygulamasına geri alma tetiklenebilir.
4) Gözlemlenebilirlik ve Karar Kriterleri
Canary'nin başarılı sayılması için ölçülebilir kriterler belirleyin: hata oranı, p99 gecikme, throughput ve kullanıcı deneyimi metrikleri. Prometheus'ta sorgular tanımlayın, Grafana panelleri oluşturun ve Alertmanager ile eşik aşımlarında uyarı üretin. Otomasyon için bu uyarılar webhook ile rollback sürecini başlatabilir.
5) İleri Seviye İpuçları
- İzolasyon: Canary pod'larını ayrı bir node pool veya kaynak sınırlamaları ile izole edin. - A/B test yerine istatistiksel güven: Trafik artışlarını küçük adımlarla yapın (örn. %5, %20, %50). - Trafik yönlendirme dışında shadowing ile gerçek üretim trafiğini yeni sürüme de gönderip yalnızca gözlemleyebilirsiniz. - Rollback kriterlerini mutlaka otomatik hale getirin; manuel müdahale süresini minimize edin. - Argo Rollouts kullanmak istiyorsanız, Rollout CRD'si ile Istio'yu entegre ederek daha ileri seviye deneyler ve analizler yapabilirsiniz.
Örnek Komut Akışı
Bir canary adımı için tipik komutlar: git checkout -b feature/canary-weight, manifests'te VirtualService ağırlığını değiştir, git commit && git push. PR merge sonrası Argo CD otomatik olarak uygulamayı senkronize eder: argocd app get my-app ve kubectl -n my-namespace get pods ile doğrulama yapabilirsiniz.
Sonuç
GitOps tabanlı canary dağıtımı, değişikliklerin izlenebilir, geri alınabilir ve tekrarlanabilir olmasını sağlar. Argo CD ile manifest kontrolünü elinizde tutarken Istio trafik yönlendirmesi sayesinde kademeli roll-out'lar yapabilirsiniz. Ancak başarının anahtarı güçlü gözlemlenebilirlik, net kabul kriterleri ve otomatik rollback mekanizmalarıdır. Bu temel adımları uygulayarak üretimde riskleri azaltabilir ve sürüm yayımlarını daha güvenilir hale getirebilirsiniz.
.png)


.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

