Was ist Istio? Das Kubernetes-Service-Mesh erklärt

Microservice-Architekturen lösen einige Probleme, führen aber andere ein. Die Aufteilung von Anwendungen in unabhängige Dienste vereinfacht die Entwicklung, Aktualisierung und Skalierung. Gleichzeitig können Sie viele weitere bewegliche Teile anschließen und sichern. Die Verwaltung aller Netzwerkdienste - Lastausgleich, Verkehrsmanagement, Authentifizierung und Autorisierung usw. - kann äußerst komplex werden. 

Für diesen vernetzten Bereich zwischen den Diensten in Ihrem Kubernetes-Cluster gibt es einen Sammelbegriff: ein Dienstnetz . Bei einem Google-Projekt, Istio, geht es darum, Ihnen die Möglichkeit zu geben, das Servicenetz Ihres Clusters zu verwalten, bevor es zu einem Knurren wird.

Was ist ein Service-Mesh?

Bei jeder Gruppe von Netzwerkanwendungen gibt es eine Reihe allgemeiner Verhaltensweisen, die dazu neigen, um sie herum aufzutauchen. Lastausgleich, zum Beispiel: Es gibt wenige Fälle, in denen eine Gruppe von Netzwerkdiensten dies nicht benötigt. Ebenso in der Lage zu sein, verschiedene Kombinationen von Diensten A / B zu testen oder eine End-to-End-Authentifizierung über Dienstketten hinweg einzurichten. Diese Verhaltensweisen werden zusammen als  Service-Mesh bezeichnet.

Die Verwaltung des Servicenetzes sollte nicht den Services selbst überlassen bleiben. Keiner von ihnen ist in einer guten Position, um etwas von oben nach unten zu tun, und es sollte sowieso nicht ihre Aufgabe sein. Besser ein separates System zwischen den Diensten und dem Netzwerk, mit dem sie sprechen. Dieses System würde zwei Schlüsselfunktionen liefern:

  1. Verhindern Sie, dass sich die Dienste selbst mit der Verwaltung des Netzwerkverkehrs befassen müssen - Lastausgleich, Routing, Wiederholungsversuche usw.
  2. Bieten Sie Administratoren eine Abstraktionsebene, die es Ihnen erleichtert, allgemeine Entscheidungen über den Netzwerkverkehr im Cluster zu treffen - Richtliniensteuerung, Metriken und Protokollierung, Diensterkennung, sichere Kommunikation zwischen Diensten über TLS usw.

Istio Service Mesh-Komponenten

Istio arbeitet als Service-Mesh, indem es zwei grundlegende Architekturelemente für Ihren Cluster bereitstellt, eine Datenebene und eine Steuerebene .

Die Datenebene verarbeitet den Netzwerkverkehr zwischen den Diensten im Netz. Der gesamte Datenverkehr wird von einem Netzwerk-Proxy-System abgefangen und umgeleitet. In Istios Fall wird der Proxy von einem Open-Source-Projekt namens Envoy bereitgestellt. Eine zweite Komponente in der Datenebene, Mixer, sammelt Telemetrie und Statistiken von Envoy und den Fluss des Service-zu-Service-Verkehrs.

Die Steuerebene, Istios Kern, verwaltet und sichert die Datenebene. Es konfiguriert sowohl die Envoy-Proxys als auch die Mixer, die die Netzwerkrichtlinien für die Dienste erzwingen, z. B. wer wann mit wem sprechen darf. Die Steuerebene bietet auch eine programmatische Abstraktionsschicht für die Datenebene und alle ihre Verhaltensweisen.

Drei weitere Istio-Services runden den Mix ab:

Istio Pilot

Istio Pilot übernimmt die Regeln für das Verkehrsverhalten, die von der Steuerebene bereitgestellt werden, und konvertiert sie in Konfigurationen, die von Envoy angewendet werden, basierend darauf, wie solche Dinge lokal verwaltet werden. Mit Pilot kann Istio neben Kubernetes auch mit anderen Orchestrierungssystemen arbeiten, sich jedoch zwischen diesen konsistent verhalten. 

Istio Zitadelle

Citadel steuert die Authentifizierung und das Identitätsmanagement zwischen Diensten.

Istio Galeere

Gallery verwendet benutzerdefinierte Konfigurationen für Istio und konvertiert sie in gültige Konfigurationen für die anderen Steuerebenenkomponenten. Dies ist ein weiteres Element, mit dem Istio verschiedene Orchestrierungssysteme transparent verwenden kann.

Istio Service Mesh-Funktionen

Der erste und wertvollste Vorteil, den Istio bietet, ist die Abstraktion - eine Möglichkeit, die Komplexität eines Service-Netzes zu marktüblichen Bedingungen zu bewältigen. Sie können programmgesteuert Änderungen am Netz vornehmen, indem Sie Istio befehlen. Mit dem Netz verbundene Dienste müssen nicht von innen neu programmiert werden, um neuen Netzwerkrichtlinien oder -kontingenten zu folgen, und die Netzwerkbereiche zwischen ihnen müssen auch nicht direkt berührt werden.

Darüber hinaus können Sie mit Istio zerstörungsfreie oder vorläufige Änderungen an der Netzwerkkonfiguration des Clusters vornehmen. Wenn Sie ein neues Netzwerklayout ganz oder teilweise einführen oder die aktuelle Konfiguration A / B gegen eine neue testen möchten, können Sie dies mit Istio von oben nach unten tun. Sie können diese Änderungen auch rückgängig machen, wenn sie sich als ungesund herausstellen.

Ein dritter Vorteil ist die Beobachtbarkeit. Istio bietet detaillierte Statistiken und Berichte darüber, was zwischen Containern und Clusterknoten vor sich geht. Wenn es ein unvorhergesehenes Problem gibt, wenn etwas nicht den Richtlinien entspricht oder wenn sich Änderungen, die Sie vorgenommen haben, als kontraproduktiv herausstellen, können Sie dies in kurzer Zeit herausfinden.

Istio bietet auch Möglichkeiten, allgemeine Muster zu erfüllen, die Sie in einem Service-Mesh sehen. Ein Beispiel ist das Leistungsschaltermuster, mit dem verhindert werden kann, dass ein Dienst mit Anforderungen bombardiert wird, wenn das Back-End Probleme meldet und die Anforderungen nicht rechtzeitig erfüllen kann. Istio bietet ein Leistungsschaltermuster als Teil seiner Standardbibliothek für die Durchsetzung von Richtlinien.

Während Istio am direktesten und intensivsten mit Kubernetes zusammenarbeitet, ist es plattformunabhängig konzipiert. Istio schließt sich denselben offenen Standards an, auf die sich Kubernetes selbst verlässt. Istio kann auch eigenständig auf einzelnen Systemen oder auf anderen Orchestrierungssystemen wie Mesos und Nomad arbeiten.

Wie fange ich mit Istio an?

Wenn Sie bereits Erfahrung mit Kubernetes haben, können Sie Istio am besten lernen, indem Sie einen Kubernetes-Cluster verwenden - nicht einen, der bereits in Produktion ist! - und Istio mithilfe einer Helmkarte darauf installieren. Anschließend können Sie eine Beispielanwendung bereitstellen, die allgemeine Istio-Funktionen wie intelligentes Verkehrsmanagement und Telemetrie demonstriert. Dies sollte Ihnen einige grundlegende Erfahrungen mit Istio vermitteln, bevor Sie es für Service-Mesh-Aufgaben in Ihrem Anwendungscluster bereitstellen.

Red Hat, das im Rahmen des OpenShift-Projekts von Kubernetes in Istio investiert hat, bietet Tutorials an, die Sie durch gängige Istio-Bereitstellungs- und Verwaltungsszenarien führen.