Middle+
Kanar balığı yerləşdirmələri nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Kanar yerləşdirmə, yeni funksionallığın buraxılması üçün strategiyadır, burada yeniləmə yavaş-yavaş istifadəçilərin kiçik bir hissəsinə təqdim olunur və problem yoxdursa, bütün auditoriyaya yayılır.
Əsas mərhələlər:
- Kanar qrupunun yerləşdirilməsi: Yeni tətbiq versiyası kiçik bir server və ya istifadəçi alt qrupuna yerləşdirilir.
- İzləmə: Kanar qrupu üçün metriklərin (səhvlər, performans, istifadəçi davranışı) diqqətlə izlənməsi.
- Genişləndirmə və ya geri çəkilmə:
- Əgər izləmə uğurlu göstərərsə, yerləşdirmə mərhələli şəkildə daha böyük istifadəçi qrupuna genişləndirilir.
- Problemlər aşkar edilərsə, yerləşdirmə kanar qrupu üçün geri çəkilir və əsas istifadəçilər qorunur.
Üstünlüklər:
- Risklərin azaldılması: Problemlər kiçik istifadəçi qrupunu təsir edir.
- Tez geri çəkilmə: Əvvəlki versiyaya asanlıqla qayıtmaq mümkündür.
- Həqiqi şəraitdə test: Yeni funksionallığın real yük altında davranışını qiymətləndirmək.
Çətinliklər:
- İnfrastrukturun mürəkkəbliyi: Eyni zamanda bir neçə versiyanın dəstəklənməsi tələb olunur.
- Trafik idarəetməsi: Trafiki müxtəlif versiyalara yönəltmək üçün mexanizmlər lazımdır.
- Məlumatların analizi: Effektiv məlumat toplama və analizi tələb olunur.
Kubernetes-də tətbiq nümunəsi:
// v1 üçün yerləşdirmə
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-v1
spec:
replicas: 10 // Əsas 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
---
// kanar v2 üçün yerləşdirmə
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-v2-canary
spec:
replicas: 1 // Kanar qrupu
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
---
// Trafiki yönəltmək üçün xidmət (seçicilərdən istifadə etməklə)
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
v1 və v2 arasında trafiki idarə etmək üçün, Nginx Ingress, Istio kimi, çəkili trafikin paylanmasını dəstəkləyən Ingress kontrolörləri istifadə olunur.