Was ist Istio?
Istio ist ein auf Open Source basierendes Service Mesh, das steuert, wie Microservices Daten miteinander teilen. Es ergänzt und erweitert Kubernetes, um den Datenverkehr zu kontrollieren, Richtlinien durchzusetzen und die Kommunikation in einer Microservices-Umgebung zu überwachen. Istio umfasst APIs, mit denen sich die Lösung in beliebige Protokollierungsplattformen sowie Telemetrie- oder Richtliniensysteme integrieren lässt. Istio kann in vielen verschiedenen Umgebungen ausgeführt werden, ob On-Premise, in der Cloud, containerisiert oder virtualisiert.
Microservices-Architekturen teilen die Arbeit von Unternehmensanwendungen in modulare Services auf, was die Skalierung und Wartung erleichtern kann. Nimmt eine Unternehmensanwendung, die auf einer Microservices-Architektur aufbaut, an Größe und Komplexität zu, wird es schwieriger, sie zu überwachen und zu verwalten. Service Mesh kann Architekturprobleme lösen, indem es den Datenverkehr zwischen Services erfasst oder abfängt und Anfragen an andere Services ändert, umleitet oder neu erstellt.
Istio-Komponenten und -Architektur
Die Architektur von Istio besteht aus einer Data Plane und einer Control Plane. Istio verwendet Envoy Proxies. Dabei handelt es sich um hochleistungsfähige Proxies, die Datenverkehr für jeden Service innerhalb des Service Mesh vermitteln. In der Data Plane können Entwicklerinnen und Entwickler einem Service Istio-Support hinzufügen, indem sie einen Sidecar Proxy innerhalb der Umgebung bereitstellen. Diese Sidecar Proxies befinden sich neben Microservices und leiten Anfragen von anderen Proxies und an andere Proxies weiter. Diese Proxies bilden zusammen ein Mesh-Netzwerk, das die Netzwerkkommunikation zwischen Microservices abhört. Die Control Plane managt und konfiguriert Proxies für die Weiterleitung des Datenverkehrs. Außerdem konfiguriert sie Komponenten dafür, Richtlinien durchzusetzen und Telemetriedaten zu erfassen.
Red Hat Ressourcen
Wichtige Features von Istio
Datenverkehrsmanagement
Istio bietet eine fein abgestufte Steuerung des Datenverkehrsflusses zwischen Services. Es verfügt über fortschrittliche Funktionen für das Routing des Datenverkehrs, einschließlich der Unterstützung verschiedener Test- und Deployment-Methoden, wie:
- A/B-Tests, bei denen 2 Releases miteinander verglichen werden.
- Canary Deployment bedeutet das Release eines kleineren Test-Deployments.
- Blue/Green Deployment bedeutet, dass 2 getrennte, identische Umgebungen erstellt werden, um Ausfallzeiten zu verringern und Risiken zu minimieren.
Istio übernimmt auch das Load Balancing zwischen den Serviceinstanzen. Das heißt, dass bei Istio der von einem Service ausgehende Datenverkehr von seinem Sidecar Proxy abgefangen wird. Der Proxy leitet die Anfrage auf der Grundlage der in der Control Plane definierten Routing-Regeln an das jeweilige Ziel weiter.
Service Discovery und Resilienz
Istio umfasst Funktionen zur automatischen Erkennung von Services im Mesh. Es kann Fault Injection-Tests durchführen, um Fehlerszenarien zu simulieren und zu beurteilen, wie sich ein System unter ungewöhnlichen Bedingungen verhält. Istio verfügt über Resilienzmechanismen wie Wiederholungen, Timeouts und Circuit Breaking. Die Control Plane verfolgt die Serviceinstanzen und ihre Standorte. Wenn eine neue Serviceinstanz gestartet wird, wird sie bei der Control Plane registriert.
Beobachtbarkeit und Erweiterbarkeit
Istio sorgt für Beobachtbarkeit und Erweiterbarkeit. Es bietet Distributed Tracing durch Integrationen mit Tools wie Jaeger oder Zipkin sowie Metriken und Telemetrie mit Prometheus. Es enthält detaillierte Service Level Dashboards zur Visualisierung der Kommunikation zwischen den Services. Sidecar Proxies sammeln Metriken wie die Anzahl der Anfragen, Latenzzeiten und Fehlerraten und senden sie an die Control Plane oder an Überwachungstools. Istio kann mit externen Systemen wie Überwachungstools, Protokollierungssystemen und benutzerdefinierten Richtlinien-Engines integriert werden, wodurch neue Fähigkeiten und Funktionen zum Service Mesh hinzugefügt werden können.
Sicherheit und Durchsetzung von Richtlinien
Durch gegenseitige Authentifizierung der beiden Parteien bietet mTLS (Mutual Transport Layer Security) Datenschutz und Sicherheit zwischen 2 Anwendungen. In einem TLS-Modell erfolgt die Authentifizierung in eine Richtung – der Server authentifiziert den Client. Bei mTLS authentifizieren sich der Client und der Server bzw. die Website und der Webbrowser gegenseitig. Istio verwendet mTLS für die sichere Kommunikation von Service zu Service und nutzt außerdem RBAC (Role-based Access Control) und Richtlinien zur Sicherung von APIs. Darüber hinaus kommen Zertifikatsmanagement und automatische Schlüsselrotation zum Einsatz.
Istio zentralisiert die Konfiguration für Servicerichtlinien wie Quotas, Durchsatzbeschränkungen und Authentifizierung/Autorisierung. Dies ermöglicht Ihnen eine fein abgestimmte Kontrolle über Serviceinteraktionen durch Zugriffsrichtlinien. Richtlinien für Authentifizierung, Durchsatzbeschränkungen oder Zugriffskontrolle werden auf Proxy-Ebene durchgesetzt, wodurch die Konsistenz zwischen den Services gewährleistet wird.
Ambient-Modus
Istio enthält den Ambient-Modus, einen neuen Modus für die Data Plane, der manchmal auch als „Sidecar-less“ bezeichnet wird, weil Workload-Pods im Ambient-Modus keine Sidecar Proxies mehr benötigen, um Teil des Meshes zu sein. Im Ambient-Modus werden die Sidecar Proxies durch eine in die Infrastruktur integrierte Data Plane ersetzt, die die Zero Trust-Sicherheit, die Telemetrie und das Datenverkehrsmanagement von Istio aufrechterhält. Mit der Entfernung von Sidecars reduziert der Ambient-Modus auch die für die CPU erforderlichen Infrastrukturressourcen sowie den Speicherbedarf. Im normalen Modus von Istio kontaktiert der Envoy Proxy jeden Anwendungs-Pod, aber im Ambient-Modus bleiben die Anwendungs-Pods unberührt und verfügen über ihre eigenen Anwendungs-Container.
Use Cases und Beispiele für Istio und Service Mesh
Das Service Mesh von Istio kann zur Erfüllung verschiedener spezifischer Ziele und Aufgaben eingesetzt werden. Im Folgenden finden Sie eine Reihe von Use Cases für Istio und Beispiele dafür, wie Service Mesh ein Unternehmen beim Erreichen seiner Ziele unterstützen kann.
Kontrolle des Datenverkehrs bei Microservices
Eine große E-Commerce-Plattform bietet häufige Aktualisierungen ihrer Services an, wie Warenkorbfunktionen, Zahlungsoptionen und Warenbestand. Mit einem Service Mesh kann das Unternehmen neue Funktionen über Canary Deployments schrittweise für eine Untergruppe von Nutzenden einführen. Mit Blue/Green Deployments kann der Datenverkehr von der alten auf die neue Version verlagert werden, ohne dass es zu Ausfallzeiten oder Unterbrechungen für die Nutzenden kommt. A/B-Tests helfen dem Unternehmen, einen bestimmten Prozentsatz des Datenverkehrs an verschiedene Serviceversionen zu leiten.
Sichere Service to Service-Kommunikation
Ein Finanzdienstleistungsunternehmen verarbeitet sensible Benutzerdaten über mehrere Services hinweg, um Konten zu verwalten und betrügerische Aktivitäten aufzudecken. Mit Service Mesh kann mTLS für eine verbesserte Sicherheit zur Verschlüsselung der Kommunikation zwischen Services eingesetzt werden. Das Service Mesh bietet auch granulare RBAC für die Interaktion zwischen den Services.
Resilienz und Fehlertoleranz
Eine Videostreaming-Plattform möchte eine unterbrechungsfreie Wiedergabe sicherstellen, auch wenn ein bestimmter Service ausfällt oder langsam arbeitet. Die Verwendung eines Service Meshes bietet Circuit Breaking-Funktionen, um das Senden von Anfragen an ausgefallene Services automatisch zu beenden. Bei Wiederholungen mit exponentiellem Backoff werden fehlgeschlagene Anfragen auf intelligente Weise zur Wiederholung angewiesen. Service Mesh Load Balancing hilft bei der Verteilung des Datenverkehrs auf intakte Serviceinstanzen.
Beobachtbarkeit und Überwachung
Eine SaaS-Plattform (Software as a Service), die auf Kubernetes ausgeführt wird, muss Latenzprobleme bei Dutzenden von Microservices diagnostizieren. Ein Service Mesh ermöglicht Distributed Tracing, das es Entwicklungsteams erlaubt, Anfragen serviceübergreifend zu verfolgen. Außerdem bietet es Echtzeittelemetrie, einschließlich Fehlerraten und Datenverkehrsmuster.
API-Gateway-Integration
Ein API-Gateway wird verwendet, um Services für externe Clients zugänglich zu machen, während interne Services innerhalb des Meshes kommunizieren. Mit einem Service Mesh kann die Kommunikation zwischen internen Services gesichert werden, während der externe Datenverkehr durch das API-Gateway verläuft. Durch die einheitlich Anwendung von Richtlinien im Service Mesh können Unternehmen sicher sein, dass Regeln wie Durchsatzbeschränkungen für die internen Services einheitlich durchgesetzt werden.
Einhaltung gesetzlicher Vorschriften
Ein Gesundheitsdienstleister muss die Anforderungen des Health Insurance Portability and Accountability Act (HIPAA) für eine sichere Datenübertragung erfüllen. Mit einem Service Mesh kann der Dienstleister Verschlüsselungsstandards wie TLS durchsetzen. Service Mesh bietet auch detaillierte Auditprotokolle der Servicekommunikation für Compliance und Dokumentation.
Dynamische Umgebungen
Ein Spieleunternehmen skaliert seine Services häufig während der Hauptspielzeiten oder bei Werbeveranstaltungen. Ein Service Mesh kann Datenverkehr automatisch erkennen und zu neu erstellten Serviceinstanzen leiten. Auch bei Skalierungsvorgängen sorgt das Service Mesh für eine konsistente Performance.
Warum Red Hat OpenShift Service Mesh für Istio?
Red Hat® OpenShift® Service Mesh basiert auf dem Istio-Projekt und adressiert eine Vielzahl von Problemen und Use Cases in einer Microservices-Architektur, indem es einen zentralisierten Kontrollpunkt in einer Anwendung erstellt. OpenShift Service Mesh fügt eine transparente Schicht zu bestehenden verteilten Anwendungen hinzu, ohne dass dafür Änderungen am Anwendungscode erforderlich sind. Das Mesh bietet eine einfache Möglichkeit, ein Netzwerk aus bereitgestellten Services zu erstellen, das Discovery, Load Balancing, Service to Service-Authentifizierung, Fehlerbehebung, Metriken und Überwachung bietet.
Red Hat OpenShift Service Mesh ist getestet und für Red Hat OpenShift optimiert. Es bietet Kompatibilität mit OpenShift-spezifischen Features wie Operatoren und CI/CD-Pipelines (Continuous Integration/Continuous Delivery). Hinzu kommen der Red Hat Unternehmens-Support sowie regelmäßige Updates und Patches zur Wahrung der Sicherheit und Stabilität. Der Betrieb von OpenShift Service Mesh über zahlreiche Red Hat OpenShift Cluster hinweg schafft Konsistenz zwischen Hybrid Cloud- oder Multi Cloud-Umgebungen. Es erleichtert die Mandantenfähigkeit, sodass Unternehmen getrennte Service Meshes für verschiedene Teams oder Workloads verwalten können. Die enthaltenen Sicherheitsfunktionen aktivieren standardmäßig mTLS für alle Services und lassen sich für vertrauenswürdige Funktionen zur Authentifizierung und Autorisierung mit OAuth von Red Hat OpenShift integrieren.
Der offizielle Red Hat Blog
Lernen Sie mehr über unser Ökosystem von Kunden, Partnern und Communities und erfahren Sie das Neueste zu Themen wie Automatisierung, Hybrid Cloud, KI und mehr.