GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Istio-Tutorial:Erste Schritte mit Istio-Grundlagen

Einführung

Eine praktische Methode zur Verwaltung von Microservices einer Cloud-nativen Anwendung ist die Automatisierung von Anwendungsnetzwerkfunktionen.

Istio ist eine konfigurierbare Service-Mesh-Plattform, die als Steuerungsebene fungiert und die Konfiguration an Sidecar-Proxys und Gateways verteilt. Es ist eine beliebte Option zum Verbinden, Überwachen und Sichern von Containern in einem Kubernetes-Cluster.

In diesem Tutorial erfahren Sie, wie Sie Istio installieren, eine Testanwendung bereitstellen und Ihren Kubernetes-Cluster für die Zusammenarbeit mit der Plattform einrichten.

Voraussetzungen

  • Ein Kubernetes-Cluster (oder Minikube)
  • kubectl-Befehlszeilentool

Laden Sie die neueste Istio-Version herunter

Navigieren Sie zum Herunterladen der neuesten Version von Istio zur Istio-Versionsseite auf GitHub.

Alternativ können Linux-Benutzer curl verwenden um die neueste Version automatisch herunterzuladen und zu extrahieren:

curl -L https://istio.io/downloadIstio | sh -

Der Befehl extrahiert die Installationsdateien in den Ordner namens istio-[version] :

Um eine ältere Version von Istio herunterzuladen, verwenden Sie curl , aber geben Sie die Version und die Prozessorarchitektur an, indem Sie die folgende Syntax verwenden:

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.6.8 TARGET_ARCH=x86_64 sh -

Istio-Installationsanleitung

1. Starten Sie Ihren Kubernetes-Cluster. Dieser Artikel verwendet Minikube:

minikube start

2. Starten Sie als Nächstes die Installation von Istio, indem Sie in den Ordner mit den extrahierten Dateien wechseln:

cd istio-1.9.2

3. Der bin/ Verzeichnis enthält istioctl Client-Binärdatei. Fügen Sie unter Linux den Client Ihrem Pfad hinzu, indem Sie Folgendes eingeben:

export PATH=$PWD/bin:$PATH

Die auf diese Weise gesetzte Variable bleibt nur bestehen, bis Sie die aktuelle Shell-Sitzung beenden. Um die Variable dauerhaft zu setzen, lesen Sie wie man Umgebungsvariablen in Linux setzt.

4. Verwenden Sie istioctl Tool zum Starten des Installationsvorgangs:

istioctl install --set profile=demo -y

Die Ausgabe bestätigt die erfolgreiche Installation:

5. Istio kann bei der Anwendungsbereitstellung automatisch Envoy-Sidecar-Proxys einfügen. Um dies zu aktivieren, verwenden Sie kubectl um ein Namespace-Label hinzuzufügen, das diese Anweisung enthält:

kubectl label namespace default istio-injection=enabled

Damit ist der Istio-Installationsprozess abgeschlossen.

Testen Sie die Bereitstellung über die Bookinfo-Anwendung

Das Istio-Installationsarchiv enthält alle Dateien, die zum Bereitstellen der Beispielanwendung mit dem Namen Bookinfo erforderlich sind .

1. Beginnen Sie mit der Anwendung der bookinfo.yaml Datei mit kubectl :

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

Das System erstellt mehrere Bereitstellungen, Dienste und Pods:

2. Überprüfen Sie die laufenden Dienste:

kubectl get services

3. Überprüfen Sie, ob die Pods bereit sind:

kubectl get pods

Wenn die Pods hochfahren, setzt Istio zusammen mit ihnen Seitenwagen ein:

4. Warten Sie bis READY Label für jeden Pod ist 2/2 . Führen Sie dann den folgenden Befehl aus, um zu sehen, ob die App HTML-Seiten korrekt bereitstellt:

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

Die Ausgabe sollte das Titel-Tag der Seite zusammen mit dem Titel selbst sein:

5. Der nächste Schritt besteht darin, die App für externen Datenverkehr zu öffnen. Wenden Sie bookinfo-gateway.yaml an Datei aus den samples Ordner:

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

Die Ausgabe bestätigt, dass die Anwendung erfolgreich mit dem Istio-Gateway verknüpft wurde:

6. Verwenden Sie istioctl um die Konfiguration zu analysieren und auf mögliche Probleme zu prüfen:

istioctl analyze

Wenn das System keine Probleme findet, wird die folgende Meldung angezeigt:


7. Um auf das im vorherigen Schritt eingerichtete Gateway zuzugreifen, legen Sie die Ingress-Variablen fest. Exportieren Sie zuerst INGRESS_PORT :

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

8. Wiederholen Sie nun den Vorgang für SECURE_INGRESS_PORT :

export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')

9. Überprüfen Sie mit dem Echo-Befehl, ob die Ports erfolgreich zugewiesen wurden:

echo "$INGRESS_PORT" && echo "$SECURE_INGRESS_PORT"

Die Ausgabe zeigt die Portnummern:


10. Exportieren Sie INGRESS_HOST Variable:

export INGRESS_HOST=$(minikube ip)

11. Überprüfen Sie die Variable mit echo :

echo "$INGRESS_HOST"

12. Um Datenverkehr an das Istio Ingress Gateway weiterzuleiten, öffnen Sie ein neues Terminalfenster und geben Sie den folgenden Befehl ein:

minikube tunnel

Minikube dient jetzt als Load Balancer für Istio. Die Ausgabe zeigt, dass Minikube den Datenverkehr leitet:


13. Gehen Sie zurück zum vorherigen Terminalfenster und exportieren Sie die GATEWAY_URL Variable, die aus INGRESS_HOST besteht und INGRESS_PORT Variablen:

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

14. Verwenden Sie echo um die vollständige IP-Adresse und Portnummer anzuzeigen:

echo "$GATEWAY_URL"

15. Geben Sie den folgenden Befehl ein, um die externe Adresse der Anwendung anzuzeigen:

echo http://$GATEWAY_URL/productpage

16. Kopieren Sie die im vorherigen Schritt erhaltene Adresse und fügen Sie sie in einen Webbrowser ein. Die Bookinfo-Website wird erfolgreich geladen:

Richten Sie einen Kubernetes-Cluster für Istio ein

Istio wird mit einer Reihe von Add-ons für beliebte Istio-Dienste geliefert, darunter das Grafana-Dashboard, die Jaeger-Transaktionsverfolgungssoftware, Prometheus-Metrik-Scraper und die Kiali-Verwaltungskonsole.

1. Installieren Sie diese Add-Ons, indem Sie die samples/addons anwenden Ordner:

kubectl apply -f samples/addons

2. Erstellen Sie nun eine Kubernetes-Ingress-Ressource für jedes der Add-Ons. Fügen Sie dazu Folgendes in eine yaml ein Datei.

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: istio-system
  namespace: istio-system
  annotations:
    kubernetes.io/ingress.class: istio
spec:
  rules:
  - host: my-istio-dashboard.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: grafana
          servicePort: 3000
  - host: my-istio-tracing.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: tracing
          servicePort: 9411
  - host: my-istio-logs-database.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: prometheus
          servicePort: 9090
  - host: my-kiali.io
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: kiali
          servicePort: 20001

3. Speichern Sie die Datei und übernehmen Sie die Konfiguration mit kubectl:

kubectl apply -f [file-name]

Die Add-Ons sind nun konfiguriert und einsatzbereit.


Linux
  1. Erste Schritte mit Zsh

  2. Erste Schritte mit ls

  3. Erste Schritte mit Samba für Interoperabilität

  4. Erste Schritte mit PostgreSQL unter Linux

  5. Erste Schritte mit SSH unter Linux

Docker-Tutorial – Erste Schritte mit Docker unter Linux

Vagrant-Tutorial – Erste Schritte mit Vagrant unter Linux

Podman-Tutorial – Erste Schritte mit Podman

Erste Schritte mit Nix Package Manager

Erste Schritte mit systemctl

Tutorial „Erste Schritte mit Azure Docker“.