27 Canary-Deployment-Strategie in Kubernetes

Bei einem Canary-Deployment wird eine neue Version der Anwendung zu einem kleinen Prozentsatz der Benutzer veröffentlicht und schrittweise die Stabilität und Funktionalität im Live-Betrieb überwacht. Wenn keine Probleme auftreten, wird die neue Version allmählich auf alle Benutzer ausgerollt.

In diesem Diagramm:

27.1 Vorgehensweise

  1. Bereitstellung der Canary-Version: Ein neues Deployment für die Canary-Version wird erstellt und neben dem bestehenden Production-Deployment betrieben.
  2. Verkehrsmanagement: Ein kleiner Prozentsatz des Verkehrs wird auf die Canary-Version umgeleitet, während der Großteil noch zur aktuellen Version fließt.
  3. Überwachung und Bewertung: Die Canary-Version wird kontinuierlich überwacht. Fehler oder Leistungsprobleme führen zu einem sofortigen Rollback.
  4. Ausrollen oder Rollback: Bei Erfolg wird der restliche Verkehr schrittweise auf die neue Version übergeleitet. Bei Problemen wird auf die alte Version zurückgekehrt.

27.1.1 Beispiel

Das folgende Beispiel zeigt, wie ein Canary-Deployment in einer Kubernetes-Umgebung umgesetzt werden könnte:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-canary
spec:
  replicas: 1 # Eine kleine Anzahl von Pods für das Canary-Release
  selector:
    matchLabels:
      app: example-app
      track: canary
  template:
    metadata:
      labels:
        app: example-app
        track: canary
    spec:
      containers:
      - name: example-app
        image: example-app:v2 # Die neue Version der Anwendung
---
apiVersion: v1
kind: Service
metadata:
  name: example-app-service
spec:
  selector:
    app: example-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376

In diesem Beispiel:

27.2 Bewertung

Canary-Releases erfordern eine fortgeschrittene Infrastruktur für Verkehrssteuerung und Monitoring, um effektiv zu sein.