Middle+
Kanarya dağıtımları nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kanar dağıtımı, yeni özelliklerin piyasaya sürülmesi için bir stratejidir; burada güncelleme, kullanıcıların küçük bir bölümüne kademeli olarak sunulur ve sorun yoksa tüm kitleye yayılır.
Ana aşamalar:
- Kanar grubu dağıtımı: Uygulamanın yeni sürümü, küçük bir sunucu veya kullanıcı alt kümesine dağıtılır.
- İzleme: Kanar grubu için metrikler (hatalar, performans, kullanıcı davranışı) dikkatlice izlenir.
- Genişletme veya geri alma:
- İzleme başarılı gösteriyorsa, dağıtım kademeli olarak daha büyük bir kullanıcı grubuna genişletilir.
- Sorun tespit edilirse, dağıtım kanar grubu için geri alınır ve ana kitle korunur.
Avantajlar:
- Risklerin minimize edilmesi: Sorunlar küçük bir kullanıcı alt kümesini etkiler.
- Hızlı geri alma: Önceki sürüme kolayca dönülebilir.
- Gerçek koşullarda test: Yeni fonksiyonelliğin gerçek yük altında davranışını değerlendirme.
Dezavantajlar:
- Altyapı karmaşıklığı: Aynı anda birkaç uygulama sürümüne destek gerektirir.
- Trafik yönetimi: Trafiği farklı sürümlere yönlendirmek için mekanizmalar gerekir.
- Veri analizi: Etkili metrik toplama ve analiz gereklidir.
Kubernetes'te uygulama örneği:
// v1 için dağıtım
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-v1
spec:
replicas: 10 // Ana sayı
selector:
matchLabels:
app: my-app
version: v1
template:
metadata:
labels:
app: my-app
version: v1
spec:
containers:
- name: my-app
image: my-registry/my-app:v1
---
// v2 kanar dağıtımı
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-v2-canary
spec:
replicas: 1 // Kanar grubu
selector:
matchLabels:
app: my-app
version: v2
template:
metadata:
labels:
app: my-app
version: v2
spec:
containers:
- name: my-app
image: my-registry/my-app:v2
---
// Trafiği yönlendiren servis (seçiciler kullanılarak)
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
v1 ve v2 arasındaki trafik dağılımını yönetmek için, Nginx Ingress, Istio gibi ağırlıklı trafik dağıtımı yapabilen Ingress kontrolcüleri kullanılır.