Sobes.tech
Middle+

Kas ir kanāru izvietojumi?

sobes.tech AI

Atbilde no AI

Kanalizācijas izvietošana — tas ir jaunas funkcionalitātes izlaišanas stratēģija, kurā atjauninājums pakāpeniski tiek izvietots nelielai lietotāju grupai, un, ja nav problēmu, tas tiek izplatīts visai auditorijai.

Galvenie posmi:

  1. Kanalizācijas grupas izvietošana: Jaunā lietojumprogrammas versija tiek izvietota nelielā serveru vai lietotāju daļā.
  2. Uzraudzība: Veic rūpīgu metrikas (kļūdas, veiktspēja, lietotāju uzvedība) uzraudzību kanalizācijas grupai.
  3. Paplašināšana vai atgriešana:
    • Ja uzraudzība rāda panākumus, izvietojums pakāpeniski paplašinās uz lielāku lietotāju grupu.
    • Ja tiek konstatētas problēmas, izvietojums tiek atgriezts kanalizācijas grupai, aizsargājot galveno masu.

Priekšrocības:

  • Riska mazināšana: Problēmas ietekmē nelielu lietotāju daļu.
  • Ātra atgriešanās: Viegls ir atgriezties pie iepriekšējās versijas.
  • Testēšana reālos apstākļos: Novērtē jaunas funkcionalitātes uzvedību reālā slodzē.

Trūkumi:

  • Infrastruktūras sarežģītība: Nepieciešama vairāku versiju vienlaicīga atbalstīšana.
  • Tīkla plūsmas pārvaldība: Nepieciešami mehānismi plūsmas maršrutēšanai uz dažādām versijām.
  • Datu analīze: Nepieciešama efektīva metrikas vākšana un analīze.

Kubernetes piemērs:

// v1 izvietojums
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v1
spec:
  replicas: 10 // Galvenais skaits
  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āra v2 izvietojums
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v2-canary
spec:
  replicas: 1 // Kanāra grupa
  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

---

// Pakalpojums, kas maršrutē trafiku (izmantojot selektorus)
apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Lai pārvaldītu trafika sadalījumu starp v1 un v2, tiek izmantoti Ingress kontrolieri (piemēram, Nginx Ingress, Istio), kas nodrošina svariem līdzīgu sadalījumu.