Middle+
რა არის კარნეირის განთავსებები?
sobes.tech AI
პასუხი AI-სგან
კანარეე განთავსება — ეს ახალი ფუნქციონალის გამოშვების სტრატეგიაა, რომლის დროსაც განახლება ეტაპობრივად გავრცელდება მცირე რაოდენობის მომხმარებლებზე, ხოლო თუ პრობლემები არ გამოვლენ, გავრცელდება მთელ აუდიტორიაზე.
ძირითადი ეტაპები:
- კანარეე ჯგუფის განთავსება: ახალი ვერსია განთავსდება მცირე რაოდენობის სერვერებზე ან მომხმარებლებზე.
- მონიტორინგი: მიმდინარეობს დეტალური მონიტორინგი მეტრიკებზე (შეცდომები, შესრულება, მომხმარებლის ქცევა) კანარეე ჯგუფისთვის.
- გაფართოება ან უკუგდება:
- თუ მონიტორინგი აჩვენებს წარმატებას, განთავსება ეტაპობრივად გაფართოვდება უფრო დიდ ჯგუფზე.
- პრობლემების აღმოჩენის შემთხვევაში, განთავსება უკუგდება კანარეე ჯგუფისთვის, იცავს ძირითად მასას.
უპირატესობები:
- რისკების მინიმიზაცია: პრობლემები ზემოქმედებს მცირე ჯგუფზე.
- სწრაფი უკუგდება: ადვილია წინა ვერსიაზე დაბრუნება.
- ტესტირება რეალურ პირობებში: ახალი ფუნქციონალის ქცევის შეფასება რეალურ დატვირთვაზე.
მოხერხებულობები:
- ინფრასტრუქტურის სირთულე: საჭიროა რამდენიმე ვერსიის ერთდროული მხარდაჭერა.
- ტრაფიკის მართვა: საჭიროა მექანიზმები ტრაფიკის მიმართულებისთვის სხვადასხვა ვერსიებზე.
- მეტრიკების ანალიზი: ეფექტიანი შეგროვება და ანალიზი.
კუბერნეტესში განთავსების მაგალითი:
// v1-ის განთავსება
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-v1
spec:
replicas: 10 // ძირითადი რაოდენობა
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-ის განთავსება
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-v2-canary
spec:
replicas: 1 // კანარეე ჯგუფი
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
---
// სერვისი ტრაფიკის მიმართულებისთვის (სელექტორების გამოყენებით)
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
ტრაფიკის განაწილების მართვა v1 და v2 შორის ხდება Ingress-კონტროლერების (მაგ., Nginx Ingress, Istio) გამოყენებით, რომლებიც უზრუნველყოფენ წონასწორობას და ტრაფიკის განაწილებას.