Site icon bintorosoft.com

Canary Deployments mit Compose: Traffic Split ohne Kubernetes

Penguin with glasses and a surprised look on his face is looking at a laptop on white background.

Canary Deployments ermöglichen es, neue Versionen einer Anwendung kontrolliert in Produktion zu bringen, indem ein kleiner Prozentsatz des Traffics auf die neue Version geleitet wird. Dies reduziert das Risiko von Fehlern und Ausfällen, ohne auf komplexe Orchestratoren wie Kubernetes angewiesen zu sein. Docker Compose kann mit einigen Patterns und Reverse-Proxies ebenfalls Canary Deployments realisieren.

1. Grundlagen von Canary Deployments

Beim Canary Deployment wird eine neue Version der Anwendung zunächst nur für einen kleinen Teil der Benutzer aktiviert. Abhängig von Monitoring und Feedback kann der Traffic schrittweise erhöht werden:

Vorteile ohne Orchestrator

2. Setup von Compose für Canary Deployments

Die Grundidee besteht darin, mehrere Service-Instanzen zu betreiben und Traffic gezielt zu verteilen. Ein typisches Setup:

Beispiel `docker-compose.yml`

version: "3.9"
services:
  app_v1:
    image: myapp:v1
    networks:
      - frontend
  app_v2:
    image: myapp:v2
    networks:
      - frontend
  proxy:
    image: traefik:latest
    command:
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
    networks:
      - frontend
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
networks:
  frontend:
    driver: bridge

3. Traffic-Split über Reverse-Proxy

Reverse-Proxies können den Traffic zwischen alten und neuen Versionen steuern:

Traefik Beispiel mit Canary

services:
  app_v1:
    labels:
      - "traefik.http.services.app.loadbalancer.server.port=80"
      - "traefik.http.routers.app.rule=Host(`example.com`)"
      - "traefik.http.services.app.loadbalancer.weight=80"
  app_v2:
    labels:
      - "traefik.http.services.app.loadbalancer.server.port=80"
      - "traefik.http.routers.app.rule=Host(`example.com`)"
      - "traefik.http.services.app.loadbalancer.weight=20"

4. Monitoring und Observability

Canary Deployments leben von schnellem Feedback. Folgende Punkte sind essenziell:

Healthcheck Beispiel in Compose

services:
  app_v2:
    image: myapp:v2
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/health"]
      interval: 30s
      retries: 3

5. Rollout Strategien

Die Steuerung des Traffics erfolgt stufenweise:

Rollback Beispiel

# Entfernen der neuen Version und Traffic zurück auf v1
docker compose stop app_v2
docker compose rm -f app_v2
# Proxy Labels auf alte Version anpassen
docker compose up -d proxy

6. Best Practices

7. Zusammenfassung

Canary Deployments mit Docker Compose ermöglichen kontrollierte Releases ohne komplexen Orchestrator. Durch den Einsatz von Reverse-Proxies, Healthchecks und Monitoring kann Traffic gezielt auf neue Versionen verteilt und Risiken minimiert werden. Rollback-Mechanismen, environment parity und observability sind entscheidend, um einen sicheren und stabilen Rollout sicherzustellen.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version