Einführung: Sidecar-Proxy mit Envoy

Aus devops.straight8.de
Zur Navigation springenZur Suche springen

Einführung: Sidecar-Proxy mit Envoy[Bearbeiten]

Das Sidecar-Muster ist ein Entwurfsmuster in der Softwarearchitektur, bei dem eine Hilfsanwendung (der Sidecar) neben einer Hauptanwendung platziert wird. Der weltweit am häufigsten eingesetzte Proxy für dieses Muster ist Envoy, ein hochperformanter C++ Open-Source-Proxy.


1. Was ist Envoy?[Bearbeiten]

Envoy wurde ursprünglich von Lyft entwickelt und ist heute ein Projekt der Cloud Native Computing Foundation (CNCF). Es wurde speziell für Cloud-native Architekturen entworfen und zeichnet sich durch einen extrem geringen Ressourcenverbrauch sowie enorme Flexibilität aus.

2. Funktionsweise des Sidecars[Bearbeiten]

In einem Kubernetes-Cluster wird Envoy im selben Pod wie der eigentliche Anwendungs-Container betrieben.

  • Interzeption: Der gesamte ein- und ausgehende Netzwerkverkehr der Anwendung wird durch den Envoy-Proxy geleitet.
  • Abstraktion: Die Anwendung kommuniziert nur noch mit "localhost". Envoy kümmert sich um die Komplexität des restlichen Netzwerks (Service Discovery, TLS, Retries).

3. Kernfunktionen von Envoy[Bearbeiten]

  • L3/L4 und L7 Proxy: Envoy kann sowohl auf der TCP-Ebene als auch auf der Anwendungsebene (HTTP, gRPC, MongoDB etc.) filtern und routen.
  • Erweitertes Load Balancing: Unterstützt fortgeschrittene Verfahren wie P2C (Power of Two Choices) und Zone-Aware-Routing.
  • Dynamische Konfiguration: Über die sogenannten xDS-APIs kann Envoy im laufenden Betrieb neu konfiguriert werden, ohne den Proxy neu starten zu müssen.
  • Observability: Envoy generiert detaillierte Statistiken und Tracing-Daten (z. B. für Jaeger oder Zipkin) über jeden einzelnen Request.

4. Vorteile des Sidecar-Ansatzes[Bearbeiten]

  • Sprachunabhängigkeit: Da die Netzwerklogik in Envoy ausgelagert ist, müssen Entwickler keine speziellen Bibliotheken für Retries oder Sicherheit in Java, Go oder Python implementieren.
  • Zentrale Kontrolle: Sicherheitsrichtlinien (wie mTLS) können global über alle Services hinweg durchgesetzt werden, ohne den Code der Anwendung zu ändern.
  • Resilienz: Envoy schützt die Anwendung durch Mechanismen wie Rate Limiting und Circuit Breaking vor Überlastung.

5. Zusammenfassung[Bearbeiten]

Envoy als Sidecar fungiert als intelligentes "Netzwerkkabel". Es entkoppelt die Anwendungslogik von der Netzwerklogik und bildet damit das Rückgrat moderner Service Meshes wie Istio oder AWS App Mesh.

Zusammenfassend: Während die Applikation sich auf ihre Geschäftslogik konzentriert, übernimmt Envoy die "schmutzige Arbeit" der Netzwerkkommunikation – sicher, schnell und beobachtbar.