Service Mesh on Red Hat OpenShift on IBM Cloud

Für dieses Lernprogramm können Kosten anfallen. Mit dem Kostenschätzer können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung generieren.

In diesem Tutorial erfahren Sie, wie Sie Red Hat OpenShift zusammen mit Microservices für eine Beispiel-App namens BookInfo in Red Hat OpenShift on IBM Cloud installieren. Außerdem erfahren Sie, wie Sie Istio Ingress Gateway so konfigurieren, dass ein Service außerhalb des Servicenetzes zugänglich gemacht wird, wie Sie das Datenverkehrsmanagement durchführen, um wichtige Tasks wie A/B-Tests und Canary-Implementierungen einzurichten, wie Sie die Kommunikation Ihrer Mikroservices sichern und wie Sie Metriken, Protokollierung und Tracing für die Beobachtung von Services einsetzen.

Basierend auf dem Open-Source-Istio-Projekt fügt Red Hat OpenShift Service Mesh eine transparente Ebene für vorhandene verteilte Anwendungen hinzu. Red Hat OpenShift Service Mesh bietet eine Plattform für Verhaltensinformationen und Betriebssteuerung über Ihre vernetzten Mikroservices in einem Servicenetz. Mit Red Hat OpenShift können Sie Microservices in Ihrem Red Hat OpenShift on IBM Cloud verbinden, sichern und überwachen.

Istio ist eine offene Plattform zur Verbindung, Sicherung, Steuerung und Überwachung von Microservices, auch bekannt als Service Mesh, auf Cloud-Plattformen wie Kubernetes in Red Hat OpenShift on IBM Cloud.

Ziele

  • Installieren Sie das Service Mesh Red Hat OpenShift in Ihrem Cluster
  • Beispiel-App "BookInfo" bereitstellen
  • Metriken, Protokollierung und Tracing zum Beobachten von Services verwenden
  • Istio Ingress Gateway einrichten
  • Einfaches Datenverkehrsmanagement, z. B. A/B-Tests und Canary-Bereitstellungen
  • Netz mit mTLS schützen

des

  1. Der Administrator stellt Red Hat OpenShift on IBM Cloud bereit und installiert den Service Mesh Operator zusammen mit anderen Telemetrie-Operatoren.
  2. Der Administrator erstellt einen istio-system-Namensbereich (Projekt) sowie eine ServiceMeshControlPlane.
  3. Der Administrator erstellt einen Namensbereich bookinfo mit aktivierter automatischer Sidecar-Injektion und stellt die BookInfo-App (mit vier separaten Mikroservices) im Servicenetz bereit.
  4. Der Administrator stellt die App für den externen Datenverkehr mit Istio Ingress Gateway bereit.
  5. Der Benutzer greift sicher (HTTPS) über den Browser auf die Anwendung zu.
  6. Der Administrator überwacht den Zustand und die Leistung der Mikroservices mithilfe der Metriken, Traces und Protokolle.

Vorbereitende Schritte

Für dieses Lernprogramm ist Folgendes erforderlich:

  • IBM Cloud CLI,
    • IBM Cloud Kubernetes Service-Plug-in (kubernetes-service)
  • oc für die Interaktion mit OpenShift.

Anweisungen zum Herunterladen und Installieren dieser Tools für Ihre Betriebsumgebung finden Sie in der Anleitung zur Einführung in die Lernprogramme.

Um die Installation dieser Tools zu vermeiden, können Sie Cloud Shell über die IBM Cloud-Konsole verwenden. Verwenden Sie oc version, um sicherzustellen, dass die Version der Red Hat OpenShift on IBM Cloud-CLI Ihrer Clusterversion entspricht (4.13.x). Wenn diese nicht übereinstimmt, installieren Sie die übereinstimmende Version, indem Sie diese Anweisungen befolgen.

Einen Red Hat OpenShift on IBM Cloud-Cluster erstellen

Mit Red Hat OpenShift on IBM Cloud haben Sie eine schnelle und sichere Möglichkeit, Unternehmens-Workloads in Clustern zu containerisieren und bereitzustellen. Red Hat OpenShift on IBM Cloud bauen auf Kubernetes auf, die Konsistenz und Flexibilität für Ihre Entwicklungslebenszyklus-Operationen bietet.

In diesem Abschnitt stellen Sie einen Red Hat OpenShift on IBM Cloud-Cluster in einer (1) Zone mit zwei (2) Workerknoten bereit:

  1. Melden Sie sich bei Ihrem IBM Cloud-Account an und erstellen Sie einen Red Hat OpenShift on IBM Cloud-Cluster über die Red Hat OpenShift on IBM Cloud-Clustererstellungsseite.
  2. Setzen Sie den Orchestrierungsdienst auf 4.13.x von Red Hat OpenShift on IBM Cloud.
  3. Wählen Sie Ihre OCP-Berechtigung aus.
  4. Wählen Sie unter Infrastruktur die klassische Infrastruktur oder VPC aus.
    • Für die Red Hat OpenShift on IBM Cloud on VPC-Infrastruktur müssen Sie eine VPC-Instanz und ein Teilnetz erstellen, bevor Sie den Kubernetes-Cluster erstellen. Erstellen oder überprüfen Sie eine gewünschte VPC-Instanz und berücksichtigen Sie dabei Folgendes (Anweisungen finden Sie in Erstellen eines VPC-Standardclusters):
      • Ein Teilnetz, das für dieses Lernprogramm verwendet werden kann; notieren Sie die Zone und den Namen des Teilnetzes.
      • Das öffentliche Gateway ist an das Teilnetz angehängt.
    • Wählen Sie die gewünschte VPC-Instanz aus.
    • Wählen Sie einen vorhandenen Cloud Object Storage-Service aus oder erstellen Sie, falls erforderlich, einen Service und wählen Sie anschließend Folgendes aus:
  5. Unter Standort:
    • Für die Red Hat OpenShift on IBM Cloud on VPC-Infrastruktur:
      • Wählen Sie eine Ressourcengruppe aus.
      • Wählen Sie die nicht anwendbaren Zonen ab.
      • Überprüfen Sie in der gewünschten Zone den gewünschten Teilnetznamen; falls dieser nicht vorhanden ist, klicken Sie auf das Bearbeitungssymbol (Stiftsymbol), um den gewünschten Teilnetznamen auszuwählen.
    • Folgen Sie in der Red Hat OpenShift on IBM Cloud on Classic-Infrastruktur den Anweisungen im Abschnitt Erstellen eines standardmäßigen klassischen Clusters.
      • Wählen Sie eine Ressourcengruppe aus.
      • Wählen Sie eine Geografie aus.
      • Wählen Sie eine Einzelzone als Verfügbarkeit aus.
      • Wählen Sie ein Rechenzentrum aus.
  6. Unter Worker-Pool:
    • Wählen Sie 4 vCPUs 16GB Memory als Version (Flavor) aus.
    • Wählen Sie für dieses Lernprogramm 2 Workerknoten pro Rechenzentrum aus (nur klassische Infrastruktur: Behalten Sie Lokale Festplatte verschlüsseln bei).
  7. Unter "Ressourcendetails" setzen Sie den Clusternamen auf "-myopenshiftcluster ", indem Sie " <your-initials> " durch Ihre eigenen Initialen ersetzen.
  8. Klicken Sie auf Create (Erstellen), um einen Red Hat OpenShift on IBM Cloud-Cluster bereitzustellen.

Notieren Sie sich die oben ausgewählte Ressourcengruppe. Dieselbe Ressourcengruppe wird für alle Ressourcen in diesem Lab verwendet.

Zugriff auf den Cluster mit IBM Cloud Shell

Die Red Hat OpenShift on IBM Cloud Container-Plattform CLI stellt Befehle zur Verwaltung Ihrer Anwendungen sowie Tools auf niedrigerer Ebene zur Interaktion mit jeder Komponente Ihres Systems bereit. Die Befehlszeilenschnittstelle bzw. CLI kann über den Befehl oc aufgerufen werden.

Um die Installation von Befehlszeilentools zu vermeiden, empfiehlt es sich, IBM Cloud Shell zu verwenden.

IBM Cloud Shell ist ein cloudbasierter Shell-Arbeitsbereich, den Sie in Ihrem Browser aufrufen können. Es ist mit der vollständigen IBM Cloud-CLI sowie vielen Plug-ins und Tools vorkonfiguriert, die Sie zum Verwalten von Apps, Ressourcen und Infrastruktur verwenden können.

In diesem Schritt verwenden Sie die IBM Cloud-Shell und konfigurieren oc so, dass es auf den Ihnen zugewiesenen Cluster verweist.

  1. Wenn der Cluster bereit ist, klicken Sie auf der Cluster-Übersichtsseite auf OpenShift ", um die Konsole zu öffnen. Lassen Sie das aktuelle Fenster bzw. die aktuelle Registerkarte geöffnet.
  2. Klicken Sie in der Webkonsole auf die Dropdown-Liste unter Ihrem Namen in der rechten Ecke des Bildschirms und wählen Sie Anmeldebefehl kopieren aus. Klicken Sie dann auf den Link Token anzeigen.
  3. Kopieren Sie den Text unter Mit diesem Token anmelden.
  4. Öffnen Sie in einem neuen Browsertab/-fenster IBM Cloud Shell, um eine neue Sitzung zu starten. Sobald die Sitzung gestartet wurde, sollten Sie automatisch an der IBM Cloud-Befehlszeilenschnittstelle angemeldet werden. Lassen Sie das aktuelle Fenster bzw. die aktuelle Registerkarte geöffnet.
  5. Überprüfen Sie die Version der OpenShift-Befehlszeilenschnittstelle:
    oc version
    
  6. Die Version muss mindestens 4.13.x sein, andernfalls installieren Sie die neueste Version, indem Sie diese Anweisungen befolgen.
  7. Fügen Sie den Anmeldebefehl ein, den Sie aus der Webkonsole kopiert haben, und drücken Sie die Eingabetaste. Nachdem Sie sich mit dem Befehl oc login angemeldet haben, führen Sie den nachfolgenden Befehl aus, damit alle Namensbereiche in Ihrem Cluster angezeigt werden.
    oc get ns
    
  8. Erstellen Sie von Ihrer Cloud Shell aus ein Projekt namens "bookinfo" mit dem Befehl oc new-project. Das Projekt enthält die Anwendung, die nach der Installation des Servicenetzes erstellt wurde.
    oc new-project bookinfo
    
    In Red Hat OpenShift ist ein Projekt ein Kubernetes-Namensbereich mit zusätzlichen Annotationen.

Service Mesh Istio installieren

In diesem Abschnitt installieren Sie Service Mesh Istio auf dem Cluster. Die Installation von Service Mesh umfasst die Installation der Elasticsearch-, Jaeger-, Kiali- und Service Mesh-Operatoren, das Erstellen und Verwalten einer ServiceMeshControlPlane-Ressource, um die Steuerebene bereitzustellen, und das Erstellen einer ServiceMeshMemberRoll-Ressource, um die Namensbereiche anzugeben, die dem Servicenetz zugeordnet sind.

Einige Projekte verfügen über mehrere Operatoren. Achten Sie darauf, die unten angegebenen zu installieren

Elasticsearch - Basierend auf dem Open-Source-Elasticsearch-Projekt, mit dem Sie einen Elasticsearch-Cluster für das Tracing und die Protokollierung mit Jaeger konfigurieren und verwalten können.

Jaeger - Basierend auf dem Open-Source-Jaeger-Projekt können Sie Tracing zur Überwachung und Fehlerbehebung von Transaktionen in komplexen verteilten Systemen durchführen.

Kiali - Basierend auf dem Open-Source-Kiali-Projekt stellt dies die Beobachtbarkeit für Ihr Servicenetz bereit. Mit Kiali können Sie innerhalb nur einer Konsole Konfigurationen anzeigen, den Datenverkehr überwachen und Traces anzeigen und analysieren.

Red Hat OpenShift Service Mesh – Basierend auf dem Open-Source-Projekt Istio können Sie die Microservices, aus denen Ihre Anwendungen bestehen, verbinden, sichern, steuern und überwachen.

Operatoren installieren

  1. Wählen Sie auf der linken Seite der Red Hat OpenShift-Webkonsole in der Dropdown-Liste Administrator aus.
  2. Wählen Sie Operatoren und dann OperatorHub aus.
  3. Suchen Sie nach dem OpenShift Elasticsearch-Operator, klicken Sie auf die Kachel, klicken Sie auf Installieren, behalten Sie die Standardauswahl bei und klicken Sie auf Installieren.
  4. Wiederholen Sie die obigen Schritte 2 und 3 für die Installation von Operatoren,
    1. Red Hat OpenShift-Plattform für verteilte Traceerstellung
    2. Kiali-Operator (von Red Hat bereitgestellt)
    3. Red Hat OpenShift.

Damit werden die Operatoren im Standardprojekt openshift-operators installiert und die Operatoren für alle Projekte im Cluster verfügbar gemacht.

Einsatz der Steuerungsebene Red Hat OpenShift

Red Hat OpenShift verwendet eine ServiceMeshControlPlane-Ressource, um zu bestimmen, wie Istio installiert wird und welche Komponenten Sie wünschen. Diese Ressource erstellen Sie nun.

  1. Erstellen Sie ein neues Projekt, indem Sie im linken Teilfenster der Webkonsole zu Startseite wechseln, auf Projekte und dann auf Projekt erstellen klicken.
  2. Geben Sie istio-system in Name ein und klicken Sie auf Erstellen.
  3. Navigieren Sie zu Operatoren -> Installierte Operatoren.
  4. Wählen Sie im Menü 'Projekt' in der oberen Leiste istio-system aus.
  5. Klicken Sie auf Red Hat OpenShift Service Mesh. Wenn dies nicht angezeigt wird, warten Sie einige Minuten und aktualisieren Sie dann.
  6. Klicken Sie auf der Registerkarte „Details“ unter der Kachel Istio-Service-Mesh-Steuerebene auf Instanz erstellen oder auf Service-Mesh-Steuerebene erstellen.
  7. Klicken Sie anschließend auf Erstellen. Der Operator erstellt basierend auf Ihren Konfigurationsparametern Pods, Services und Servicenetz-Steuerebenenkomponenten.
  8. Wenn Sie sicherstellen möchten, dass die 'Service Mesh Control Plane' ordnungsgemäß installiert ist, klicken Sie in der Liste unter ** auf **basicName. Auf der nachfolgenden Seite sollten Sie Components bereit sehen. Außerdem sollten Sie beim Blättern zum Abschnitt Bedingungen auf der Seite die Ursache ComponentsReady und eine Nachricht All component deployments are Available sehen.

'ServiceMeshMemberRoll' erstellen

Die Ressource 'serviceMeshMemberRoll' wird verwendet, um die Namensbereiche anzugeben, die dem Servicenetz zugeordnet sind.

  1. Navigieren Sie erneut zu OperatorenInstallierte Operatoren.
  2. Klicken Sie auf Red Hat OpenShift Service Mesh.
  3. Klicken Sie auf der Registerkarte „Details“ unter der Kachel Istio-Service-Mesh-Mitgliederrolle auf Instanz erstellen oder Service-Mesh-Mitgliederrolle erstellen und wählen Sie anschließend YAML-Ansicht aus.
  4. Ändern Sie your-project in bookinfo und löschen Sie die letzte Zeile (- another-of-your-projects). Nach der Bearbeitung sollte die YAML etwa wie folgt aussehen:
    apiVersion: maistra.io/v1
    kind: ServiceMeshMemberRoll
    metadata:
      name: default
      namespace: istio-system
    spec:
      members:
        - bookinfo
    
  5. Klicken Sie anschließend auf Erstellen.

Sie haben Istio erfolgreich in Ihrem Cluster installiert.

Anwendung "BookInfo" in Servicenetz bereitstellen

BookInfo zeigt Informationen zu einem Buch an, ähnlich wie ein einzelner Katalogeintrag in einem Online-Buchladen. Auf der Seite werden eine Beschreibung des Buches, Buchdetails (ISBN, Anzahl der Seiten usw.) sowie einige Buchbesprechungen angezeigt.

Die Anwendung "Bookinfo" ist in vier separate Mikroservices unterteilt:

  • productpage. Der Mikroservice 'productpage' ruft die Details auf und überprüft die Mikroservices, um die Seite zu füllen.
  • Details. Der Mikroservice 'details' enthält die Buchinformationen.
  • reviews. Der Mikroservice 'reviews' enthält Buchbesprechungen. Außerdem ruft er den Mikroservice 'ratings' auf.
  • ratings. Der Mikroservice 'ratings' enthält Informationen zur Einstufung des Buches, die eine Buchbesprechung begleiten.

Es gibt 3 Versionen des Mikroservice 'reviews':

  • Version V1 ruft den Service 'ratings' nicht auf.
  • Version V2 ruft den service 'ratings' auf und zeigt jede Bewertung mit 1 bis 5 schwarzen Sternen an.
  • Version V3 ruft den service 'ratings' auf und zeigt jede Bewertung mit 1 bis 5 roten Sternen an.

Die End-to-End-Architektur der Anwendung wird nachfolgend dargestellt.

Architektur mit Istio
Architektur mit Istio

Red Hat OpenShift Service Mesh verlässt sich auf die Envoy-Sidecars innerhalb des Pods der Anwendung, um der Anwendung Service-Mesh-Funktionen bereitzustellen. Sie können die automatische Sidecar-Injektion aktivieren oder sie manuell verwalten. Die automatische Injektion mit der Annotation ist die empfohlene Methode.

  1. Stelleln Sie die Anwendung "Bookinfo" im Projekt bookinfo bereit, indem Sie die Datei 'bookinfo.yaml' auf den Red Hat OpenShift-Cluster anwenden. Dadurch werden alle Mikroserviceanwendungen einschließlich der Versionen v1, v2 und v3 der Reviews-App bereitgestellt.

    oc apply -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/platform/kube/bookinfo.yaml
    

    Die Datei bookinfo.yaml wird mit sidecar.istio.io/inject: "true" kommentiert, um die automatische Einspeisung des Istio-Sidecars für Red Hat OpenShift Mesh zu ermöglichen. Daher beziehen diese Pods auch einen Envoy-Sidecar ein, wenn sie im Cluster gestartet werden.

    Eine Installation von Red Hat OpenShift unterscheidet sich in mehrfacher Hinsicht von Upstream-Installationen der Istio-Community. Verweisen Sie auf diesen Link, der Service Mesh und Istio vergleicht. Standardmäßig fügt Istio das Sidecar ein, wenn Sie das Projekt istio-injection=enabled bezeichnet haben. Red Hat OpenShift Service Mesh behandelt dies anders und erfordert, dass Sie das Sidecar automatisch in eine Bereitstellung einfügen lassen, sodass Sie das Projekt nicht beschriften müssen. Dadurch wird vermieden, dass ein Sidecar injiziert wird, wenn er nicht gewünscht wird (z. B. beim Erstellen oder Bereitstellen von Pods).

  2. Stellen Sie sicher, dass die Pods betriebsbereit sind.

    oc get pods
    

    Beispielausgabe:

    NAME                              READY     STATUS    RESTARTS   AGE
    details-v1-789c5f58f4-9twtw       2/2       Running   0          4m12s
    productpage-v1-856c8cc5d8-xcx2q   2/2       Running   0          4m11s
    ratings-v1-5786768978-tr8z9       2/2       Running   0          4m12s
    reviews-v1-5874566865-mxfgm       2/2       Running   0          4m12s
    reviews-v2-86865fc7d9-mf6t4       2/2       Running   0          4m12s
    reviews-v3-8d4cbbbbf-rfjcz        2/2       Running   0          4m12s
    

    Beachten Sie, dass jeder "BookInfo"-Pod zwei Container enthält. Einer ist der "BookInfo"-Container und der andere ist der Envoy-Proxy-Sidecar.

Ihre "BookInfo"-App ist aktiv, aber Sie können nicht darauf zugreifen, da der Service noch nicht für den Empfang von externem Datenverkehr konfiguriert ist. Im nächsten Abschnitt machen Sie den Service productpage zugänglich, sodass er eingehenden Datenverkehr zulässt.

Zugänglichmachen der App mit Istio Ingress Gateway und Route

Die Komponenten, die standardmäßig im Servicenetz bereitgestellt sind, werden nicht außerhalb des Clusters zugänglich gemacht. Eine Ingress Gateway-Ressource kann erstellt werden, um externe Anforderungen über Istio Ingress Gateway an die Unterstützungsservices zu senden.

  1. Konfigurieren Sie die "BookInfo"-Standardroute mit Istio Ingress Gateway.
    oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/bookinfo-gateway.yaml
    
  2. Rufen Sie die ROUTE von Istio Ingress Gateway ab.
    oc get routes -n istio-system istio-ingressgateway
    
  3. Speichern Sie die HOST-Adresse, die Sie im vorherigen Schritt abgerufen haben, da sie für den Zugriff auf die App "BookInfo" in späteren Teilen des Lernprogramms verwendet wird. Erstellen Sie eine Umgebungsvariable namens $INGRESS_HOST mit Ihrer HOST-Adresse.
    export INGRESS_HOST=<HOST>
    
    Besuchen Sie die Anwendung, indem Sie http://$INGRESS_HOST/productpage in einer neuen Registerkarte aufrufen. Wenn Sie weiter auf "Aktualisierung" klicken, sollten verschiedene Versionen der Seite in zufälliger Reihenfolge angezeigt werden (V1 - keine Sterne, V2 - schwarze Sterne, V3 - rote Sterne). Lassen Sie die Browserregisterkarte für später geöffnet.

Servicetelemetrie beobachten: Metriken und Traceerstellung

Die Tracing- und Metriken-Funktionen von Istio sind so ausgelegt, dass sie umfassende und differenzierte Einblicke in den Zustand sämtlicher Services bieten. Die Rolle von Istio als Servicenetz macht es zu einer idealen Datenquelle für Beobachtbarkeits-Informationen, insbesondere in einer Mikroservices-Umgebung. Während Anforderungen an mehrere Services übergeben werden, wird die Ermittlung von Leistungsengpässen mittels traditioneller Debugtechniken zunehmend schwierig. Die verteilte Traceerstellung bietet eine ganzheitliche Sicht der Anforderungen, während diese mehrere Services durchlaufen, wodurch die sofortige Identifizierung von Latenzproblemen ermöglicht wird. Mit Istio ist das verteilte Tracing eine Standardfunktion. Dadurch werden Latenz-, Wiederholungs- und Fehlerinformationen für jeden Hop in einer Anforderung zugänglich gemacht.

Metriken mit Grafana visualisieren

Grafana ermöglicht Ihnen die Abfrage und Visualisierung, Alerterstellung und Analyse Ihrer Metriken unabhängig von ihrem Speicherort.

  1. In der Red Hat OpenShift on IBM Cloud-Webkonsole gehen Sie folgendermaßen vor:

    1. Klicken Sie im linken Fensterbereich unter Netzbetrieb auf Routen.
    2. Wählen Sie in der oberen Leiste das Projekt istio-system aus.
    3. Klicken Sie auf die URL (Standort) neben Grafana.
    4. Melden Sie sich bei Red Hat OpenShift on IBM Cloud an und erteilen Sie die angeforderten Berechtigungen, um Grafana anzuzeigen.
  2. Klicken Sie in der linken Navigationsanzeige auf das Menü Dashboard und wählen Sie die Registerkarte Verwalten sowie anschließend istio und Istio-Service-Dashboard aus.

  3. Wählen Sie in der Dropdown-Liste productpage.bookinfo.svc.cluster.localService** die Option ** aus.

  4. Wechseln Sie in das IBM Cloud Shell-Fenster/-Registerkarte und erzeugen Sie eine kleine Last für die App, indem Sie den Datenverkehr an die Ingress-Host-Position senden, die Sie im letzten Abschnitt festgelegt haben.

    for i in {1..20}; do sleep 0.5; curl -I $INGRESS_HOST/productpage; done
    

Öffnen Sie jedes Pfeilsymbol, um weitere Informationen zum Dashboard anzuzeigen. Wählen Sie in der Dropdown-Liste Service andere Services aus. Dieses Grafana-Dashboard stellt Metriken für jede Workload bereit. Erkunden Sie auch die anderen Dashboards, die bereitgestellt werden.

Servicenetz mit Kiali überwachen

Kiali ist ein Open-Source-Projekt, das als Add-on für Istio installiert wird, um Ihr Servicenetz zu visualisieren. Kiali bietet Ihnen einen tieferen Einblick in die Interaktion Ihrer Mikroservices untereinander und stellt Funktionen wie Trennschalter und Anforderungsraten für Ihre Services bereit.

  1. In der Red Hat OpenShift on IBM Cloud-Webkonsole gehen Sie folgendermaßen vor:
    1. Klicken Sie im linken Fensterbereich unter Netzbetrieb auf Routen.
    2. Wählen Sie in der oberen Leiste istio-system als Projekt aus.
    3. Klicken Sie auf die URL (Standort) neben kiali und klicken Sie nach der entsprechenden Aufforderung auf Mit OpenShift anmelden.
  2. Klicken Sie auf das Diagramm im linken Fensterbereich und wählen Sie in der oberen Leiste die Namensbereiche bookinfo und istio-system aus, um das visuelle Diagramm der versionierten App verschiedener Services in Ihrem Istio-Netz anzuzeigen.
  3. Um die Anforderungsraten anzuzeigen, klicken Sie auf "Anzeigen" und wählen Sie "Traffic Rate ".
  4. Besuchen Sie in einer anderen Registerkarte/einem anderen Fenster die URL der Anwendung "BookInfo" und aktualisieren Sie die Seite mehrmals, um eine Arbeitslast zu generieren, oder führen Sie das Ladescript aus dem vorherigen Abschnitt aus, um die Arbeitslast zu generieren.
  5. Überprüfen Sie jetzt das Kiali-Diagramm, um die Anforderungen pro Sekunde festzustellen.

Kiali verfügt über eine Reihe von Ansichten, mit denen Sie Ihre Services visualisieren können. Klicken Sie auf die verschiedenen Registerkarten, um das Servicediagramm und die verschiedenen Ansichten für Workloads, Anwendungen und Services zu erkunden.

Datenverkehrsmanagement durchführen

Durch die Regeln von Istio für das Datenverkehr-Routing können Sie den Datenfluss und die API-Aufrufe zwischen den Services problemlos steuern. Istio vereinfacht die Konfiguration von Eigenschaften auf Serviceebene, wie Trennschalter, Zeitlimitüberschreitungen und Wiederholungsversuche, und macht es leicht, wichtige Aufgaben wie A/B-Tests, Canary-Rollouts und Staging-Rollouts mit prozentualen Datenverkehraufteilungen zu konfigurieren. Darüber hinaus bietet es sofort einsatzfähige Funktionen zur Fehlerbehebung, die Ihnen helfen, Ihre Anwendung für Ausfälle abhängiger Services oder des Netzes robuster zu machen.

Das Modell von Istio für das Datenverkehrmanagement beruht auf den Envoy-Proxys (Sidecars), die zusammen mit Ihren Diensten bereitgestellt werden. Der gesamte Datenverkehr, den Ihre Services senden und empfangen (Verkehr auf Datenebene), wird durch Envoy geleitet, was es vereinfacht, den Datenverkehr direkt um Ihr Netz herum zu steuern, ohne dass Änderungen an Ihren Services vorgenommen werden müssen.

Pilot setzt allgemeine Regeln in spezifische Konfigurationen um und verteilt diese Konfigurationen an Envoy-Instanzen. Pilot verwendet drei Arten von Konfigurationsressourcen, um den Datenverkehr innerhalb seines Service-Netzes zu verwalten: Virtuelle Dienste, Zielregeln und Service-Einträge.

A/B-Tests mit Istio

A/B-Tests sind ein Verfahren zur Durchführung identischer Tests für zwei separate Serviceversionen, um zu ermitteln, welche besser funktioniert. Um zu verhindern, dass Istio das Standard-Routingverhalten zwischen dem ursprünglichen und dem modernisierten Service ausführt, definieren Sie die folgenden Regeln:

  1. Führen Sie den folgenden Befehl aus, um Standard-Zielregeln für die "BookInfo"-Services zu erstellen.

    oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all.yaml
    

    DestinationRule definiert Richtlinien, die für den Datenverkehr gelten, der für einen Dienst bestimmt ist, nachdem die Weiterleitung erfolgt ist. Diese Regeln geben die Konfiguration für den Lastausgleich, die Verbindungspoolgröße vom Sidecar und Einstellungen für die Ausreißererkennung an, um ungesunde Hosts aus dem Lastausgleichspool zu erkennen und zu entfernen. Alle in einer host-Regel referenzierten subset- und VirtualService-Ziele müssen in einer entsprechenden DestinationRule (Zielregel) definiert sein.

  2. Ein virtueller Service (VirtualService) definiert eine Gruppe von Routing-Regeln für den Datenverkehr, die angewendet werden, wenn ein Host adressiert wird. Jede Routing-Regel definiert übereinstimmende Kriterien für den Datenverkehr eines bestimmten Protokolls. Wenn der Datenverkehr abgeglichen wird, wird er an einen benannten Zielservice (oder eine Untergruppe/Unterversion davon) gesendet, der in der Registry definiert ist. Führen Sie den folgenden Befehl aus, um den gesamten Rezensions-Traffic an v1 zu senden:

    oc create -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-all-v1.yaml
    

    Der virtuelle Service (VirtualService) definiert eine Regel, die den gesamten HTTP-Datenverkehr erfasst, der in den Service 'reviews' eingeht, und leitet 100 % des Datenverkehrs an Pods des Service mit der Bezeichnung "version: v1" weiter. Eine Untergruppe oder Unterversion eines Routenziels wird mit einem Verweis auf eine benannte Service-Untergruppe angegeben, die in einer entsprechenden Zielregel (DestinationRule) deklariert sein muss.

  3. Zeigen Sie die Anwendung „bookinfo“ auf Ihrem Browsertab an. Sie sollten nur die Version v1 der Anwendung „BookInfo“ erhalten, d. h. keine Sterne für Bewertungen.

  4. Um das Istio-Servicenetz für A/B-Tests für die neue Serviceversion zu aktivieren, ändern Sie die ursprüngliche VirtualService-Regel, sodass nur Firefox-Datenverkehr an V2 gesendet wird. Sie können den user-agent in einen anderen installierten Browser auf Ihrem System ändern:

    cat <<EOF | oc replace -f -
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: reviews
    spec:
      hosts:
      - reviews
      http:
      - match:
        - headers:
            user-agent:
              regex: '.*Firefox.*'
        route:
        - destination:
            host: reviews
            subset: v2
      - route:
        - destination:
            host: reviews
            subset: v3
    EOF
    

    In den Istio-Regeln VirtualService kann es nur eine Regel für jeden Dienst geben. Daher ist bei der Definition mehrerer HTTPRoute-Blöcke die Reihenfolge, in der sie in der yaml definiert sind, von Bedeutung. Daher wird die ursprüngliche VirtualService-Regel geändert, statt eine neue Regel zu erstellen. Mit der geänderten Regel werden eingehende Anforderungen, die von Firefox-Browsern stammen, an die V2-Version (schwarze Sterne) von "BookInfo" weitergeleitet. Alle anderen Anforderungen werden an den nächsten Block weitergeleitet, der den gesamten Datenverkehr an die Version V3 (rote Sterne) von "BookInfo" leitet.

Canary-Bereitstellung

In den Canary-Bereitstellungen werden neuere Versionen von Services schrittweise bei Benutzern implementiert, um das Risiko und die Auswirkungen von Fehlern zu minimieren, die von der neueren Version eingeführt wurden. Um den Datenverkehr inkrementell an die neuere Version des "BookInfo"-Service weiterzuleiten, ändern Sie die ursprüngliche VirtualService-Regel:

  1. Führen Sie den folgenden Befehl aus, um 80% des Datenverkehrs an V1 zu senden:

    oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-80-20.yaml
    

    In der geänderten Regel wird der weitergeleitete Datenverkehr zwischen zwei unterschiedlichen Untergruppen des Mikroservice 'reviews' aufgeteilt. Auf diese Weise wird der Datenverkehr an die modernisierte Version 2 von 'reviews' auf prozentualer Basis gesteuert, um die Auswirkungen von unvorhergesehenen Fehlern zu begrenzen. Diese Regel kann im Laufe der Zeit geändert werden, bis schließlich der gesamte Datenverkehr an die neuere Version des Service weitergeleitet wird.

  2. Zeigen Sie die Anwendung „bookinfo“ erneut auf Ihrem Browsertab an. Stellen Sie sicher, dass Sie eine harte Aktualisierung (Cmd + Umschalt + R unter Mac oder Strg + F5 unter Windows) durchführen, um ein mögliches Browser-Caching zu löschen. Sie sollten feststellen, dass die "BookInfo"-Anwendung mit der von Ihnen angegebenen Gewichtung zwischen V1 oder V2 wechseln sollte.

  3. Gehen Sie wie folgt vor, um den gesamten Datenverkehr an den Service 'reviews' mit V3 weiterzuleiten:

    oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/virtual-service-reviews-v3.yaml
    

Services schützen

Istio kann die Kommunikation zwischen Mikroservices sichern, ohne dass Änderungen am Anwendungscode notwendig sind. Die Sicherheit wird durch Authentifizierung und Verschlüsselung von Kommunikationspfaden innerhalb des Clusters bereitgestellt. Dies wird zu einer allgemeinen Sicherheits- und Compliance-Anforderung. Durch die Delegation der Kommunikationssicherheit an Istio (im Gegensatz zur Implementierung von TLS in jedem Mikroservice) stellen Sie sicher, dass Ihre Anwendung mit konsistenten und einfach zu verwaltenden Sicherheitsrichtlinien bereitgestellt wird.

  1. Zur Konfiguration von mTLS müssen Sie Ihre vorherigen Zielregeln ändern, sodass sie ISTIO_MUTUAL verwenden.
    oc replace -f https://raw.githubusercontent.com/Maistra/istio/maistra-2.2/samples/bookinfo/networking/destination-rule-all-mtls.yaml
    
  2. Senden Sie mehr Datenverkehr an Ihre Anwendung. Alles sollte weiterhin erwartungsgemäß funktionieren.
  3. Starten Sie Kiali erneut und wechseln Sie zu Diagramm.
  4. Wählen Sie bookinfo in der oberen Leiste Namensbereich aus.
  5. Wählen Sie unter "Anzeige" die Option Sicherheit aus. Auf allen Pfeilen (Datenverkehr) sollte das Symbol Sperren angezeigt werden.
  6. Um die Sicherheit Ihres Datenverkehrs zu prüfen, klicken Sie auf den Pfeil von productpage bis v1. Sie sollten im rechten Fensterbereich das Symbol mTLS Enabled mit dem Sperrsymbol sehen.

SSL für den in Ihren Cluster eingehenden Datenverkehr aktivieren (HTTPS)

In diesem Abschnitt erstellen Sie eine sichere Route zu Ingress-Gateway mit Edge-Terminierung unter Verwendung des von Red Hat OpenShift on IBM Cloud bereitgestellten Standardzertifikats. Bei einer Edge-Route beendet der Ingress-Controller die TLS-Verschlüsselung, bevor er den Datenverkehr an den Pod von Istio Ingress Gateway weiterleitet.

  1. Starten Sie die Red Hat OpenShift on IBM Cloud-Konsole.
  2. Unter Netzbetrieb und Routen gehen Sie wie folgt vor:
  3. Wählen Sie das Projekt istio-system in der oberen Leiste aus und klicken Sie anschließend auf Route erstellen.
    1. Name: istio-ingressgateway-secure
    2. Service: istio-ingressgateway
    3. Zielport 80->8080(TCP)
    4. Secure Route prüfen
    5. TLS-Terminierung: Edge
    6. Unsicherer Datenverkehr: None
  4. Klicken Sie auf Erstellen.
  5. Besuchen Sie die neue HTTPS-URL im Abschnitt Standort der Route istio-ingressgateway-secure. Denken Sie daran, am Ende der URL /productpage hinzuzufügen.

Ressourcen entfernen

Sie können entweder schrittweise einzelne Ressourcen entfernen oder diese Schritte überspringen und den gesamten Cluster direkt löschen.

Anwendungsprojekt löschen

  • Führen Sie den folgenden Befehl aus, um das Projekt "BookInfo" zu löschen:
    oc delete project bookinfo
    

'ServiceMeshControlPlane' aus der CLI entfernen

  1. Führen Sie den folgenden Befehl aus, um den Namen der installierten Servicenetz-Steuerebene (ServiceMeshControlPlane) abzurufen:
    oc get servicemeshcontrolplanes -n istio-system
    
  2. Ersetzen Sie <NAME_OF_CUSTOM_RESOURCE> durch den Namen des vorherigen Befehls und führen Sie diesen Befehl aus, um die angepasste Ressource zu entfernen.
    oc delete servicemeshcontrolplanes -n istio-system <NAME_OF_CUSTOM_RESOURCE>
    
    Die Ressource ServiceMeshMemberRoll wird automatisch gelöscht, wenn Sie die zugehörige Ressource ServiceMeshControlPlane löschen.

Operatoren entfernen

  1. Navigieren Sie zur Seite OperatorenInstallierte Operatoren in der Webkonsole.
  2. Wählen Sie auf der rechten Seite der Seite "Operator Details" im Dropdown-Menü "Aktionen" des Red Hat OpenShift die Option "Operator deinstallieren" aus.
  3. Klicken Sie in der Eingabeaufforderung auf Deinstallieren.
  4. Wiederholen Sie die Schritte 2 und 3 für jeden Operator in der Liste.

Cluster löschen

Löschen Sie den Cluster, um alles in einem einzigen Schritt zu löschen. Diese Aktion ist unumkehrbar.

  1. Navigieren Sie zur Seite OpenShift-Cluster.
  2. Klicken Sie auf das Aktionsmenü neben <your-initials>-myopenshiftcluster und wählen Sie Löschen aus.
  3. Wählen Sie Den von diesem Cluster verwendeten persistenten Speicher löschen und geben Sie den Namen des Clusters zur Bestätigung ein.
  4. Klicken Sie auf Löschen.

Zugehörige Inhalte