Zu den Hauptvorteilen eines Servicenetzes gehören Funktionen für eine Verbesserung von Debugging, Überwachung, Routing, Sicherheit und Nutzung. Das bedeutet, dass es mit Istio weniger aufwändig ist, eine größere Gruppe von Services zu verwalten.
Verbessertes Debugging
Angenommen, dass ein Service mehrere Abhängigkeiten aufweist. Der Service „pay_claim“ bei einer Versicherungsgesellschaft ruft den Service „deductible_amt“ auf, der seinerseits den Service „is_member_covered“ aufruft, und so weiter. Eine komplexe Abhängigkeitskette enthält möglicherweise 10 oder 12 Serviceaufrufe. Wenn einer dieser 12 Aufrufe fehlschlägt, kommt es zu einer kaskadierenden Reihe von Ausfällen, die zu einer Art Fehler vom Typ 500 oder Typ 400 führen oder auf die möglicherweise überhaupt keine Reaktion erfolgt.
Zum Debuggen dieser Reihe von Aufrufen können Sie so etwas wie einen Stack-Trace verwenden. Am Front-End können clientseitige Entwickler sehen, welche Elemente in welcher Reihenfolge von Web-Servern zurückgezogen werden, und können diese anschließend untersuchen. Front-End-Programmierer können ein Wasserfalldiagramm erhalten, das bei der Fehlerbehebung hilft.
Was das Beispiel nicht zeigt, ist, sind die Abläufe innerhalb des Rechenzentrums, wie also durch „callback=parselLotamaAudiences“ vier weitere Web-services aufgerufen werden und welche davon langsamer reagieren. Später erfahren Sie, wie Istio Tools zur Verfolgung von Funktionsaufrufen in einem Diagramm ähnlich diesem bereitstellt.
Überwachung und Beobachtbarkeit
DevOps-Teams und die IT-Administration möchten gegebenenfalls den Datenverkehr beobachten, um sich über Latenz, Betriebszeit (Time-in-Service), Fehler als Prozentsatz des Datenverkehrs und so weiter zu informieren. Oft ist dazu die Anzeige eines Dashboards gewünscht. Ein Dashboard liefert eine Darstellung der Summe oder des Durchschnitts dieser Metriken im Zeitverlauf – eventuell mit der Möglichkeit, eine Drilldown-Operation bis zu einem bestimmten Knoten, Service oder Pod durchzuführen. Kubernetes stellt diese Funktionalität nicht nativ bereit.
Richtlinie
Standardmäßig erlaubt Kubernetes jedem Pod, Datenverkehr an jeden beliebigen anderen Pod zu senden. Mit Istio können Administratoren eine Richtlinie erstellen, um einzuschränken, welche Services miteinander arbeiten dürfen. So könnte beispielsweise konfiguriert werden, dass Services nur dann andere Services aufrufen dürfen, wenn es sich bei diesen um echte Abhängigkeiten handelt. Eine weitere Richtlinie zur Aufrechterhaltung der Funktion von Services ist eine Durchsatzbegrenzung (Ratenlimit), mit der das Verstopfen (Blockieren) eines Service durch übermäßigen Datenverkehr vermieden wird und die Denial-of-Service-Angriffe verhindert.
Routing und Lastausgleich
Standardmäßig bietet Kubernetes einen Lastausgleich im Umlaufverfahren. Wenn es sechs Pods gibt, die jeweils einen Microservice bereitstellen, stellt Kubernetes eine Einrichtung für den Lastausgleich oder einen „Service“ bereit, der in aufsteigender Reihenfolge Anforderungen an jeden Pod sendet und dann von vorne beginnt. Es kommt jedoch vor, dass ein Unternehmen unterschiedliche Versionen desselben Service im Produktionsbetrieb bereitstellt.
Das einfachste Beispiel hierfür ist eine Blau/Grün-Bereitstellung. In diesem Fall könnte die Software eine völlig neue Version der Anwendung im Produktionsbetrieb erstellen, ohne jedoch Produktionsbenutzer an sie zu senden. Nach der Hochstufung der neuen Version kann das Unternehmen die alten Server weiter nutzen, um im Falle einer Störung oder eines Ausfalls schnell wieder auf sie zurückgreifen zu können (Switchback).
Mit Istio ist dies so einfach wie die Kennzeichnung einer Konfigurationsdatei mit Tags. Administratoren können auch Kennzeichnungen verwenden, um anzugeben, zu welchem Typ von Service eine Verbindung hergestellt werden soll, und um Regeln auf der Grundlage von Kopfzeilen zu erstellen. So zum Beispiel können sich Beta-Benutzer zu einem „Canary“-Pod mit dem aktuellsten und umfangreichsten Build weiterleiten lassen, während reguläre Benutzer mit dem stabilen Produktionsbuild arbeiten.
Unterbrechung des Kreislaufs
Wenn ein Service überlastet oder inaktiv ist, schlagen zusätzliche Anforderungen fehl und überlasten das System so noch weiter. Da Istio Fehler und Verzögerungen überwacht und verfolgt, kann es nach einer bestimmten, per Richtlinie festgelegten Anzahl von Anforderungen eine Pause erzwingen, damit ein Service wiederhergestellt werden kann. Sie können diese Richtlinie im gesamten Cluster durchsetzen lassen, indem Sie Istio mithilfe einer kleinen Textdatei anweisen, sie als neue Richtlinie zu nutzen.
Sicherheit
Istio bietet standardmäßig Identitäts-, Richtlinien- und Verschlüsselungsfunktionen sowie Services für die Authentifizierung, die Autorisierung und für Audits (kurz AAA). Für alle verwalteten Pods, die mit anderen Pods kommunizieren, erfolgt der Datenverkehr verschlüsselt, wodurch jegliche Beobachtung verhindert wird. Der kombinierte Einsatz von Identitätsservice und Verschlüsselung stellt sicher, dass nicht berechtigte Benutzer keine Serviceaufrufe vortäuschen oder fälschen können (Spoofing). AAA bietet Sicherheits- und Betriebsexperten die Tools, die sie für die Überwachung benötigen, und das bei geringerem Systemaufwand.
Vereinfachte Administration
Traditionelle Anwendungen erfordern immer noch die Identifizierungs-, Richtlinien- und Sicherheitsfunktionen, die Istio bietet. Das hat zur Folge, dass Programmierer und Administratoren auf der falschen Abstraktionsebene arbeiten und dieselben Sicherheitsregeln für jeden Service wieder und wieder implementieren müssen. Istio ermöglicht ihnen, auf der richtigen Ebene zu arbeiten und die Richtlinie(n) für den Cluster über eine Steuerkonsole festzulegen.