Menü
Developer

Containerisierung: Cilium 1.3 erweitert die Anbindung über Envoy

Die Netzwerksoftware Cilium führt Erweiterungen für den Proxy Envoy in der Programmiersprache Go ein.

Von
vorlesen Drucken Kommentare lesen
Containerisierung: Cilium 1.3 erweitert Anbindung über Evnoy

Mit Version 1.3 aktualisiert Cilium seine Software zum Bereitstellen einer abgesicherten Netzwerkverbindung zwischen containerisierten Anwendungen. Die größte Neuerung betrifft die Anbindung an den Proxy Envoy, für den Entwickler nun Erweiterungen in der Programmiersprache Go schreiben können.

Für die Protokolle HTTP und gRPC sowie für HTTP-Derivate wie Elasticsearch setzt Cilium bereits seit der im April veröffentlichten Version 1.0 auf den quelloffenen Layer-7-Proxy Envoy. Daher bot er sich für die Erweiterung des Protokollportfolios auf der Anwendungsschicht an. Um neue Protokolle einfach und flexibel anbinden zu können, setzte die Cilium-Community zum Schreiben von Erweiterungen für Envoy auf Googles Programmiersprache Go.

Die Go-Erweiterungen bilden die Schnittstelle zwischen Envoy und der Außenwelt.

(Bild: Cilium.io)

Cilium leitet die Verbindungen transparent an Envoy um. Die Konfiguration erfolgt anhand der Ziel-Ports, und der Redirect lässt sich basierend auf IPs, DNS-Namen oder Labels auf einzelne Quell- oder Ziel-Services eingrenzen. Die Go-Erweiterungen laufen verteilt und benötigen keine zentrale Steuerungsebene. Sie können aber optional eine solche aufrufen, um beispielsweise Anfragen zu validieren.

Aus Sicht von Envoy sind die Go-Erweiterungen als dynamische Bibliothek verfügbar. Cilium konfiguriert den Proxy, damit er die für die vorgesehenen Verbindungen benötigten Erweiterungen lädt. Für neue oder aktualisierte Go-Extensions ist derzeit ein Neustart von Envoy erforderlich, während künftige Releases Erweiterungen im laufenden Betrieb laden beziehungsweise aktualisieren sollen. Die Go-Extensions laufen in Sandboxes, damit Envoy bei instabilen Parsern weiterarbeitet.

Die Grundlagen zum Schreiben eigener Go-Extensions haben die Macher von Cilium bewusst einfach gehalten. Die wichtigste Funktion in der API ist OnData(). Ihr Aufruf erfolgt immer dann, wenn Envoy Daten für eine über die CiliumNetworkPolicy auf die Erweiterung ausgelegte Verbindung erhält.

Die Erweiterungen lassen sich über generische Schlüssel-Werte-Paare konfigurieren, die sie entweder über CRDs (Custom Resource Definition) oder eine REST API erhalten. Auf die Weise können Administratoren beispielsweise Security-Tokens an Erweiterungen durchreichen, ohne dass Envoy die entsprechenden Konfigurationen kennen muss.

Konfiguration der Go-Erweiterungen

(Bild: Cilium.io)

Cilium 1.3 hat zwei vorgefertigte Protokolle mit an Bord: die NoSQL-Datenbank Apache Cassandra und den In-Memory-Cache-Server Memcached. Beide Anbindungen haben derzeit Beta-Status. Dasselbe gilt im aktuellen Release noch für die grundlegende API zum Erstellen der Go-Extensions für Envoy.

Weitere Neuerungen in Cilium 1.3, die unter anderem die Security und die Netzwerkperformance verbessern sollen, finden sich im Blogbeitrag, dessen Besuch sich schon aufgrund der kreativen Zeichnungen des Go-Maskottchens lohnt. Die vollständige Liste der Neuerungen sowie vorgefertigte Binaries sind in den Release Notes auf GitHub aufgeführt. (rme)