Suchen

Definition: Service Mesh, plattformunabhängig und quelloffen Was ist Istio?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Florian Karlstetter

Istio stellt ein offenes, plattformunabhängiges Service Mesh zur Verfügung, mit dem sich die Microservices verteilt arbeitender Cloud-native-Anwendungen komfortabel verwalten lassen. Zu den Kernfunktionen gehören das Traffic Management sowie Sicherheits-, Verbindungs- und Monitoring-Funktionen.

Service Mesh mit Istio: effizientes Microservice-Management für verteilte Cloud-native-Umgebungen.
Service Mesh mit Istio: effizientes Microservice-Management für verteilte Cloud-native-Umgebungen.
(Bild: gemeinfrei (geralt / pixabay) / Pixabay )

Istio steht für effizientes Microservice-Management für verteilte Cloud-native-Umgebungen Das Wort „Istio“ stammt ursprünglich aus dem Griechischen und bedeutet „Segel“. So handelt es sich bei Istio um eine plattformunabhängige, offene Software, mit der sich ein Service Mesh realisieren lässt. Der Begriff Service Mesh beschreibt dabei ein Netzwerk aus Microservices, das die Grundlage für Cloud-native-Anwendungen bildet. Istio stellt Funktionen wie Traffic Management, Sicherheits-, Verbindungs- und Monitoring-Funktionen zur Verfügung, um Microservices verteilt arbeitender Cloud-native-Anwendungen komfortabel zu verwalten und die Kommunikation zu steuern. Dadurch reduziert sich die Komplexität dieser Umgebungen und Microservice-Architekturen lassen sich effizient und sicher betreiben.

Istio geht auf Entwicklungsprojekte der Unternehmen Google, Lyft und IBM zurück, die sich zu einer Kooperation zusammengeschlossen haben. Die Software steht unter Apache License 2.0 und war ursprünglich für die Container-Orchestrierungslösung Kubernetes (K8s) vorgesehen. Die erste Version der Software erschien im Jahr 2018. Die aktuelle Version (Stand Juli 2019) ist Istio 1.1.11. Mittlerweile ist Istio auch mit Lösungen wie Nomad und Consul kompatibel. Unterstützte Kubernetes-Plattformen sind beispielsweise die Amazon Web Services (AWS), die Google Kubernetes Engine oder die IBM Cloud Kubernetes Services (IKS). Istio ist sowohl Cloud-basiert als auch on-premises nutzbar.

Die Motivation für Istio

Moderne Anwendungsarchitekturen arbeiten mehr und mehr mit Cloud- und Container-basierten Microservices. Es entsteht ein komplexes Geflecht aus Services, das die Laufzeitzumgebung für die Anwendungen bereitstellt. Nicht selten bestehen Cloud-native-Applikationen aus einer Sammlung von tausenden Microservices, die auf hybriden Cloud-Strukturen in vielen verschiedenen Containern oder virtuellen Maschinen betrieben werden. Die Verwaltung, Skalierung und Sicherung der vielen Services stellt eine Herausforderung dar und erfordert Tools, mit denen sich die wichtigsten Managementaufgaben komfortabel erledigen lassen.

Istio agiert als Service Mesh und bietet einen Rahmen zur Verbindung der verschiedenen Services Cloud-basierter Anwendungen. Es entsteht ein zentral managebares Servicesystem für die verteilten, Container-basierten Dienste. Die Logik muss nicht mehr aufwendig in einzelne Applikationen integriert werden, sondern ist mit Istio direkt nutzbar. Entwickler können sich auf die Business Logik ihrer Anwendung konzentrieren und müssen keine Lösungen für das Management und die Steuerung der Kommunikation der Microservices programmieren. Die Design-Ziele von Istio sind:

  • maximale Transparenz
  • einfache Erweiterbarkeit und Portabilität
  • Plattformunabhängigkeit
  • einheitliche Schnittstellen

Funktionsprinzip und Architektur von Istio

Istio unterteilt das Service Mesh in eine Data Plane und eine Control Plane. Innerhalb der Control Plane werden Proxies und Mixer konfiguriert und verwaltet. Aufgabe ist es, Verkehr zu routen, Policies zu überwachen und Telemetriedaten zu sammeln. Die Data Plane besteht aus einer Sammlung intelligenter Proxies (Envoy Proxies), die den Netzwerkverkehr zwischen den Microservices kontrollieren. Wichtige Architekturelemente von Istio sind:

  • Envoy Proxy
  • Mixer
  • Pilot
  • Citadel
  • Galley

Ein Envoy Proxy schaltet sich in die Kommunikation der Microservices ein. Er lässt sich auch nachträglich noch in Anwendungen integrieren, ohne die ursprünglichen Microservices zu verändern. Aufgaben des Envoy Proxies sind unter anderem Load Balancing, dynamisches Service Discovery, TLS-Terminierung, Health Checks oder Fault Injection. Die Microservices bekommen einen Envoy Proxy zugeteilt, der in der Regel direkt im Container des jeweiligen Services agiert. Sämtliche Kommunikation mit dem Service erfolgt über den Proxy. Die Proxies sind in der Lage, Antwortzeiten zu messen und die Anzahl der Requests oder die Menge der übertragenen Daten zu loggen. Der Envoy Proxy kommuniziert darüber hinaus mit dem Mixer und liefert diesem die gewonnenen Daten. Der Mixer sorgt für die Plattformunabhängigkeit des Service Meshs und sendet die Telemetriedaten an die Monitoring-Systeme. Der Pilot versorgt den Envoy Proxy mit den für das Service Discovery benötigten Informationen. Drüber hinaus konvertiert er High-Level-Routing-Vorgaben in durch den Envoy Proxy interpretierbare Konfigurationen und stellt sie diesem zur Verfügung. Citadel ermöglicht eine starke Service- und User-Authentifizierung. Bei Galley handelt es sich um die Istio-Komponente, die Konfigurationen aufnimmt, validiert, verarbeitet und verteilt. Sie sorgt in Bezug auf die Konfiguration für die Isolation der Istio-Komponenten von der zugrundeliegenden Plattform wie Kubernetes.

Die wichtigsten Funktionen von Istio

Für das Service Mesh bietet Istio ein Vielzahl an Funktionen. Zu den wichtigsten Funktionen zählt das Traffic Management. Istio entkoppelt die Verwaltung des Verkehrs von der Infrastruktur. Anfragen lassen sich durch das intelligente Zusammenspiel zwischen Envoy Proxies und Pilot dynamisch verteilen und Lasten ausgleichen. Weitere wichtige Kernfunktionen sind das Logging und das Monitoring. Istio sammelt alle für den Betrieb der Services benötigten Logging-, Tracing- und Monitoring-Informationen des Netzwerks. Die Leistung und der Verkehrsfluss der einzelnen Services lassen sich überwachen und Probleme schnell erkennen. Für einen vollständigen Überblick über das Service Mesh stehen benutzerdefinierte Dashboards zur Verfügung. Die Sicherheitsfunktionen von Istio stellen eine starke Authentifizierung der Services und Clients sicher. Die Authentifizierungsrichtlinien unterstützen eine rollenbasierte Zugriffssteuerung für die verschiedenen Ebenen des Service Meshs. Es lassen sich sowohl die Dienste untereinander als auch Dienste und Clients autorisieren. Ebenfalls integriert ist ein automatisiertes Schlüsselverwaltungssystem, das die Generierung, Zuteilung und Sperrung von Zertifikaten oder Schlüsseln organisiert. Entwickler müssen keine eigenen Sicherheits- oder Verschlüsselungsmechanismen implementieren, sondern können sich auf die Programmierung der Sicherheit auf Anwendungsebene konzentrieren.

Die Plattformunabhängigkeit von Istio

Eine der Designprinzipien von Istio ist die Plattformunabhängigkeit. Istio lässt sich in verschiedenen Umgebungen Cloud-basiert oder on-premises einsetzen. Unterstützt werden unter anderem Kubernetes, Mesos, Nomad und Consul sowie verschiedene Plattformen der Cloud Anbieter wie Amazon, Google oder IBM. Die Dienste des Service Meshs können in einzelnen virtuellen Maschinen, Containern oder auf dedizierten Servern betrieben werden.

Die Vorteile durch den Einsatz von Istio im Service Mesh kurz zusammengefasst

  • Schaffung einer ausfallsicheren und fehlertoleranten Microservice-Architektur
  • nahtlose Verbindung unterschiedlicher Microservices unabhängig von den verwendeten Plattformen und Anbietern
  • höhere Transparenz durch ein umfassendes und einheitliches Monitoring
  • dynamische Verkehrssteuerung und Load Balancing im Service Mesh
  • starke Authentifizierungsmechanismen für Services, Clients und User
  • rollenbasierte Zugriffssteuerung
  • Durchsetzung der Policies

(ID:46052901)

Über den Autor