Text size
Auf meinem Radar6 Min. Lesezeit

Dienstmaschen ohne Seitenwagen

Istio Ambient, Linkerd, Cilium. Das ist nicht das Richtige. Brauchst du überhaupt ein Netz?

Service mesh without sidecars
KI-generierte Illustration

Vor ein paar Jahren war das Service Mesh das heißeste Thema in Cloud-Native. Jede Konferenz hatte Vorträge über Istio, jedes Architekturdiagramm hatte kleine Proxies neben jedem Service. Dann traf die Realität: Maschen waren komplex, ressourcenhungrig und schwer zu debuggen. Viele Teams haben eine ausprobiert und sie still weggenommen.

Die Technologie hat sich seitdem sehr verändert. Die größte Veränderung: Sie brauchen keinen Sidecar-Proxy mehr in jeder Kapsel. Also lohnt es sich, noch mal zu suchen.

Was ein Netz tut

Ein Service Mesh verwaltet die Kommunikation zwischen Diensten außerhalb Ihres Anwendungscodes. Typische Merkmale:

  • MTLS überall: verschlüsseltem Verkehr zwischen Diensten mit automatischer Zertifikatsverwaltung und Dienstidentität.
  • Genehmigungsrichtlinien"Nur der Kassendienst kann Zahlungen einfordern".
  • Verkehrsmanagement: Wiederholungen, Zeitverzögerungen, Schaltungen, Verkehrsspaltung für Kanarienfreisetzungen.
  • Beobachtbarkeit: Anfordern von Metriken, Spuren und einer Karte, mit welchen Diensten man spricht, ohne den Code zu ändern.

All das kann in jede Anwendung mit Bibliotheken integriert werden, aber dann muss jedes Team, in jeder Sprache, es richtig machen. Ein Netz macht es einmal, für alle.

Seitwagens vs. seitwagenslos

Das Seitenwagenmodell (klassische Istio, Linkerd): Jede Kapsel bekommt einen zusätzlichen Proxy-Container. Der gesamte Verkehr geht durch sie.

  • VorteileEine starke Isolation, reichhaltige Funktionen pro Pod.
  • Nachteile: ein Proxy pro Pod verwendet CPU und Speicher (es addiert sich auf Tausende von Pods), fügt Latenz hinzu, erschwert den Start und Abschalten des Pods, und das Upgrade des Mesh bedeutet, jede Arbeitslast neu zu starten.

Das Modell ohne Seitenwagen bewegt den Proxy aus der Kapsel:

  • Umgebungsmodus (im Allgemeinen seit Istio 1.24, Ende 2024) teilt das Netz in zwei Schichten. Ein leichter Proxy pro Knoten namens Ztunnel Handhabung von MTLS und grundlegenden L4-Richtlinien für alle Kapseln des Knotenpunkts. Nicht erlaubt Proxy-Dienste für Wege L7-Funktionen (HTTP-Routing, Wiederholungsversuche, Header-basierte Richtlinien) nur für die Dienste verwalten, die sie benötigen.
  • Zilium-Dienstmaschen verwendet eBPF im Kernel für Netzwerk- und L4-Funktionen, mit einem gemeinsamen Per-Node-Envoy für L7-Funktionen.

Vorteile: viel geringere Ressourcenüberschüsse, keine Änderungen an den Pods, Upgrades ohne Neustart von Anwendungen, und Sie bezahlen nur für die L7-Verarbeitung, wo Sie sie verwenden.

Das Beste an den neuen Service-Maschen ist, dass es weniger davon gibt.

Die wichtigsten Optionen heute

  • - Ich weiß.: die funktionsreichste, jetzt sowohl mit Sidecar als auch mit Ambient-Modus. Ein großes Ökosystem, mehr Komplexität. Ein CNCF-Projekt.
  • Linkerd: konzentriert sich auf Einfachheit und geringe Overhead, mit einem sehr kleinen, Rust-basierten Proxy. Noch immer auf Seitenwagen basiert, aber leicht. Beachten Sie, dass der Schöpfer, Buoyant, die Verteilung stabiler Versionen geändert hat, also überprüfen Sie das aktuelle Lizenzierungs- und Veröffentlichungsmodell, bevor Sie es übernehmen.
  • Zilium: wenn Sie Cilium bereits als CNI verwenden, sind die Mesh-Funktionen fast kostenlos, einschließlich gegenseitiger Authentifizierung und transparenter Verschlüsselung.
  • Netzwerk von Cloud-Anbietern: verwaltete Optionen auf einigen Clouds, häufig auf Basis von Istio.

Was Sie bekommen

Wenn ein Netz passt, sind die Vorteile real:

  • Null-Vertrauens-Netzwerke Die Kommission hat die Kommission aufgefordert, die Jeder Dienst hat eine Identität, jede Verbindung ist verschlüsselt und autorisiert.
  • Ständige Zuverlässigkeit Funktionen (Zeitpausen, Wiederholungsversuche) ohne dass jedes Team sie umsetzt.
  • Kanarienvorsorge mit präziser Verkehrsverteilung.
  • Goldene Kennzahlen (Anfragen, Fehler, Latenzzeit) für jeden Dienst, aus der Box.

Was es kostet, zu laufen

Selbst ohne Seitenwagen ist ein Netz ein wichtiger Bestandteil:

  • Eine weitere Kontrollflugzeug für die Installation, das Upgrade und die Überwachung.
  • LernkurveDie Kommission hat die Kommission aufgefordert, die in den letzten Jahren vorgenommenen Maßnahmen zu prüfen.
  • Fehlerbehebung: Wenn eine Anfrage fehlschlägt, ist es die App, das Mesh oder das Netzwerk?
  • Politikverbreitung: Die Genehmigungspolitik muss sorgfältig verwaltet werden.

Brauchst du ein Netz?

Fragen, die ich stellen würde:

  • Benötigen Sie MTLS zwischen Diensten? für die Anforderungen an die Einhaltung oder Null-Vertrauen? Ein Netz ist der einfachste Weg, um es in Skala zu bekommen.
  • Haben Sie viele Dienste in vielen Sprachen?, wo bibliotheksbasierte Lösungen inkonsistent wären?
  • Brauchen Sie eine feinkörnige Verkehrssteuerung ? für die schrittweise Entbindung?
  • Haben Sie die Kapazität, - um es zu führen?

Wenn Sie nur eine Handvoll Dienstleistungen in einer Sprache haben, wahrscheinlich nicht. Wenn Sie Dutzende oder Hunderte von Diensten und Sicherheitsanforderungen haben, wahrscheinlich ja, und Ambient-Meshes machen die Entscheidung viel einfacher als früher.

Hinweis: Gateway-API Die GAMMA-Initiative deckt nun einige der Zwecke ab, für die die Menschen Meshes verwendet haben (Verkehrsspaltung, Header-Routing am Rand), und erweitert die gleiche API auf Service-to-Service-Verkehr in Meshes. Das bedeutet weniger Netzkonfiguration zu lernen.

Also, sollten Sie noch einmal suchen?

Wenn Sie vor ein paar Jahren die Wartungsmaschen wegen der Komplexität und der Kosten für die Seitenwagen abgelehnt haben, ja. Istio Ambient und Cilium haben die größten Schmerzpunkte beseitigt. Beginnen Sie mit nur mTLS und Beobachtbarkeit, fügen Sie L7-Funktionen nur hinzu, wo sie benötigt werden, und sehen Sie, ob sie ihren Platz verdienen.

Mein Verständnis: Ein Netz war früher eine große Verpflichtung. Ohne Seitenwagen ist es endlich etwas, das man einen kleinen Schritt nach dem anderen übernehmen kann.

Desly