{"id":54208,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/seriya-postov-po-istio-service-mesh"},"modified":"2020-02-18T14:02:12","modified_gmt":"2020-02-18T11:02:12","slug":"seriya-postov-po-istio-service-mesh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","title":{"rendered":"Serienbeitr\u00e4ge zum Istio Service Mesh","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Wir beginnen eine Reihe von Beitr\u00e4gen, in denen wir einige der vielen M\u00f6glichkeiten des Istio Service Mesh in Verbindung mit Red Hat OpenShift und Kubernetes demonstrieren.<\/p>\n<p><img decoding=\"async\" alt=\"Serienbeitr\u00e4ge zum Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/b7cc06e1451763db78fdf84764af4b69.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTeil eins, heute: <\/p>\n<ul>\n<li>Wir erkl\u00e4ren das Konzept der Sidecar-Container in Kubernetes und formulieren das Leitmotiv dieser Beitragsreihe: <b>\u201eSie m\u00fcssen nichts an Ihrem Code \u00e4ndern\u201c<\/b>.<\/li>\n<li>Wir stellen das grundlegende Element von Istio vor \u2013 die Routing-Regeln. Auf diesen basieren alle anderen M\u00f6glichkeiten von Istio, da die Regeln es erm\u00f6glichen, den Traffic zu Microservices zu lenken, indem externe YAML-Dateien der Services verwendet werden. Au\u00dferdem betrachten wir das Schema f\u00fcr Canary Deployment. Als Neujahrsbonus gibt es 10 interaktive Sitzungen zu Istio.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nTeil zwei, der bald erscheint, wird Ihnen erz\u00e4hlen: <\/p>\n<ul>\n<li>Wie Istio Pool Ejection in Kombination mit Circuit Breaker umsetzt und demonstriert, wie Istio in der Lage ist, nicht funktionierende oder schlecht funktionierende Pods aus dem Load-Balancing-Schema zu entfernen.<\/li>\n<li>Au\u00dferdem werden wir das Thema Circuit Breaker aus dem ersten Post betrachten, um zu sehen, wie wir dabei Istio nutzen k\u00f6nnen. Wir zeigen, wie man den Verkehr ohne jegliche \u00c4nderungen am Code der Services mit YAML-Konfigurationsdateien und Terminalbefehlen routiert und Netzwerfehler behandelt.<\/li>\n<\/ul>\n<p>\nTeil drei: <\/p>\n<ul>\n<li>Ein Bericht \u00fcber das Tracing und Monitoring, die bereits in Istio integriert oder leicht hinzuzuf\u00fcgen sind. Wir zeigen, wie man Tools wie Prometheus, Jaeger und Grafana in Kombination mit OpenShift-Skalierung einsetzt, um die Verwaltung der Microservice-Architektur m\u00fchelos zu gestalten.<\/li>\n<li>Wir gehen von Monitoring und Fehlerbehandlung dazu \u00fcber, Fehler absichtlich ins System einzuf\u00fcgen. Mit anderen Worten, wir lernen, Fault Injection vorzunehmen, ohne den Quellcode zu \u00e4ndern, was aus Testgr\u00fcnden sehr wichtig ist \u2013 denn wenn wir den Code daf\u00fcr \u00e4ndern, besteht das Risiko, zus\u00e4tzliche Fehler einzuf\u00fchren.<\/li>\n<\/ul>\n<p>\nSchlie\u00dflich im letzten Post zum Istio Service Mesh:<\/p>\n<ul>\n<li>Lass uns zur Dark Side \u00fcbergehen. Genauer gesagt, lernen wir, wie man das Dark Launch-Schema verwendet, bei dem der Code bereitgestellt und direkt mit Produktionsdaten getestet wird, ohne den Betrieb des Systems zu beeintr\u00e4chtigen. Hier kommt die F\u00e4higkeit von Istio, den Traffic zu steuern, sehr gelegen. Die M\u00f6glichkeit, Tests mit echten Produktionsdaten durchzuf\u00fchren, ohne den Betrieb des Live-Systems zu beeinflussen, ist der \u00fcberzeugendste Weg, um sicherzustellen, dass alles funktioniert.<\/li>\n<li>Aufbauend auf Dark Launch zeigen wir, wie man das Canary Deployment-Modell anwendet, um Risiken zu reduzieren und die Einf\u00fchrung neuen Codes zu erleichtern. An sich ist das Canary Deployment l\u00e4ngst keine Neuheit mehr, aber Istio erm\u00f6glicht es, dieses Schema einfach mit nicht komplizierten YAML-Dateien umzusetzen.<\/li>\n<li>Abschlie\u00dfend zeigen wir, wie man mit Istio Egress externen Services Zugang gew\u00e4hrt, damit die Funktionen von Istio beim Arbeiten mit dem Internet genutzt werden k\u00f6nnen.<\/li>\n<\/ul>\n<p>\nAlso, los geht's...<\/p>\n<p><b>Das Monitoring- und Management-Toolkit von Istio \u2013 alles, was ben\u00f6tigt wird, um Mikrodienste im Service Mesh zu koordinieren. <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">Service Mesh<\/a><\/noindex>.<\/b><\/p>\n<h3>Was ist das Service Mesh Istio?<\/h3>\n<p>\nDas Servicenetzwerk bietet f\u00fcr Gruppen von Diensten Funktionen wie Traffic-\u00dcberwachung, Zugriffskontrolle, Erkennung, Sicherheit, Ausfallsicherheit und andere n\u00fctzliche Aspekte. Istio erm\u00f6glicht all dies ohne geringste \u00c4nderungen am Code der Dienste selbst. Was ist das Geheimnis dieser Magie? Istio verbindet jeden Dienst mit einem Proxy in Form eines Sidecar-Containers, wodurch der gesamte Datenverkehr zu diesem Dienst \u00fcber den Proxy geleitet wird, der gem\u00e4\u00df den festgelegten Richtlinien entscheidet, wie, wann und ob dieser Verkehr \u00fcberhaupt zum Dienst gelangen soll. Istio erm\u00f6glicht zudem die Umsetzung fortgeschrittener DevOps-Techniken wie Canary Deployments, Circuit Breakers, Fehlerinjektion und viele weitere.<\/p>\n<h3>Wie Istio mit Containern und Kubernetes arbeitet<\/h3>\n<p>\nDas Istio-Service-Netzwerk ist eine Sidecar-Implementierung von allem, was erforderlich ist, um Microservices zu erstellen und zu verwalten: Monitoring, Tracing, Circuit Breakers, Routing, Lastverteilung, Fehlereinf\u00fchrung, Wiederholungen, Zeit\u00fcberschreitungen, Spiegelungen, Zugriffskontrolle, Drosselung und vieles mehr. Und obwohl es heute zahlreiche Bibliotheken gibt, um diese Funktionen direkt im Code zu implementieren, k\u00f6nnen Sie mit Istio alles das Gleiche erreichen, ohne Ihren Code zu \u00e4ndern.<\/p>\n<p>Gem\u00e4\u00df dem Sidecar-Modell wird Istio in einem Linux-Container ausgef\u00fchrt, der sich in einem <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex>-Pod mit dem kontrollierten Service befindet und Funktionalit\u00e4t und Informationen gem\u00e4\u00df der vorgegebenen Konfiguration injiziert (inject) und extrahiert (extract). Betonen wir, dass dies Ihre eigene Konfiguration ist, und sie lebt au\u00dferhalb Ihres Codes. Dadurch wird der Code erheblich einfacher und k\u00fcrzer.<\/p>\n<p>Es ist wichtig zu beachten, dass die operationale Komponente von Mikrodiensten nicht direkt mit dem Code verbunden ist, was bedeutet, dass deren Betrieb an IT-Spezialisten abgegeben werden kann. Warum sollte ein Entwickler f\u00fcr Circuit Breaker und Fault Injection verantwortlich sein? Reagieren \u2013 ja, aber deren Bearbeitung und Erstellung? Wenn all dies aus dem Code entfernt wird, k\u00f6nnen Programmierer sich vollst\u00e4ndig auf die Anwendungsfunktionen konzentrieren. Au\u00dferdem wird der Code k\u00fcrzer und einfacher.<\/p>\n<h3>Service Mesh<\/h3>\n<p>\nIstio, das Funktionen zur Verwaltung von Mikrodiensten au\u00dferhalb ihres Codes bereitstellt \u2013 das ist das Konzept des Service Mesh. Mit anderen Worten, es handelt sich um eine koordinierte Gruppe von einem oder mehreren Bin\u00e4rdateien, die ein Netzwerk von Funktionen bilden.<\/p>\n<h3>Wie Istio mit Mikrodiensten arbeitet<\/h3>\n<p>\nSo funktioniert die Arbeit der Sidecar-Container in Verbindung mit <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.org\/minishift\/\">Minishift<\/a><\/noindex> aus der Vogelperspektive: Sie starten eine Instanz von Minishift, erstellen ein Projekt f\u00fcr Istio (nennen wir es \u00abistio-system\u00bb), installieren und starten alle mit Istio verbundenen Komponenten. Dann, w\u00e4hrend Sie Projekte und Pods erstellen, f\u00fcgen Sie Konfigurationsinformationen zu Ihren Deployments hinzu, und Ihre Pods beginnen, Istio zu nutzen. Vereinfacht sieht das Diagramm so aus:<\/p>\n<p><img decoding=\"async\" alt=\"Serienbeitr\u00e4ge zum Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/feb36ba35442307a8136c395ccae4fd2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Jetzt k\u00f6nnen Sie die Einstellungen von Istio \u00e4ndern, um zum Beispiel Fault Injection, Unterst\u00fctzung <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/blog\/2017\/0.1-canary.html\">Canary Deployment<\/a><\/noindex> oder andere Funktionen von Istio zu implementieren \u2013 und das alles ohne den Code der Anwendungen selbst zu ber\u00fchren. Angenommen, Sie m\u00f6chten den gesamten Webverkehr von den Nutzern Ihres gr\u00f6\u00dften Kunden (Foo Corporation) auf die neue Version der Website umleiten. Dazu m\u00fcssen Sie nur eine Istio-Routingregel erstellen, die nach @foocorporation.com in der Benutzer-ID sucht und die entsprechende Umleitung durchf\u00fchrt. F\u00fcr alle anderen Benutzer \u00e4ndert sich nichts. W\u00e4hrenddessen k\u00f6nnen Sie in Ruhe die neue Version der Website testen. Und beachten Sie, dass hierf\u00fcr keine Entwickler eingebunden werden m\u00fcssen.<\/p>\n<h3>Und muss man daf\u00fcr viel bezahlen?<\/h3>\n<p>\nKeineswegs. Istio funktioniert ziemlich schnell, es ist geschrieben in <noindex><a rel=\"nofollow\" href=\"https:\/\/golang.org\/\">Go<\/a><\/noindex> und erzeugt nur einen minimalen Overhead. Au\u00dferdem wird der m\u00f6gliche Verlust an Online-Performance durch die steigende Produktivit\u00e4t der Entwickler ausgeglichen. Zumindest in der Theorie: Vergessen Sie nicht, dass die Arbeitszeit der Entwickler teuer ist. Was die Softwarekosten betrifft, so ist Istio eine Open-Source-Software, die kostenlos bezogen und verwendet werden kann.<\/p>\n<h3>Lernen Sie selbst<\/h3>\n<p>\nDas Team der Red Hat Developer Experience Team hat einen vertieften praktischen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">die Richtlinien<\/a><\/noindex> Kurs zu Istio (in Englisch) entwickelt. Er l\u00e4uft unter Linux, MacOS und Windows, und der Code ist in Varianten f\u00fcr Java und Node.js verf\u00fcgbar.<\/p>\n<h3>10 interaktive Lektionen zu Istio<\/h3>\n<p><\/p>\n<h4>Block 1 \u2013 F\u00fcr Einsteiger<\/h4>\n<p>\n<b>Einf\u00fchrung in Istio<\/b><br \/>\n30 Minuten <br \/>\nLernen Sie das Service Mesh kennen und erfahren Sie, wie man Istio in einem Kubernetes-Cluster auf OpenShift installiert.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/istio-introduction\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Bereitstellung von Mikrodiensten in Istio<\/b><br \/>\n30 Minuten<br \/>\nWir verwenden Istio, um drei Mikrodienste mit Spring Boot und Vert.x bereitzustellen.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/deploy-microservices\/\">Starten<\/a><\/noindex> <\/p>\n<h4>Block 2 \u2013 Fortgeschrittene <\/h4>\n<p>\n<b>\u00dcberwachung und Tracing in Istio<\/b><br \/>\n60 Minuten <br \/>\nWir lernen die integrierten \u00dcberwachungsfunktionen von Istio kennen, konfigurieren Metriken sowie OpenTracing \u00fcber Prometheus und Grafana.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/monitoring-tracing\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Einfache Routen in Istio<\/b><br \/>\n60 Minuten <br \/>\nWir lernen, wie man das Routing in Istio mit einfachen Regeln verwaltet.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/simple-route-rules\/\">Starten <\/a><\/noindex><\/p>\n<p><b>Erweiterte Routing-Regeln<\/b><br \/>\n60 Minuten <br \/>\nLernen Sie intelligente Routing-Methoden in Istio kennen, einschlie\u00dflich Zugangskontrolle, Lastverteilung und Geschwindigkeitsbegrenzung.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/advanced-routerules\/\">Starten<\/a><\/noindex> <\/p>\n<h4>Block 3 \u2013 erfahrener Benutzer<\/h4>\n<p>\n<b>Fault Injection in Istio<\/b><br \/>\n60 Minuten <br \/>\nWir untersuchen Szenarien zur Fehlerbehandlung in verteilten Anwendungen, indem wir HTTP-Fehler und Netzwerkverz\u00f6gerungen erzeugen und Chaos Engineering anwenden, um die Umgebung wiederherzustellen.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/fault-injection\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Circuit Breaker in Istio<\/b><br \/>\n30 Minuten <br \/>\nWir installieren Siege f\u00fcr Lasttests von Websites und lernen, die Ausfallsicherheit des Backends mit Wiederholungen, Circuit Breakern und Pool-Ejection zu gew\u00e4hrleisten.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/circuit-breaker\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Egress und Istio<\/b><br \/>\n10 Minuten <br \/>\nWir verwenden Egress-Routen, um Interaktionsregeln zwischen internen Diensten und externen APIs und Diensten zu erstellen.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/egress\/\">Starten<\/a><\/noindex> <\/p>\n<p><b>Istio und Kiali<\/b><br \/>\n15 Minuten <br \/>\nWir lernen, Kiali zu nutzen, um einen Gesamt\u00fcberblick \u00fcber das Service Mesh zu erhalten und Anfragen sowie Datenfl\u00fcsse zu analysieren.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/observe-kiali\/\">Starten<\/a><\/noindex> <\/p>\n<p>Mutual TLS in Istio<br \/>\n15 Minuten <br \/>\nWir erstellen ein Istio Gateway und einen VirtualService und untersuchen dann ausf\u00fchrlich Mutual TLS (mTLS) und seine Konfigurationen.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/courses\/service-mesh\/mtls\/\">Starten<\/a><\/noindex> <\/p>\n<h4>Block 3.1 \u2013 Vertiefung: Istio Service Mesh f\u00fcr Microservices<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Serienbeitr\u00e4ge zum Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a2bb62b0bbd46fa9b42be1ccbfddfa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWorum es in dem Buch geht:<\/p>\n<ul>\n<li>Was ist ein Service Mesh?<\/li>\n<li>Das System Istio und seine Rolle in der Microservices-Architektur.<\/li>\n<li>Einsatz von Istio zur L\u00f6sung folgender Aufgaben:\n<ul>\n<li>Fehlertoleranz;<\/li>\n<li>Routing;<\/li>\n<li>Chaos-Test.<\/li>\n<li>Sicherheit;<\/li>\n<li>Telemetriesammlung mit Trace-Tools, Metriken und Grafana.<\/li>\n<\/ul>\n<p>\n <\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/books\/introducing-istio-service-mesh-microservices\/\">Buch herunterladen<\/a><\/noindex><\/p>\n<h3>Artikelreihe zu Service Meshes und Istio<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/13\/istio-route-rules-service-requests\/\">Istio-Routing-Regeln: Leiten Sie Service-Anfragen dorthin, wo sie ben\u00f6tigt werden<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/20\/istio-circuit-breaker-pool-ejection\/\">Circuit Breaker in Istio: Pool-Ejection verarbeiten<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/03\/27\/istio-circuit-breaker-when-failure-is-an-option\/\">Circuit Breaker in Istio: Wenn ein Ausfall eine Option ist<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/03\/istio-tracing-monitoring\/\">Tracing und Monitoring in Istio: Wohin alles f\u00fchrt und wie schnell<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/10\/istio-chaos-engineering\/\">Chaos-Engineering in Istio: So war es gedacht<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/17\/istio-dark-launch-secret-services\/\">Dark Launch in Istio: geheime Dienste<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/04\/24\/istio-smart-canary-launch\/\">Canary Deployment in Istio: sanfter Einstieg<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/blog\/2018\/05\/01\/istio-egress-exit-through-the-gift-shop\/\">Istio Egress: Ausgang \u00fcber den Souvenirladen<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Versuchen Sie es selbst<\/h3>\n<p>\nDiese Reihe von Beitr\u00e4gen hat nicht das Ziel, ein tiefes Eintauchen in die Welt von Istio zu bieten. Wir m\u00f6chten Sie einfach mit dem Konzept vertrautmachen und vielleicht dazu anregen, Istio selbst auszuprobieren. Das ist v\u00f6llig kostenlos, und Red Hat stellt alle notwendigen Werkzeuge zur Verf\u00fcgung, um mit OpenShift, Kubernetes, Linux-Containern und Istio zu beginnen, n\u00e4mlich: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openshift.com\/products\/container-platform\/trial\/\">Red Hat Developer OpenShift Container Platform<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">unser Leitfaden zu Istio<\/a><\/noindex> und andere Ressourcen auf unserem <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/service-mesh\/\">Mikro-Website zu Service Mesh<\/a><\/noindex>. Verz\u00f6gern Sie nicht, starten Sie noch heute!<\/p>\n<h3>Istio-Routing-Regeln: Leiten Sie Service-Anfragen dorthin, wo sie ben\u00f6tigt werden<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/products\/openshift\/overview\/\">OpenShift<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/kubernetes\/\">Kubernetes<\/a><\/noindex> bew\u00e4ltigen hervorragend die Anfragen an <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">Mikroservices<\/a><\/noindex> wir auf die ben\u00f6tigten Pods zu. Das ist eines der Hauptziele von Kubernetes \u2013 Routing und Lastverteilung. Was ist, wenn Sie eine feinere und ausgekl\u00fcgelte Routing-L\u00f6sung ben\u00f6tigen? Zum Beispiel, um gleichzeitig zwei Versionen eines Mikrodienstes zu verwenden. Wie k\u00f6nnen dabei die Istio Routing-Regeln helfen?<\/p>\n<p>Routing-Regeln sind die Regeln, die die Auswahl des Routers bestimmen. Unabh\u00e4ngig von der Komplexit\u00e4t des Systems bleibt das grundlegende Prinzip dieser Regeln einfach: Anfragen werden basierend auf bestimmten Parametern und HTTP-Header-Werten geroutet. <br \/>\nSchauen wir uns Beispiele an: <\/p>\n<h3>Kubernetes standardm\u00e4\u00dfig: triviales \u201e50 zu 50\u201c<\/h3>\n<p>\nIn unserem Beispiel zeigen wir, wie man in OpenShift zwei Versionen eines Mikrodienstes gleichzeitig nutzen kann, die wir v1 und v2 nennen. Jede Version l\u00e4uft in ihrem eigenen Kubernetes-Pod, und standardm\u00e4\u00dfig wird hier eine gleichm\u00e4\u00dfig verteilte Round-Robin-Routing verwendet. Jeder Pod erh\u00e4lt seinen Anteil an Anfragen basierend auf der Anzahl seiner Mikrodienstinstanzen, anders gesagt, der Repliken. Istio hingegen erm\u00f6glicht es, dieses Gleichgewicht manuell zu \u00e4ndern.<\/p>\n<p>Angenommen, wir haben zwei Versionen unseres Empfehlungssystems, recommendation-v1 und recommendation-v2, auf OpenShift bereitgestellt.<br \/>\nIn Abb. 1 ist zu sehen, dass, wenn jeder Dienst in einem Exemplar dargestellt wird, die Anfragen gleichm\u00e4\u00dfig zwischen ihnen alternieren: 1-2-1-2-\u2026 So funktioniert das Routing von Kubernetes standardm\u00e4\u00dfig:<\/p>\n<p><img decoding=\"async\" alt=\"Serienbeitr\u00e4ge zum Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/93b00e4845ba930ca4d718b59629377e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Gewichtete Verteilung zwischen den Versionen<\/h3>\n<p>\nIn Abb. 2 ist dargestellt, was passiert, wenn die Anzahl der Replikate des Dienstes v2 von eins auf zwei erh\u00f6ht wird (dies geschieht mit dem Befehl oc scale \u2014replicas=2 deployment\/recommendation-v2). Wie zu sehen ist, werden die Anfragen zwischen v1 und v2 nun im Verh\u00e4ltnis \u201eeins zu drei\u201c aufgeteilt: 1-2-2-1-2-2-\u2026:<\/p>\n<p><img decoding=\"async\" alt=\"Serienbeitr\u00e4ge zum Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/a432b1cea0e297c99b041137d33fc107.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Version mit Istio ignorieren<\/h3>\n<p>\nIstio erm\u00f6glicht es, die Verteilung der Anfragen nach unseren Bed\u00fcrfnissen zu \u00e4ndern. Zum Beispiel, um den gesamten Verkehr nur auf recommendation-v1 mit der folgenden Istio-YAML-Datei zu leiten:<\/p>\n<p><img decoding=\"async\" alt=\"Serienbeitr\u00e4ge zum Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/db4190d495fb6dcc7c50cb8d28a7ef58.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hier sollte man darauf achten: Pods werden gem\u00e4\u00df den Labels ausgew\u00e4hlt. In unserem Beispiel wird das Label v1 verwendet. Der Parameter \u201eweight: 100\u201c bedeutet, dass 100 % des Verkehrs auf alle Pods des Dienstes geleitet werden, die das Label v1 haben.<\/p>\n<h3>Richtungsweisende Verteilung zwischen den Versionen (Canary Deployment)<\/h3>\n<p>\nWeiterhin kann der Parameter weight genutzt werden, um den Traffic auf beide Pods zu leiten, unabh\u00e4ngig von der Anzahl der Instanzen der Mikrodienste, die in jedem von ihnen ausgef\u00fchrt werden. Zum Beispiel leiten wir hier 90% des Traffics zu v1 und 10% zu v2:<\/p>\n<p><img decoding=\"async\" alt=\"Serienbeitr\u00e4ge zum Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/1a28e76ea7d8306fbefecefaad34c931.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Separate Routenf\u00fchrung f\u00fcr mobile Nutzer<\/h3>\n<p>\nAbschlie\u00dfend zeigen wir, wie man den Traffic von mobilen Nutzern gezielt auf den Dienst v2 und alle anderen auf v1 leitet. Dazu analysieren wir mithilfe regul\u00e4rer Ausdr\u00fccke den Wert des User-Agent im Header der Anfrage:<\/p>\n<p><img decoding=\"async\" alt=\"Serienbeitr\u00e4ge zum Istio Service Mesh\" src=\"\/wp-content\/uploads\/2019\/12\/efab7f92a1bcfc7e23ae279de57c738e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Jetzt sind Sie an der Reihe<\/h3>\n<p>\nEin Beispiel mit regul\u00e4ren Ausdr\u00fccken zur Analyse von Headern sollte Sie inspirieren, eigene Varianten von Istio-Routing-Regeln zu finden. Die M\u00f6glichkeiten sind hier sehr vielf\u00e4ltig, da die Header-Werte im Quellcode der Anwendungen gestaltet werden k\u00f6nnen.<\/p>\n<h3>Und denken Sie daran, dass Ops, nicht Dev<\/h3>\n<p>\nAlles, was wir in den obigen Beispielen gezeigt haben, wird ohne die geringsten \u00c4nderungen am Quellcode durchgef\u00fchrt, es sei denn, es m\u00fcssen spezielle Anfrageheader erstellt werden. Istio ist sowohl f\u00fcr Entwickler von Nutzen, die es beispielsweise in der Testphase verwenden k\u00f6nnen, als auch f\u00fcr IT-Systemadministratoren, die damit im Produktionsumfeld erheblich unterst\u00fctzt werden.<\/p>\n<p>Lassen Sie uns das Hauptthema dieser Beitragsreihe wiederholen: <b>Sie m\u00fcssen Ihren Code nicht \u00e4ndern<\/b>. Es ist nicht notwendig, neue Images zu erstellen oder neue Container zu starten. All dies wird au\u00dferhalb des Codes umgesetzt.<\/p>\n<h3>Schalten Sie Ihre Fantasie ein<\/h3>\n<p>\nStellen Sie sich nur vor, welche M\u00f6glichkeiten die Analyse von Headern mit regul\u00e4ren Ausdr\u00fccken er\u00f6ffnet. M\u00f6chten Sie Ihren gr\u00f6\u00dften Kunden auf eine spezielle Version Ihrer <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/topics\/microservices\/\">Mikrodiensten<\/a><\/noindex>? \u041b\u0435\u0433\u043a\u043e! \u041d\u0443\u0436\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 Chrome? \u041d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430! \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u043b\u044e\u0431\u043e\u0439 \u0435\u0433\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0435.<\/p>\n<h3>Versuchen Sie es selbst<\/h3>\n<p>\n\u00dcber Istio, Kubernetes und OpenShift zu lesen, ist das eine, aber warum nicht alles selbst ausprobieren? Das Team <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/\">Red Hat Developer Program<\/a><\/noindex> Wir haben ein ausf\u00fchrliches Handbuch (auf Englisch) erstellt, das Ihnen hilft, diese Technologien so schnell wie m\u00f6glich zu beherrschen. Das Handbuch ist ebenfalls zu 100 % Open Source und somit \u00f6ffentlich verf\u00fcgbar. Die Datei funktioniert unter macOS, Linux und Windows, und der Quellcode ist in Java und node.js verf\u00fcgbar (bald auch in anderen Sprachen). \u00d6ffnen Sie einfach das entsprechende Git-Repository in Ihrem Browser. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/redhat-developer-demos\/istio-tutorial\">Red Hat Developer Demo<\/a><\/noindex>.<\/p>\n<h3>Im n\u00e4chsten Beitrag: Wir l\u00f6sen Probleme elegant.<\/h3>\n<p>\nHeute haben Sie gesehen, was die Routing-Regeln von Istio leisten k\u00f6nnen. Stellen Sie sich nun vor, dass dasselbe auf die Fehlerverarbeitung angewendet wird. Genau dar\u00fcber werden wir im n\u00e4chsten Beitrag berichten.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/481182\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f, \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044f\u044f: \u041e\u0431\u044a\u044f\u0441\u043d\u0438\u043c \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e sidecar-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Kubernetes \u0438 \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u043c \u043b\u0435\u0439\u0442\u043c\u043e\u0442\u0438\u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u043f\u043e\u0441\u0442\u043e\u0432: \u00ab\u0432\u0430\u043c \u043d\u0435 \u043d\u0430\u0434\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u0441\u0432\u043e\u0435\u043c \u043a\u043e\u0434\u0435\u00bb. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0443\u044e \u0432\u0435\u0449\u044c Istio \u2013 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u041d\u0430 \u043d\u0438\u0445 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54208","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:12+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Beitragsreihe zum Istio Service Mesh | ProHoster","description":"Wir beginnen eine Reihe von Beitr\u00e4gen, in denen wir einige der vielen M\u00f6glichkeiten des Istio Service Mesh in Verbindung mit Red Hat OpenShift und Kubernetes demonstrieren.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0435\u0440\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043f\u043e Istio Service Mesh | ProHoster","og:description":"\u041c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u043f\u043e\u0441\u0442\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0441\u0435\u0442\u043a\u0438 Istio Service Mesh \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 Red Hat OpenShift \u0438 Kubernetes.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/seriya-postov-po-istio-service-mesh","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54208","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:27:27","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:32","updated":"2026-01-24 10:27:27","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/54208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=54208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/54208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=54208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=54208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=54208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}