18 Juli 2024

3 Min. Lesezeit

Das Wichtigste in Kürze

  • Ein Service Mesh übernimmt Kommunikation, Security und Observability zwischen Microservices.
  • Istio ist das Feature-reichste Mesh, aber auch das komplexeste mit dem höchsten Ressourcen-Overhead.
  • Linkerd ist leichtgewichtig (< 10 MB Proxy) und einfach zu betreiben - ideal für den Einstieg.
  • Cilium Service Mesh nutzt eBPF statt Sidecar-Proxies und bietet den niedrigsten Latenz-Overhead.
  • Ab 20-30 Services in Kubernetes wird ein Service Mesh operativ sinnvoll.

In einer Microservice-Architektur wird die Kommunikation zwischen Services zur zentralen Herausforderung: Verschlüsselung, Authentifizierung, Load Balancing, Retry-Logic, Circuit Breaking, Observability – alles muss zuverlässig funktionieren, ohne dass jeder Service diese Logik selbst implementiert. Service Meshes lösen das Problem auf Infrastruktur-Ebene.

Was ein Service Mesh leistet

Ein Service Mesh ist eine dedizierte Infrastrukturschicht für die Service-zu-Service-Kommunikation. Statt Retry-Logic, Circuit Breaker und mTLS in jedem Service zu implementieren, übernimmt ein Proxy (Sidecar oder Kernel-Level) diese Funktionen transparent.

Die Kernfähigkeiten: Traffic Management (Canary Deployments, A/B Testing, Traffic Splitting), Security (mTLS zwischen allen Services, Autorisierungspolicies), Observability (automatische Metrics, Logs und Traces für jede Service-Kommunikation) und Reliability (Retries, Timeouts, Circuit Breaking).

Istio: Der Vollausstatter

Istio ist das Feature-reichste Service Mesh und der De-facto-Enterprise-Standard. Es unterstützt granulares Traffic Management (RequestRouting, Fault Injection, Rate Limiting), umfassende Security (mTLS, JWT-Validierung, Authorization Policies) und tiefe Observability-Integration (Prometheus, Jaeger, Kiali).

Die Kehrseite: Istio ist komplex. Die Control Plane (istiod) verbraucht signifikante Ressourcen, der Envoy-Sidecar-Proxy erhöht die Pod-Count und Memory-Nutzung um 50-100 MB pro Pod, und die Lernkurve ist steil. Für Teams ohne Kubernetes-Expertise ist Istio oft der falsche Einstieg.

Ambient Mode – Istios ztunnel-basierter Ansatz ohne Sidecar – adressiert den Ressourcen-Overhead. Stand 2025 ist Ambient Mode produktionsreif und reduziert den Memory-Footprint erheblich.

Linkerd: Einfachheit als Feature

Linkerd setzt bewusst auf Reduktion: Weniger Features als Istio, dafür einfacher zu installieren, betreiben und debuggen. Der Linkerd-Proxy (linkerd2-proxy, geschrieben in Rust) verbraucht unter 10 MB Memory pro Pod – ein Bruchteil von Envoy.

Linkerd liefert die wichtigsten Mesh-Features: mTLS, Traffic Splitting, Retries, Observability und Multi-Cluster-Support. Was fehlt: Granulares Request Routing, Fault Injection und die Breite der Istio-Integrationen.

Für Teams, die mTLS und Observability brauchen, aber nicht das volle Feature-Set von Istio, ist Linkerd die pragmatische Wahl. Installation in 5 Minuten, Upgrade ohne Downtime, minimale Ops-Last.

Cilium: eBPF statt Sidecar

Cilium geht einen fundamental anderen Weg: Statt Sidecar-Proxies nutzt es eBPF – eine Technologie, die Programme direkt im Linux-Kernel ausführt. Das eliminiert den Overhead von Proxy-Prozessen und reduziert Latenz um 20-40% gegenüber Sidecar-basierten Meshes.

Cilium Service Mesh bietet mTLS, L7 Traffic Management, Observability (Hubble) und Network Policies. Es ist gleichzeitig CNI (Container Network Interface) und Service Mesh – eine Schicht weniger im Stack.

Die Einschränkung: eBPF erfordert Linux-Kernel 5.10+ und spezifische Kernel-Features. Managed Kubernetes-Services (EKS, GKE, AKS) unterstützen Cilium zunehmend nativ. Für neue Cluster ist Cilium eine starke Wahl; Migration bestehender Cluster erfordert einen CNI-Wechsel.

Wann braucht man ein Service Mesh – und wann nicht?

Ja wenn: mTLS zwischen Services Compliance-Anforderung ist, granulares Traffic Management für Canary Deployments benötigt wird, Observability über Service-Grenzen hinweg fehlt, oder mehr als 20-30 Services im Cluster laufen.

Nein wenn: Weniger als 10 Services, einfaches Networking ausreicht, das Team keine Kubernetes-Erfahrung hat oder die Anwendung kein Microservice-Pattern nutzt.

Die Empfehlung: Mit Kubernetes Network Policies und einfachem mTLS (cert-manager) starten. Service Mesh erst einführen, wenn die Pain Points konkret sind – nicht präventiv.

Häufige Fragen

Was ist der Performance-Overhead eines Service Mesh?

Sidecar-basiert (Istio, Linkerd): 1-5ms zusätzliche Latenz pro Hop, 50-200 MB Memory pro Pod. eBPF-basiert (Cilium): < 1ms Latenz, kein separater Proxy-Prozess. Für die meisten Anwendungen ist der Overhead akzeptabel. Für latenzempfindliche Workloads (< 10ms SLA) sollte eBPF bevorzugt werden.

Kann man ein Service Mesh nachträglich einführen?

Ja. Linkerd und Istio können schrittweise deployed werden – namespace-weise oder pod-weise. Cilium erfordert einen CNI-Wechsel, was einen Cluster-Rollout bedeutet. Best Practice: In einem Nicht-Produktions-Cluster testen, dann schrittweise in Produktion ausrollen.

Ersetzt ein Service Mesh API-Gateways?

Nein. Service Meshes verwalten East-West-Traffic (Service-zu-Service). API-Gateways verwalten North-South-Traffic (extern zu intern). Beide ergänzen sich. Ein API-Gateway am Rand und ein Service Mesh intern ist das typische Enterprise-Pattern.

Welches Service Mesh für den Einstieg?

Linkerd für den einfachsten Einstieg mit den wichtigsten Features. Cilium wenn eBPF und Performance-Effizienz Priorität haben. Istio wenn das volle Feature-Set von Anfang an benötigt wird und das Team die Komplexität bewältigen kann.

Braucht man ein Service Mesh für Serverless-Workloads?

Nein. Serverless-Plattformen (Lambda, Cloud Functions, Cloud Run) übernehmen Networking, Security und Observability selbst. Ein Service Mesh ist ein Kubernetes-Konzept und nur dort relevant, wo man eigene Container orchestriert.

Quelle des Titelbildes: Pexels / Mikhail Nilov

Lesetipps der Redaktion

Mehr aus dem MBF Media Netzwerk

SecurityToday | MyBusinessFuture | Digital Chiefs

Ein Magazin der Evernine Media GmbH