Istio

menu icon

Istio

Erfahren Sie mehr über die Istio-Open-Technologie, die Entwicklern einen Weg bietet, Netzwerke mit unterschiedlichen Mikroservices nahtlos zu verbinden, zu verwalten und zu sichern.

Was ist Istio?

Istio ist eine konfigurierbare, Open-Source-Service-Netzschicht, die die Container in einem Kubernetes-Cluster verbindet, überwacht und sichert. Im Moment arbeitet Istio nur nativ mit Kubernetes zusammen, aber seine Open-Source-Natur ermöglicht es jedermann, Erweiterungen zu schreiben, sodass Istio für eine beliebige Cluster-Software aktiviert werden kann. Heute konzentrieren wir uns auf die Verwendung von Istio mit Kubernetes, dem am weitesten verbreiteten Anwendungsfall.

Kubernetes ist ein Container-Orchestrierungs-Tool, und eine Kerneinheit von Kubernetes ist ein Knoten. Ein Knoten besteht aus einem oder mehreren Containern, zusammen mit Dateisystemen oder anderen Komponenten. Eine Mikroservicearchitektur verfügt möglicherweise über ein Dutzend verschiedener Knoten, die jeweils unterschiedliche Mikroservices darstellen. Kubernetes verwaltet Verfügbarkeits- und Ressourcenverbrauch von Knoten, wobei je nach Bedarf Pods mit dem Pod-Autoscaler hinzugefügt werden. Istio injiziert zusätzliche Behälter in die Kapsel, um Sicherheit, Verwaltung und Überwachung bereitzustellen.

Da es ein Open-Source Source-Service-Mesh ist, kann Istio auf jeder öffentlichen Cloud laufen, die es unterstützt, und auf jeder privaten Cloud, solange die Administratoren dies zulassen.

Das folgende Video erklärt mehr über die Grundlagen von Istio (5:13):

Netz-Service-Netz

Wenn Unternehmen zu Microservices wechseln, müssen sie Dutzende oder Hunderte von spezifischen Anwendungen unterstützen. Diese Endpunkte separat zu verwalten, bedeutet, eine große Anzahl von virtuellen Maschinen (VM) zu unterstützen, einschließlich der Nachfrage. Cluster-Software wie Kubernetes kann Pods erstellen und skalieren, aber Kubernetes stellt kein Routing, keine Verkehrsregeln und keine starken Überwachungs- oder Debugging-Werkzeuge zur Verfügung.

Servicenetz eingeben.

Mit zunehmender Anzahl von Services steigt die Zahl potenzieller Kommunikationswege exponentiell an. Zwei Services haben nur zwei Kommunikationspfade. Drei Dienste haben sechs, 10 Dienste haben 90. Ein Service-Netz bietet eine einzige Möglichkeit, diese Kommunikationspfade zu konfigurieren, indem eine Richtlinie für die Kommunikation erstellt wird.

Ein Service-Mesh-Instrument stellt die Dienste und leitet den Kommunikationsverkehr entsprechend einer vorgegebenen Konfiguration. Das bedeutet, dass ein Administrator, anstatt einen laufenden Container zu konfigurieren (oder Code dafür zu schreiben), dem Service-Mesh eine Konfiguration zur Verfügung stellen kann und dieser die Arbeit überlässt. Dies musste bisher immer mithilfe von Webservern und Service-to-Service-Kommunikation geschehen.

Die häufigste Möglichkeit, dies in einem Cluster zu tun, ist die Verwendung des Sidecar-Musters. Ein Sidecar ist ein neuer Container im Inneren der Kapsel, der den Kommunikationsverkehr zwischen Diensten und Containern leitet und beobachtet.

Istio und Kubernetes

Wie bereits erwähnt, setzt Istio auf Kubernetes auf und fügt Container hinzu, die für den Programmierer und Administrator im Wesentlichen unsichtbar sind. Als „Sidecar“-Container bezeichnet, fungieren diese als „Mittelmann“, der den Verkehr dirigiert und die Wechselwirkungen zwischen den Komponenten überwacht. Die beiden arbeiten in Kombination auf drei Arten: Konfiguration, Überwachung und Verwaltung.

Konfiguration

Die primäre Methode zum Einstellen der Konfiguration mit Kubernetes ist der Befehl kubectl, üblicherweise "kubectl -f <filename">", wobei die Datei eine YAML-Datei ist. Istio-Benutzer können entweder neue und verschiedene Typen von YAML-Dateien mit kubectl ausführen oder den neuen, optionalen ioctl-Befehl verwenden.

Überwachung

Mit Istio können Sie den Zustand Ihrer Anwendungen, die mit Kubernetes laufen, leicht überwachen. Die Instrumentierung von istio kann die Gesundheit von Anwendungen verwalten und visualisieren. Sie bietet mehr Einblick als nur die allgemeine Überwachung von Cluster und Knoten, die Kubernetes bereitstellt.

Management

Denn die Schnittstelle für Istio ist im Wesentlichen dieselbe wie Kubernetes, ihre Verwaltung erfordert kaum zusätzliche Arbeit. Tatsächlich ermöglicht Istio dem Benutzer die Erstellung von Richtlinien, die sich auf den gesamten Kubernetes-Cluster auswirken und diesen verwalten, was die Zeit für die Verwaltung jedes einzelnen Clusters reduziert und gleichzeitig auf benutzerdefinierten Verwaltungscode verzichtet.

Vorteile

Zu den wichtigsten Vorteilen eines Service-Netzes gehören Funktionen für verbessertes Debugging, Überwachung, Routing, Sicherheit und Leverage. Das heißt, mit Istio wird es mit weniger Aufwand möglich sein, eine größere Gruppe von Diensten zu verwalten.

Verbessertes Debugging

Angenommen, ein Service hat mehrere Abhängigkeiten. Der Service „pay_claim“ bei einer Versicherungsgesellschaft ruft den Service „deductible_amt“ auf, der den Service „is_member_covered“ aufruft, und so weiter. Eine komplexe Abhängigkeitskette hat möglicherweise 10 oder 12 Serviceaufrufe. Wenn einer dieser 12 ausfällt, gibt es eine Reihe von Ausfällen, die in einer Art von 500 Fehlern, 400 Fehlern oder möglicherweise gar keiner Reaktion resultieren.

Um diesen Satz von Aufrufen zu debuggen, können Sie so etwas wie ein Stack-Tracing verwenden. Am Frontend können Client-Entwickler sehen, welche Elemente in welcher Reihenfolge von Web-Servern zurückgezogen werden, und diese untersuchen. Frontend-Programmierer können ein Wasserfalldiagramm zur Unterstützung beim Debugging abrufen.

Was das Beispiel nicht zeigt, ist, was innerhalb des Rechenzentrums geschieht - wie callback =parselLotamaAudiences vier andere Webdienste aufruft und welche davon langsamer reagieren. Später werden wir sehen, wie Istio Werkzeuge zur Nachverfolgung von Funktionsaufrufen in einem Diagramm bereitstellt, das ähnlich wie dieses funktioniert.

Überwachung und Beobachtbarkeit

DevOps-Teams und die IT-Administration können den Datenverkehr beobachten, um Latenzzeiten, Betriebszeiten, Fehler als Prozentsatz des Datenverkehrs usw. zu sehen. Oft wollen sie ein Dashboard sehen. Ein Dashboard bietet eine Visualisierung der Summe oder des Durchschnitts oder dieser Metriken über einen bestimmten Zeitraum - möglicherweise mit der Möglichkeit, bis zu einem bestimmten Knoten, Dienst oder Pod „nachzubohren“. Kubernetes stellt diese Funktionalität nicht nativ zur Verfügung.

Richtlinie

Standardmäßig erlaubt Kubernetes jedem Pod, Datenverkehr an jeden anderen Pod zu senden. Mit Istio können Administratoren eine Richtlinie erstellen, um einzuschränken, welche Dienste miteinander arbeiten können. So können Services beispielsweise nur andere Services aufrufen, die wahre Abhängigkeiten sind. Eine weitere Richtlinie zur Aufrechterhaltung der Dienste ist eine Ratenbegrenzung, die verhindert, dass überschüssiger Verkehr einen Dienst verstopft, und Denial-of-Service-Angriffe verhindert.

Routing und Lastausgleich

Standardmäßig stellt Kubernetes „Round-Robin“-Lastenverteilung bereit. Wenn es sechs Pods gibt, die einen Mikrodienst bereitstellen, stellt Kubernetes einen Lastenausgleicher oder Service zur Verfügung, der Anfragen an jeden Pod in aufsteigender Reihenfolge sendet, und dann wieder von vorne beginnt. Manchmal implementieren Unternehmen aber auch verschiedene Versionen des gleichen Service in der Produktion.

Das einfachste Beispiel hierfür kann eine blaue/grüne Implementierung sein. In diesem Fall könnte die Software eine völlig neue Version der Anwendung in der Produktion erstellen, ohne produktive Benutzer dorthin zu schicken. Nach „Bewerbung“ der neuen Version kann das Unternehmen die alten Server beibehalten, um im Falle eines Versagens schnell darauf zurückgreifen zu können.

Mit Istio ist dies so einfach wie die Verwendung von Tagging in einer Konfigurationsdatei. Administratoren können auch Labels verwenden, um anzugeben, mit welcher Art von Dienst eine Verbindung hergestellt werden soll, und Regeln auf der Grundlage von Überschriften erstellen. So können zum Beispiel Beta-Nutzer mit dem neuesten und besten Build zu einem „Canary“-Pod gelangen, während regelmäßige Nutzer zum stabilen Produktions-Build gehen.

Kurzschluss

Wenn ein Dienst überlastet oder ausgefallen ist, schlagen zusätzliche Anfragen fehl, während die Systemüberlastung weiterhin andauert. Da Istio Fehler und Verzögerungen verfolgt, kann es eine Pause erzwingen, die es einem Dienst erlaubt, sich nach einer bestimmten Anzahl von Anfragen, die in der Richtlinie festgelegt sind, zu erholen. Sie können diese Richtlinie über den gesamten Cluster durchsetzen, indem Sie eine kleine Textdatei erstellen und Istio anweisen, diese als Richtlinie zu nutzen.

Sicherheit

Istio bietet standardmäßig Identität, Richtlinien und Verschlüsselung sowie Authentifizierung, Autorisierung und Prüfung (AAA). Alle verwalteten Pods, die mit anderen kommunizieren, nutzen verschlüsselten Datenverkehr, der jegliche Beobachtung verhindert. Der Identitätsdienst in Verbindung mit der Verschlüsselung stellt sicher, dass kein unbefugter Benutzer einen Dienstaufruf vortäuschen oder fälschen kann. AAA bietet Sicherheits- und Betriebsexperten die Werkzeuge, die sie zur Überwachung benötigen - und das mit weniger Aufwand.

Vereinfachte Verwaltung

Traditionelle Anwendungen benötigen immer noch die Funktionen, die Istio bietet, sowie die Sicherheitsfunktionen, die von Istio angeboten werden. Das führt dazu, dass Programmierer und Administratoren auf der falschen Abstraktionsebene arbeiten und für jeden Dienst immer wieder die gleichen Sicherheitsregeln neu implementieren. Istio ermöglicht es ihnen, auf der richtigen Ebene zu arbeiten. Dabei wird die Richtlinie für den Cluster über ein einziges Bedienungsfeld festgelegt. Gleichzeitig können Sie mit den unten beschriebenen Zugriffskontrollen, Dashboards und Debugging-Werkzeugen von Istio leicht ein Plugin direkt auf der Befehlszeile hinzufügen, anstatt eine Webseite aufzurufen.

Beispiele

Services visualisieren

Istio 1.1 enthält ein neues Add-on  namens Kiali  , das eine webbasierte Visualisierung bereitstellt. Sie können es verwenden, um Serviceanfragen zu verfolgen, in Details zu „bohren“ oder sogar die Historie der Serviceanfrage als JSON zu exportieren, um sie auf Ihre eigene Weise abzufragen und zu formatieren. Das nachstehende Arbeitsbelastungsdiagramm bietet ein in Echtzeit generiertes Abhängigkeitsdiagramm auf der Grundlage der Dienste, die voneinander abhängen. Es wird aus tatsächlichen Beobachtungen des Verkehrs generiert.

Bild des neuen Add-ons "Kiali", das eine webbasierte Visualisierung bereitstellt

Nachverfolgen von Service-Aufrufen

Der Jaeger-Service, eine Komponente von Istio, stellt die Trace-Erstellung für jeden beliebigen Service bereit. In diesem Beispiel haben wir die Produktseite verfolgt. Jeder Punkt im ersten Bild steht für einen Serviceaufruf. Wenn wir auf einen Punkt klicken, können wir tiefer in das Wasserfalldiagramm eindringen, um die genauen Leistungsanforderungen und Antworten zu verfolgen.

Bild von The Jaeger Service, eine Komponente von Istio, die die Traceerstellung für jeden beliebigen Service ermöglicht.  In diesem Beispiel haben wir die Produktseite verfolgt.  Jeder Punkt in der ersten Abbildung stellt einen Serviceaufruf dar.

Wir können auch die Produktseite genauer unter die Lupe nehmen. Wir können sehen, dass die Fehler auf der Produktseite selbst liegen; Details wurden erfolgreich zurückgesandt.

Bild der Produktseite.  Wir können sehen, dass die Fehler auf der Produktseite selbst liegen; Details wurden erfolgreich zurückgesandt.

Dashboards

Istio ist mit vielen Dashboards (aus der Box) zur Überwachung der Systemgesundheit und -leistung ausgestattet. Diese können die CPU- und die Speicherauslastung, die Verkehrsnachfrage, die Anzahl der 400-und 500-Fehler, die Zeit zum Abarbeiten von Anfragen und v.a.m. messen. Das Beste von allem ist, dass sie durch einfache Installation und Ausführung von Istio und Hinzufügen von Grafana, einem der mitgelieferten Open-Source-Dashboard-Tools für Istio, verfügbar sind. Istio bietet noch zwei weitere Dashboards: Kiali und Jaeger.

Bild der vielen Dashboards von Istio (ohne Vorbereitungs- oder Anpassungsaufwand) zur Überwachung des Systemzustands und der Leistung.

Istio vs. Envoy

Istio verwendet für die Überwachung, Verwaltung und Protokollierung eine, wenn auch stark erweiterte, Version von Envoy. Jeder Pod muss nachverfolgt werden, und Istio muss aggregieren und Informationen über alle Pods bereitstellen. Eine mögliche Alternative zur Verwendung von Istio wäre es, Envoy direkt im Kubernetes-Cluster einzusetzen und Verwaltungscode zu schreiben. Obwohl dies, wenn man darüber nachdenkt, im Wesentlichen eine Neudefinition von Istio ist - mit all den damit verbundenen Kosten und Mängeln eines kundenspezifischen Entwicklungsprojekts.

Tutorials

Die Istio-Website (Link befindet sich außerhalb von IBM) enthält viele hilfreiche Dokumentationen und Anleitungen zum Einstieg in Istio. 

Istio und IBM

Managed Istio ist als Teil von IBM Cloud   Kubernetes-Service verfügbar. Der Service bietet nahtlose Installation von Istio, automatische Updates und Lifecycle-Management für Komponenten der Steuerebene und Integration mit Tools für die Plattformprotokollierung und -überwachung. Fügen Sie die verwaltete Istio-Integration zu Ihren neuen oder bestehenden Clustern hinzu und übernehmen Sie noch heute wieder die Kontrolle über Ihre Mikrodienste. Wenn Sie daran interessiert sind, Knative zu erkunden, lesen Sie „Knative: An Essential Guide“.

Erfahren Sie mehr über Managed Istio auf IBM Cloud Kubernetes Service

Eine Übersicht darüber, wie das gemanagte Kubernetes Ihnen auf Ihrer Cloud-Journey helfen kann, finden Sie in unserem Video: „Advantages of Managed Kubernetes“:

Weitere Informationen zu Best Practices  zur Aktivierung und Beschleunigung der Containerimplementierung in Produktionsumgebungen finden Sie im Bericht „Best Practices for Running Containers and Kubernetes in Production“.

Erfahren Sie in dem praktischen Leitfaden "Istio Explained: Getting Started with Service Mesh" (PDF, 4,1 MB), wie Servicenetze Ihnen bei der Steuerung von Interaktionen zwischen den Services in Ihrer Anwendung helfen können.

Wenn Sie heute mit der IBM Cloud beginnen möchten, melden Sie sich hier an.