Sobes.tech
Middle+

Mi az a kanári telepítés?

sobes.tech MI

Válasz az MI-től

A kanári telepítés egy olyan stratégia az új funkciók kiadására, ahol a frissítést fokozatosan hajtják végre a felhasználók kis részén, és problémamentes esetben az egész közönségre kiterjesztik.

Főbb lépések:

  1. A kanári csoport telepítése: Az alkalmazás új verzióját egy kis szerver vagy felhasználói csoportban telepítik.
  2. Monitorozás: Alaposan figyelemmel kísérik a metrikákat (hibák, teljesítmény, felhasználói viselkedés) a kanári csoport számára.
  3. Bővítés vagy visszavonás:
    • Ha a monitorozás sikerességet mutat, a telepítést fokozatosan bővítik egy nagyobb felhasználói csoport felé.
    • Probléma esetén a telepítést visszavonják a kanári csoport számára, védve a fő felhasználói tömeget.

Előnyök:

  • Kockázatok minimalizálása: A problémák kis felhasználói csoportot érintenek.
  • Gyors visszavonás: Könnyen vissza lehet térni a korábbi verzióhoz.
  • Valós körülmények közötti tesztelés: Az új funkció viselkedésének értékelése valódi terhelés alatt.

Hátrányok:

  • Infrastruktúra összetettsége: Több verzió támogatása szükséges egyidejűleg.
  • Forgalomkezelés: Mechanizmusokra van szükség a forgalom irányításához különböző verziók között.
  • Adat elemzés: Hatékony metrikagyűjtés és elemzés szükséges.

Kubernetes példakód:

// v1 telepítés
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v1
spec:
  replicas: 10 //  szám
  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

---

// Kanári v2 telepítés
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v2-canary
spec:
  replicas: 1 // Kanári csoport
  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

---

// Szolgáltatás a forgalom irányítására (választók használatával)
apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

A v1 és v2 közötti forgalom elosztásának kezeléséhez Ingress kontrollereket (pl. Nginx Ingress, Istio) használnak, amelyek támogatják a súlyozott forgalomelosztást.