Verwenden von Bridge to Kubernetes (Visual Studio)

In diesem Tutorial erfahren Sie, wie Sie Datenverkehr zwischen Ihrem Kubernetes-Cluster und dem auf dem Entwicklungscomputer ausgeführten Code mit Bridge to Kubernetes weiterleiten.

Darüber hinaus finden Sie in dieser Anleitung ein Skript zur Bereitstellung einer umfangreichen Beispielanwendung mit mehreren Microservices auf einem Kubernetes-Cluster.

Weitere Informationen zu Bridge to Kubernetes finden Sie unter Funktionsweise von Bridge to Kubernetes.

Voraussetzungen

Informationen zu den Daten

In diesem Tutorial wird mithilfe von Bridge to Kubernetes eine Microserviceversion einer einfachen TODO-Beispielanwendung in einem beliebigen Kubernetes-Cluster entwickelt. Diese TODO-App-Beispielanwendung verwendet Visual Studio und basiert auf Code, der von TodoMVC bereitgestellt wurde.

Diese Schritte sollten auf allen Kubernetes-Clustern funktionieren. Wenn Sie also bereits über eine eigene Anwendung in einem Kubernetes-Cluster verfügen, können Sie die folgenden Schritte dennoch ausführen und dabei die Namen Ihrer eigenen Dienste verwenden.

Das TODO-Anwendungsbeispiel besteht aus einem Front-End und einem Back-End, das dauerhafte Speicherung bereitstellt. Dieses erweiterte Beispiel fügt eine Statistikkomponente hinzu und teilt die Anwendung in eine Reihe von Microservices auf, insbesondere:

  • Das Front-End ruft die Datenbank-API auf, um TODO-Elemente dauerhaft zu speichern und zu aktualisieren.
  • Der Database-API-Dienst basiert auf einer Mongo-Datenbank, um TODO-Elemente dauerhaft zu speichern.
  • Das Front-End schreibt Hinzufügungs-, Erledigungs- und Löschungsereignisse in eine RabbitMQ-Warteschlange.
  • Ein Statistikworker empfängt Ereignisse aus der RabbitMQ-Warteschlange und aktualisiert einen Redis Cache.
  • Eine Statistik-API macht die zwischengespeicherten Statistiken zur Anzeige im Front-End verfügbar.

Insgesamt besteht diese erweiterte TODO-Anwendung aus sechs zusammenhängenden Komponenten.

Überprüfen des Clusters

Öffnen Sie eine Eingabeaufforderung, und überprüfen Sie, ob kubectl installiert und der gewünschte Cluster unter dem Pfad verfügbar und bereit ist. Legen Sie den Kontext auf diesen Cluster fest.

kubectl cluster-info
kubectl config use-context {context-name}

Wobei {context-name} der Name des Kontexts für den Cluster ist, den Sie für das „todo-app“-Beispiel verwenden möchten.

Bereitstellen der Anwendung

Klonen Sie das mindaro-Repository, und öffnen Sie ein Befehlsfenster mit dem aktuellen Arbeitsordner für samples/todo-app.

Erstellen Sie einen Namespace für das Beispiel.

kubectl create namespace todo-app

Wenden Sie dann das Bereitstellungsmanifest an:

kubectl apply -n todo-app -f deployment.yaml

Dies ist eine einfache Bereitstellung, die das Front-End mithilfe eines Diensts vom Typ LoadBalancer verfügbar macht. Warten Sie, bis alle Pods ausgeführt werden und die externe IP-Adresse des frontend-Diensts verfügbar wird.

Wenn Sie mit MiniKube testen, müssen Sie minikube tunnel zum Auflösen einer externen IP-Adresse verwenden. Wenn Sie AKS oder einen anderen cloudbasierten Kubernetes-Anbieter verwenden, wird automatisch eine externe IP-Adresse zugewiesen. Verwenden Sie den folgenden Befehl, um den frontend-Dienst zu überwachen, um zu warten, bis er ausgeführt wird:

kubectl get service -n todo-app frontend --watch

NAME       TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)        AGE
frontend   LoadBalancer   10.0.245.78   20.73.226.228   80:31910/TCP   6m26s

Navigieren Sie zu der Anwendung, indem Sie die externe IP-Adresse und den lokalen Port verwenden (die erste Nummer in der Spalte „PORT(S)“).

http://{external-ip}:{local-port}

Testen Sie die laufende App im Browser. Beachten Sie beim Hinzufügen, Erledigen und Löschen von TODO-Elementen, dass die Statistikseite mit den erwarteten Metriken aktualisiert wird.

Herstellen einer Clusterverbindung und Debuggen eines Diensts

Öffnen Sie samples\todo-app\database-api\database-api.csproj in Visual Studio. Wählen Sie in dem Projekt, wie nachfolgend gezeigt, im Dropdownmenü mit den Starteinstellungen Bridge to Kubernetes aus.

Klicken auf Bridge to Kubernetes

Klicken Sie auf die Startschaltfläche neben Bridge to Kubernetes. Gehen Sie im Dialogfeld Profil für Brücke zu Kubernetes erstellen wie folgt vor:

  • Wählen Sie den Namen Ihres Clusters aus.
  • Wählen Sie todo-app als Ihren Namespace aus.
  • Wählen Sie database-api für den umzuleitenden Dienst aus.
  • Wählen Sie dieselbe URL aus, die Sie zuvor zum Starten Ihres Browsers verwendet haben: http://{externe-IP}: {lokaler-Port}

Auswählen des Bridge to Kubernetes-Clusters

Geben Sie an, ob die Ausführung isoliert erfolgen soll. Dies bedeutet, dass andere Benutzer des Clusters, nicht von Ihren Änderungen betroffen sind. Dieser Isolationsmodus wird erreicht, indem Sie Ihre Anforderungen an Ihre Kopie des jeweiligen betroffenen Diensts weiterleiten, während der gesamte andere Datenverkehr normal weiter verläuft. Eine ausführlichere Erläuterung dazu finden Sie unter Funktionsweise von Bridge to Kubernetes.

Klicken Sie auf OK. Der gesamte Datenverkehr im Kubernetes-Cluster wird für den Dienst database-api an die Version der Anwendung umgeleitet, die auf dem Entwicklungscomputer ausgeführt wird. Bridge to Kubernetes leitet zudem den gesamten ausgehenden Datenverkehr der Anwendung zurück an den Kubernetes-Cluster.

Hinweis

Sie werden aufgefordert, die Ausführung von EndpointManager mit erhöhten Rechten zuzulassen und zu erlauben, dass Ihre Hostdatei geändert wird.

Sobald in der Statusleiste angezeigt wird, dass Sie mit dem database-api-Dienst verbunden sind, ist Ihr Entwicklungscomputer verbunden.

Verbundener Entwicklungscomputer

Hinweis

Bei nachfolgenden Starts wird Ihnen das Dialogfeld Profil für Brücke zu Kubernetes erstellen nicht mehr angezeigt. Diese Einstellungen werden in den Projekteigenschaften unter Debuggen aktualisiert.

Sobald Ihr Entwicklungscomputer verbunden ist, wird Datenverkehr für den Dienst, den Sie ersetzen, an den Entwicklungscomputer umgeleitet.

Hinweis

Um das Debugprofil später zu bearbeiten, beispielsweise wenn Sie mit einem anderen Kubernetes-Dienst testen möchten, wählen Sie Debuggen > Debugeigenschaften aus, und klicken Sie auf die Schaltfläche Ändern.

Festlegen eines Haltepunkts

Öffnen Sie „MongoHelper.cs“, und klicken Sie auf eine beliebige Stelle in Zeile 68 in der CreateTask-Methode, um Ihren Cursor dort zu platzieren. Legen Sie durch Drücken von F9 oder Klicken auf Debuggen > Haltepunkt umschalten einen Haltepunkt fest.

Navigieren Sie zur Beispielanwendung, indem Sie die öffentliche URL öffnen (die externe IP-Adresse für den Front-End-Dienst). Drücken Sie zum Fortsetzen des Diensts auf F5, oder klicken Sie auf Debuggen > Weiter.

Entfernen Sie den Breakpoint, indem Sie Ihren Cursor in der Zeile mit dem Breakpoint platzieren und F9 drücken.

Hinweis

Wenn Sie den Debugtask anhalten, wird standardmäßig auch Ihr Entwicklungscomputer vom Kubernetes-Cluster getrennt. Sie können dieses Verhalten ändern, indem Sie im Abschnitt Kubernetes-Debugtools des Dialogfelds Tools > Optionen die Einstellung Verbindung nach dem Debuggen trennen auf false festlegen. Wenn Sie diese Einstellung geändert haben, bleibt Ihr Entwicklungscomputer verbunden, wenn Sie das Debuggen beenden und starten. Zum Trennen Ihres Entwicklungscomputers vom Cluster klicken Sie in der Symbolleiste auf die Schaltfläche Trennen.

Screenshot der Kubernetes-Debugoptionen.

Zusätzliche Konfiguration

Bridge to Kubernetes kann die Weiterleitung des Datenverkehrs und die Replikation von Umgebungsvariablen ohne weitere Konfiguration verarbeiten. Wenn Sie Dateien herunterladen müssen, die in den Container im Kubernetes-Cluster eingebunden sind, z. B. eine ConfigMap-Datei, können Sie eine KubernetesLocalProcessConfig.yaml-Datei erstellen, um diese Dateien auf den Entwicklungscomputer herunterzuladen. Weitere Informationen finden Sie unter Verwenden von KubernetesLocalProcessConfig.yaml zur zusätzlichen Konfiguration für Bridge to Kubernetes.

Verwenden der Protokollierung und Diagnose

Sie finden die Diagnoseprotokolle auf dem Entwicklungscomputer im Verzeichnis Bridge to Kubernetes im Unterverzeichnis TEMP.

Nächste Schritte

Informieren Sie sich über die Funktionsweise von Bridge to Kubernetes.