Freigeben über


Verwenden von Bridge to Kubernetes (VS-Code)

Anmerkung

"Bridge to Kubernetes wird am 30. April 2025 eingestellt." Ausführliche Informationen zur Außerbetriebnahme und den Open-Source-Alternativen finden Sie im GitHub-Problem.

Mit Der Brücke zu Kubernetes können Sie Code auf Ihrem Entwicklungscomputer ausführen und debuggen, während Sie weiterhin mit Ihrem Kubernetes-Cluster mit den restlichen Anwendungen oder Diensten verbunden sind. In diesem Leitfaden erfahren Sie, wie Sie "Bridge to Kubernetes" verwenden, um den Datenverkehr zwischen Ihrem Kubernetes-Cluster und Code umzuleiten, der auf Ihrem Entwicklungscomputer ausgeführt wird.

Bevor Sie beginnen

In diesem Artikel wird davon ausgegangen, dass Sie bereits über einen eigenen Cluster mit einer Microservices-Architektur verfügen und einen der Pods in Ihrem Cluster debuggen möchten. Wenn Sie erfahren möchten, wie Sie Bridge to Kubernetes mit einer vorhandenen Beispielanwendung verwenden, lesen Sie Verwenden von Bridge to Kubernetes mit einem Beispiel. Wenn Sie den Azure Kubernetes-Dienst verwenden und eine komplexere Beispielanwendung verwenden möchten, lesen Sie Bridge to Kubernetes (AKS).

Voraussetzungen

  • Ein Kubernetes-Cluster mit einer App, die Sie debuggen möchten.
  • Visual Studio Code unter macOS, Windows 10 oder höher oder Linux ausgeführt.

Herstellen einer Verbindung mit Ihrem Cluster und Debuggen eines Diensts

Es gibt verschiedene Möglichkeiten, den Prozess des Debuggens mit Bridge to Kubernetes zu starten. Wenn Sie mit der Open Source Kubernetes-Erweiterung beginnen, ohne dass Bridge zu Kubernetes installiert ist, wechseln Sie zu Installieren und verwenden Sie das lokale Tunneldebugging. Wenn Sie "Bridge to Kubernetes" bereits installiert haben, fahren Sie mit den folgenden Schritten fort:

  1. Stellen Sie auf dem Entwicklungscomputer sicher, dass der aktuelle Kontext auf den Cluster und den Namespace festgelegt ist, in dem Ihre Anwendung ausgeführt wird.

  2. Öffnen Sie den Arbeitsbereich für die App, die Sie in Visual Studio Code debuggen möchten. Stellen Sie in der Kubernetes-Erweiterungsansicht unter Clustersicher, dass Ihr Cluster und Namespace ausgewählt sind. Öffnen Sie die Befehlspalette (STRG+UMSCHALT+P oder CMD+UMSCHALT+P auf einem Mac) und führen Sie den Befehl Bridge to Kubernetes: Konfigurieren aus, um den Konfigurationsprozess zu starten.

  3. Wählen Sie den Kubernetes-Dienst aus, den Sie zu Ihrer lokalen Version umleiten möchten.

    Wählen Sie den Dienst aus, um eine Verbindung mit herzustellen.

    Der gesamte Datenverkehr im Kubernetes-Cluster wird für Ihren Dienst an die Version Ihrer Anwendung umgeleitet, die auf Ihrem Entwicklungscomputer ausgeführt wird. Brücke zu Kubernetes leitet auch den gesamten ausgehenden Datenverkehr von der Anwendung zurück zu Ihrem Kubernetes-Cluster.

    Wichtig

    Sie können nur Dienste umleiten, die über einen einzelnen Pod verfügen.

  4. Nachdem Sie Ihren Service ausgewählt haben, überspringen Sie den nächsten Abschnitt und fahren Sie fort, indem Sie den Schritten in Konfigurieren des Debuggers für lokales Tunneldebugging mit Bridge to Kubernetesfolgen.

Installieren und Verwenden des lokalen Tunneldebuggings

Führen Sie die folgenden Schritte aus, um mit der Verwendung des lokalen Tunneldebuggings zu beginnen, wenn Sie die Open Source-Kubernetes-Erweiterung installiert haben und über einen Kubernetes-Cluster mit Diensten verfügen, die Sie debuggen möchten. Die Schritte in diesem Abschnitt führen Sie durch die Installation von Bridge to Kubernetes und starten den Konfigurationsprozess für das Debuggen lokaler Tunnel.

Anmerkung

Die Kubernetes-Erweiterung für VS Code bietet einen API-Einstiegspunkt, mit dem Erweiterungsautoren andere lokale Tunnellösungen aus dem VS Code Marketplace beitragen können. Brücke zu Kubernetes ist eine mögliche Implementierung der Debugfunktion für lokale Tunnel.

Es gibt zwei Möglichkeiten, mit der Verwendung des lokalen Tunneldebuggings in VS Code zu beginnen. Die erste Möglichkeit besteht darin, die Befehlspalette zu öffnen (STRG+Shift+P oder Befehlstaste+Shift+P auf einem Mac) und Kubernetes: Debug (Local Tunnel)einzugeben.

Screenshot des Befehls

Navigieren Sie alternativ zum Kubernetes-Cluster-Explorer. Öffnen Sie die Ressourcen des aktiven Clusters, und suchen Sie einen Dienst oder einen Pod, den Sie debuggen möchten, und klicken Sie dann mit der rechten Maustaste auf den Dienst, und wählen Sie Debuggen: Lokaler Tunnelaus.

Wenn Sie zu diesem Zeitpunkt keine VS Code-Erweiterung installiert haben, die lokale Debugfunktionen bietet, werden Sie an den Marketplace umgeleitet, um eine Erweiterung auszuwählen, die lokales Debuggen bereitstellt. Wählen Sie die Erweiterung Bridge to Kubernetes aus.

Ein Screenshot, der das Kontextmenü „Debuggen Lokaler Tunnel“ in VS Code zeigt

Nachdem die Erweiterung "Bridge to Kubernetes" installiert wurde, wählen Sie das nächste Mal Debug: Local Tunnelaus, überspringen Sie den Installationsschritt, und fahren Sie direkt mit dem nächsten Schritt fort, Konfigurieren des Debuggers für das lokale Tunneldebugging mit Bridge to Kubernetes.

Konfigurieren des Debuggers für lokales Tunneldebugging mit Bridge to Kubernetes

Der erste Schritt beim Konfigurieren des Debuggers für das debuggen von lokalen Tunneln besteht darin, dass Sie aufgefordert werden, den TCP-Port einzugeben, den Ihre Anwendung für die lokale Ausführung verwendet:

Geben Sie die Portnummer

Wählen Sie eine Debugstartkonfiguration aus, die Normalerweise beim lokalen Ausführen der Anwendung verwendet wird. Wenn Sie nicht über eine Startkonfiguration verfügen, können Sie entweder "Bridge to Kubernetes" erstellen lassen oder wählen, dass sie keins erstellen möchten. In diesem Fall müssen Sie Die Anwendung oder den Dienst manuell starten. Weitere Informationen finden Sie unter Startkonfigurationen.

Auswählen der Konfiguration für den Debuggerstart

Sie haben die Wahl, isoliert oder nicht isoliert zu arbeiten. Wenn Sie isoliert ausgeführt werden, werden nur Ihre Anforderungen an Ihren lokalen Prozess weitergeleitet. andere Entwickler können den Cluster verwenden, ohne betroffen zu sein. Wenn Sie die Aufgabe nicht isoliert ausführen, wird der gesamte Datenverkehr an Ihren lokalen Prozess umgeleitet. Weitere Informationen zu dieser Option finden Sie unter Verwenden von Routingfunktionen für die Entwicklung in einer Isolation.

Isolation auswählen

Wählen Sie auf der linken Seite das Symbol Debuggen aus, und wählen Sie die neu hinzugefügte Kubernetes-Startkonfiguration aus, z. B. Starten über NPM mit Kubernetesoben. Diese Startkonfiguration wird von Bridge to Kubernetes erstellt, wenn Sie diese Option auswählen.

Auswählen des Debugstartprofils

Anmerkung

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

Ihr Entwicklungscomputer ist verbunden, wenn die Statusleiste für VS-Code orange wird und die Kubernetes-Erweiterung zeigt, dass Sie verbunden sind.

Debuggen mit Brücke zu Kubernetes

Sobald der Entwicklungscomputer verbunden ist, beginnt der Datenverkehr mit der Umleitung an Ihren Entwicklungscomputer für den Dienst, den Sie ersetzen.

Anmerkung

Bei nachfolgenden Starts werden Sie nicht zur Eingabe des Dienstnamens, des Ports, des Startvorgangs oder der isolierten Ausführung aufgefordert. Diese Werte werden in .vscode/tasks.jsongespeichert. Sie können diese Einstellungen später ändern. Dazu öffnen Sie die Befehlspalette (STRG+UMSCHALT+P oder CMD+UMSCHALT+P auf einem Mac) und führen Sie den Befehl Bridge to Kubernetes: Konfigurieren aus. Sie können .vscode/launch.json und .vscode/tasks.json öffnen, um die spezifischen Konfigurationseinstellungen zu sehen, die im Hinblick auf Ihr Startprofil zugefügt werden, wenn Bridge zu Kubernetes angewandt wird.

Wenn Ihr Cluster gRPC C Coreverwendet, eine Implementierung von gRPC, die c-aresnutzt, wird Ihrem Startprofil eine Umgebungsvariable hinzugefügt: GRPC_DNS_RESOLVER mit dem Wert native. Diese Variable gibt an, dass eine Problemumgehung verwendet werden soll, um beim Herstellen einer Verbindung eine 2-minütige Zeitverzögerung zu vermeiden. Weitere Informationen finden Sie in gRPC-Problem.

Festlegen eines Haltepunkts

Legen Sie einen Haltepunkt mit F9 fest, oder wählen Sie Ausführen und dann Haltepunkt umschalten aus.

Navigieren Sie zur Beispielanwendung, indem Sie die öffentliche URL öffnen. Wenn ihr Code den Breakpoint erreicht, sollte er im Debugger geöffnet werden. Drücken Sie zum Fortsetzen des Diensts STRG+F5 oder wählen Sie Ausführen und dann Weiter aus. Kehren Sie zu Ihrem Browser zurück, und überprüfen Sie, ob ein Platzhalterbild für das Fahrrad angezeigt wird.

Aktualisieren Der Anwendung

Wenn Sie Codeänderungen lokal vornehmen, hängt es davon ab, ob Sie isoliert arbeiten oder nicht, ob sie für andere Personen sichtbar sind, die den Cluster verwenden. Wenn Sie isoliert ausgeführt werden, können Sie Änderungen vornehmen, die sich nicht auf andere Benutzer auswirken.

Bearbeiten sie Ihren Code, speichern Sie ihre Änderungen und drücken Sie STRG+UMSCHALT+F5 (⇧⌘F5 auf einem Mac) oder wählen Sie Ausführen und dann Debuggen neu starten aus. Nachdem Sie erneut verbunden sind, aktualisieren Sie Ihren Browser, und überprüfen Sie Ihre Änderungen.

Wählen SieAusführen und dann Debuggen beenden aus, oder drücken Sie UMSCHALT+ F5, um den Debugger zu beenden.

Anmerkung

Standardmäßig trennt das Beenden der Debugaufgabe den Entwicklungscomputer auch von Ihrem Kubernetes-Cluster. Sie können dieses Verhalten ändern, indem Sie in den Visual Studio Code-Einstellungen nach Bridge to Kubernetes: Trennen nach dem Debuggen suchen und das Häkchen neben Automatisch trennen wenn das Debuggen anhält entfernen. Nach dem Aktualisieren dieser Einstellung bleibt der Entwicklungscomputer verbunden, wenn Sie das Debuggen beenden und starten. Um den Entwicklungscomputer vom Cluster zu trennen, klicken Sie in der Statusleiste auf die "Bridge to Kubernetes"-Erweiterung und wählen Sie dann Sitzung beendenaus.

Zusätzliche Konfiguration

Bridge to Kubernetes kann den Datenverkehr leiten und Umgebungsvariablen replizieren, ohne dass eine zusätzliche Konfiguration erforderlich ist. Wenn Sie Dateien herunterladen müssen, die in den Container in Ihrem Kubernetes-Cluster bereitgestellt werden, z. B. eine ConfigMap-Datei, können Sie eine KubernetesLocalProcessConfig.yaml erstellen, um diese Dateien auf Ihren Entwicklungscomputer herunterzuladen. Weitere Informationen finden Sie unter Configure Bridge to Kubernetes.

Wenn Sie einen AKS-Cluster verwenden, der verwaltete Identität nutzt, einem von Microsoft Entra ID bereitgestellten Sicherheitsfeature, beachten Sie Verwenden der verwalteten Identität mit Bridge to Kubernetes, um Informationen zur Konfiguration von Bridge to Kubernetes für dieses Szenario zu erhalten.

Verwenden von Protokollierung und Diagnose

Die Protokollierungsausgabe wird in das Fenster Bridge to Kubernetes geschrieben, nachdem Ihr Entwicklungscomputer mit Ihrem Kubernetes-Cluster verbunden wurde.

Klicken Sie auf die Kubernetes Statusleiste, und wählen Sie Verbindungsdiagnoseinformationen anzeigenaus. Mit diesem Befehl werden die aktuellen Umgebungsvariablen und DNS-Einträge in der Protokollierungsausgabe gedruckt.

Darüber hinaus finden Sie die Diagnoseprotokolle im Verzeichnis Bridge to Kubernetes im TEMP-Verzeichnis Ihres Entwicklungscomputers. Unter Windows 10 befindet sich das in %TEMP%\Bridge to Kubernetes. Auf einem Mac finden Sie das TEMP-Verzeichnis, indem Sie echo $TMPDIR aus einem Terminalfenster ausführen. Unter Linux ist es /tmp/Bridge to Kubernetes.

Ausführen im Isolationsmodus

Mit Bridge to Kubernetes können Sie auch eine isolierte Version einrichten, an der Sie arbeiten, was bedeutet, dass andere, die den Cluster verwenden, von Ihren Änderungen nicht betroffen sind. Dieser Isolationsmodus wird erreicht, indem Sie Ihre Anforderungen an Ihre Kopie jedes betroffenen Diensts weiterleiten, aber den gesamten anderen Datenverkehr normal weiterleiten. Um auf die lokale Endpunkt-URL für die isolierte App zuzugreifen, starten Sie den Debugger im Isolationsmodus, öffnen Sie das Kubernetes-Menü auf der Statusleiste, und wählen Sie den Endpunkteintrag aus. Weitere Informationen zur Funktionsweise des Routings im Isolationsmodus finden Sie unter How Bridge to Kubernetes Works.

Headerweitergabe

Um Bridge to Kubernetes gemäß seiner Konzeption zu verwenden, müssen Sie sicherstellen, dass der Bridge to Kubernetes-Header von eingehenden Anforderungen auf alle Anforderungen weitergegeben wird, die Ihre Dienste an andere Dienste im Cluster stellen. Alle HTTP-Anforderungs-APIs bieten unabhängig von der Sprache eine frameworkspezifische Möglichkeit, dies zu tun. Für .NET-Code in C# können Sie z. B. Code wie folgt verwenden:

var request = new HttpRequestMessage();
request.RequestUri = new Uri("http://mywebapi/api/values/1");
if (this.Request.Headers.ContainsKey("kubernetes-route-as"))
{
    // Propagate the dev space routing header
    request.Headers.Add("kubernetes-route-as", this.Request.Headers["kubernetes-route-as"] as IEnumerable<string>);
}
var response = await client.SendAsync(request);

Anmerkung

Um zu verhindern, dass der Code bei jeder Anforderung beeinträchtigt wird, können Sie eine Klasse erstellen, die von System.Net.Http.DelegatingHandler erbt, und die SendAsync-Methode mit dem Code aus dem vorherigen Beispiel überschreiben. Sie finden Code mithilfe dieser Technik im Web. Ein Beispiel ist die ordnungsgemäße Verteilung von „kubernetes-route-as“ in Bridge to Kubernetes.

Für Node.js-Dienste können Sie Code wie folgt verwenden, der aus dem Todo-App-Beispiel im Bridge to Kubernetes-Repostammt:

    server.get("/api/stats", function (req, res) {
        var options = {
            host: process.env.STATS_API_HOST,
            path: '/stats',
            method: 'GET'
        };
        const val = req.get('kubernetes-route-as');
        if (val) {
            console.log('Forwarding kubernetes-route-as header value - %s', val);
            options.headers = {
                'kubernetes-route-as': val
            }
        }
        var req = http.request(options, function(statResponse) {
            res.setHeader('Content-Type', 'application/json');
            var responseString = '';
            //another chunk of data has been received, so append it to `responseString`
            statResponse.on('data', function (chunk) {
                responseString += chunk;
            });
            statResponse.on('end', function () {
                res.send(responseString);
            });
        });

        req.on('error', function(e) {
            console.log('problem with request: ' + e.message);
          });

          req.end();
    });

Kommunikation mit anderen Diensten

Wenn Sie mit einem anderen Dienst im selben Kubernetes-Cluster kommunizieren, z. B. mit einer HTTP-Anforderung, verwenden Sie in der Regel den hartcodierten Dienstnamen in der URL für die Anforderung, aber das funktioniert in einigen Szenarien nicht, z. B. bei Verwendung von Remote SSH, WSL und Codespaces. In diesem Artikel wird beschrieben, wie Sie die Kubernetes-Dienstumgebungsvariablen verwenden, um die Verbindungs-URL für diese Szenarien anzugeben.

Fehlerbehebung

Wenn diese Fehlermeldung beim Aktivieren der Brücke zu Kubernetes-Erweiterung angezeigt wird:

"Fehler beim Aktualisieren von Abhängigkeiten: Maximale Anzahl von Wiederholungsversuchen überschritten"

Wiederholen Sie zunächst die Aktivierung mithilfe der Schaltfläche. Wenn der Vorgang wiederholt nicht erfolgreich ist, siehe https://github.com/microsoft/mindaro/issues/32.

Wenn Sie Bridge to Kubernetes in einer Remote-SSH-Sitzung verwenden, schlägt EndpointManager fehl, kann das Problem darin bestehen, dass Bridge to Kubernetes die Hostdatei aufgrund eines Berechtigungsproblems nicht ändern kann. Um Remote-SSH zu aktivieren oder als nicht-elevierter Benutzer auszuführen, sollten Sie Ihren Code aktualisieren, um Kubernetes-Dienstumgebungsvariablen zu verwenden, und VS Code so konfigurieren, dass diese verwendet werden, wie im Thema Dienstumgebungsvariablen beschrieben.

Nächste Schritte

Erfahren Sie mehr über Bridge to Kubernetes in Wie Bridge to Kubernetes funktioniert.

Wenn Sie mehrere Dienste gleichzeitig parallel debuggen müssen, lesen Sie Debuggen mehrerer Dienste gleichzeitig.