Blog

Beispiel für Verkehrsmanagement mit Istio

Bild von Boyan Kirov
Bojan Kirow
DevOps- und Cloud-Ingenieur
08.06.2022
Lesezeit: 3 Minuten.
Zuletzt aktualisiert: 16.01.2025

Inhaltsübersicht

Einführung in das Verkehrsmanagement in Istio

Mit den Traffic-Routing-Regeln von Istio können Sie den Verkehrsfluss und die API-Aufrufe zwischen den Services effizient verwalten. Istio vereinfacht die Konfiguration von Service-Level-Eigenschaften und macht es einfach, wichtige Aufgaben wie Tests und verschiedene Rollouts zu planen. Darüber hinaus bietet Istio intuitive und innovative Zuverlässigkeitsfunktionen, die Ihre Anwendung widerstandsfähiger gegenüber Fehlern bei abhängigen Diensten oder im Netzwerk machen.

Das Verkehrsmanagementkonzept von Istio basiert auf den Envoy-Proxys, die zusammen mit Ihren Services eingesetzt werden. Der gesamte Verkehr auf der Datenebene (im Wesentlichen der Verkehr, den Ihr Service-Mesh sendet und empfängt) wird über Envoy geleitet. Dies erleichtert den direkten und kontrollierten Verkehr in Ihrem Mesh, ohne dass Sie Änderungen an Ihren Services vornehmen müssen.

Wie funktioniert das Traffic Management von Istio?

Zunächst ist es wichtig zu wissen, dass Istio wissen muss, wo sich alle Ihre Endpunkte befinden und zu welchen Diensten sie gehören, um den Verkehr innerhalb Ihres Netzes zu lenken. Istio stellt eine Verbindung zu einem Service-Discovery-System her, um seine eigene Service-Registry zu erstellen. Wenn Sie Istio beispielsweise auf einem Kubernetes-Cluster(Managed Kubernetes Service) installiert haben, das wir bereits in unserem Blog besprochen haben, erkennt Istio automatisch die Services und Endpunkte in diesem speziellen Cluster.

Die Envoy-Proxys leiten den Datenverkehr über die Service-Registrierung an die entsprechenden Dienste weiter. Typischerweise verfügen Microservice-basierte Anwendungen über zahlreiche Instanzen jedes Service-Workloads, um den Service-Verkehr zu bewältigen, was im Allgemeinen als Load-Balancing-Pool bezeichnet wird. Die Aufgabe der Envoy-Proxys besteht darin, den Datenverkehr auf die Lastausgleichspools der einzelnen Dienste zu verteilen.

Mit der Service-Erkennung und dem Lastausgleich von Istio erhalten Sie ein funktionierendes Service-Mesh, aber bedenken Sie, dass Istio in Bezug auf die Steuerung des Datenverkehrs noch viel mehr leisten kann. Sie haben die Möglichkeit, den Datenverkehr in Ihrem Mesh fein zu steuern. Sie können zum Beispiel eine externe Abhängigkeit Ihres Meshes zur Service-Registry hinzufügen oder spezielle Regeln für den Verkehr anwenden, der in Ihr Mesh hinein oder aus ihm heraus kommt. Sie können dies und vieles mehr tun, indem Sie Ihre eigene Verkehrskonfiguration zu Istio hinzufügen, indem Sie die API für die Verkehrsverwaltung von Istio verwenden.

Wie andere Istio-Konfigurationen wird die API mit Hilfe von benutzerdefinierten Kubernetes-Ressourcendefinitionen (CRDs) angegeben, die Sie mit YAML konfigurieren können, wie Sie in unserem Beispiel sehen werden.

Hier können Sie die einzelnen Ressourcen der Verkehrsmanagement-API und ihre Einsatzmöglichkeiten überprüfen. Der Rest dieses Leitfadens befasst sich mit unserem Verkehrsmanagement-Beispiel.

Istio Traffic Management Beispiel

Schauen wir uns das Traffic-Management-Konzept von Istio an. Zunächst laden wir das Repository herunter, das wir für das Beispiel vorbereitet haben:

$git clone https://github.com/BKirov/istio.git

Zweitens müssen wir den Istio-Ordner angeben. Dann werden wir die Beispielanwendung bookinfo bereitstellen:

$kubectl apply -f bookinfo.yaml
Istio-Verkehrsmanagement Einsatz der Beispielanwendung bookinfo
Einsatz der Beispielanwendung bookinfo

Es ist wichtig, dass Sie mit folgendem Befehl überprüfen, ob das System lokal funktioniert:

$ kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
Istio Verkehrsmanagement funktioniert

Wie Sie im obigen Beispiel sehen können, funktioniert es einwandfrei. Wir werden nun die Anwendung öffnen.

1 . Wir werden ein Istio Ingress Gateway erstellen, um die Anwendung online zugänglich zu machen.

$ kubectl apply -f bookinfo-gateway.yaml

Dann können wir die IP so nehmen:

$ kubectl -n istio-system get service istio-ingressgateway
Istio

Wir geben die Adresse in unseren Browser ein und die Ausgabe sollte wie folgt aussehen:

Istio Traffic Management Ausgabe
Ausgabe

Jetzt haben wir die funktionierende Anwendung geöffnet und laufen online.

2. Werfen wir einen Blick auf die beiden Dateien destination-rule-all.YAML und virtualservices-all-v1.yaml

Ein VirtualService definiert eine Reihe von Routing-Regeln für den Datenverkehr, die bei der Adressierung eines Hosts anzuwenden sind. Jede Routing-Regel definiert Kriterien für die Übereinstimmung des Datenverkehrs mit einem bestimmten Protokoll. Wenn der Verkehr übereinstimmt, wird er an einen benannten Zieldienst (oder eine Teilmenge/Version davon) gesendet, der in der Registrierung definiert ist.

Werfen Sie einen Blick auf den Abschnitt Rezensionen auf der Produktseite Anwendungen.

Routing Route Verkehrsmanagement Istio

Öffnen Sie dann die Datei virtual-service-all-v1.yaml und ändern Sie den Abschnitt VirtualService for review von v1 auf v3:

Version: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v3

Dies führt automatisch zu der Untermenge v3 in der Datei destination-rule-all.yaml

kubectl apply -f virtual-service-all-v1.yaml

Aktualisieren Sie dann die Browserseite, und der Bewertungsabschnitt wurde geändert.

Aktualisierte Ausgabe

Dies ist ein Beispiel dafür, wie das Istio Traffic Management-Konzept mit virtuellen Services und Zielregeln funktioniert.

Weitere Blogbeiträge von Experten finden Sie in unserem ITGix-Blog. Wenn Sie Fragen haben oder eine Beratung zu einem bestimmten Anwendungsfall wünschen, zögern Sie nicht, uns zu kontaktieren.

Eine Antwort

Eine Antwort hinterlassen

Newsletter für Tech-Experten

Signal, kein Rauschen –

direkt in Ihren Posteingang.

Schließen Sie sich mehr als 12.000 Ingenieuren und Führungskräften aus der Wirtschaft an, die Praxisberichte zu SRE, DevOps und Cloud-nativer Zuverlässigkeit erhalten.

Tech-Blogs mit tiefgehenden Einblicken und Fallstudien
Neue Technologien, sorgfältig ausgewählt

Ihre geschäftliche E-Mail-Adresse

Wir gehen respektvoll mit Ihrem Posteingang um. Lesen Sie unsere Datenschutzerklärung.

Mehr Beiträge

AI SRE Agent: Die ersten 20 Minuten eines Vorfalls automatisieren Es ist 3 Uhr morgens. Ein Alarm wird ausgelöst. Sie klappen Ihren Laptop auf, und die nächsten zwanzig Minuten verlaufen wie immer...
Lesen
Bei der Arbeit mit Terraform sollte das Standard-Meta-Argument zum Erstellen von Ressourcen fast immer „for_each“ lauten – insbesondere bei Infrastruktur, die voraussichtlich lange bestehen bleibt und sich weiterentwickelt...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.