Mit Cloud Code können Sie mithilfe von skaffold debug
ganz einfach Fehler in Ihrer Anwendung beheben, die in einem Kubernetes-Cluster bereitgestellt wurde.
Sie können in Ihrer Anwendung Fehler auf einem lokalen Cluster (z. B. Minikube oder Docker Desktop), Google Kubernetes Engine oder einem anderen Cloud-Anbieter beheben.
Darüber hinaus müssen Sie sich aufgrund der Unterstützung von Cloud Code zur Fehlerbehebung nicht um die manuelle Einrichtung z. B. der Portweiterleitung oder das Einfügen sprachspezifischer Fehlerbehebungsargumente kümmern. Sie benötigen lediglich eine Cloud Code-fähige Kubernetes-Anwendung, die eine skaffold.yaml
-Konfigurationsdatei und eine cloudcode.kubernetes
-Startkonfiguration enthält.
Fehler in Anwendung beheben
- Wählen Sie in der Cloud Code-Statusleiste den Befehl Debug on Kubernetes aus.
- Wenn Ihre Anwendung keine erforderliche Skaffold-Konfiguration oder
cloudcode.kubernetes
-Startkonfiguration hat, unterstützt Cloud Code Sie bei der Einrichtung. - Geben Sie an, ob Sie den aktuellen Kubernetes-Kontext zum Ausführen der Anwendung verwenden oder ob Sie zu einem bevorzugten Kontext wechseln möchten.
Wenn es sich um den ausgewählten Kontext eines Remote-Clusters handelt, werden Sie aufgefordert, eine Image-Registry anzugeben, an die die Images übertragen werden.
Im Folgenden finden Sie Beispiele, wie Sie für einige gängige Registrys angeben, wo Container-Images gespeichert werden:
Docker Hub docker.io/{account}
Stellen Sie sicher, dass Sie ordnungsgemäß authentifiziert sind, wenn Sie ein privates Docker Hub-Repository verwenden.Google Container Repository (GCR) gcr.io/{project_id} Cloud Code verkettet diese Image-Registry mit dem Image-Namen, der in den Kubernetes-Manifesten angegeben ist, um den Namen des endgültigen Image-Repositorys zu generieren.
Weitere Informationen finden Sie im Leitfaden zur Image-Registry.
Diese Auswahl wird in Ihrer Startkonfiguration
cloudcode.kubernetes
gespeichert (in .vscode/launch.json).Anschließend erstellt Cloud Code Ihre Container, überträgt sie in die Registry, wendet Kubernetes-Konfigurationen auf den Cluster an und wartet auf den Rollout.
Nach Abschluss der Einführung leitet Cloud Code alle deklarierten Containerports automatisch an Ihren Computer weiter und zeigt die URLs im Ausgabefenster an. So können Sie Ihre Live-Anwendung durchsuchen.
Für jeden debugfähigen Container in Ihrer Anwendung werden Sie aufgefordert, das Verzeichnis im Remote-Container, in dem sich das zu debuggende Programm befindet, zu bestätigen oder einzugeben.
Alternativ können Sie "ESC" drücken, um die Fehlerbehebung für den Container zu überspringen.
Cloud Code fügt für jeden debugfähigen Container in der Anwendung eine Debug-Sitzung hinzu.
Sie können jetzt alle Aufgaben ausführen, die normalerweise beim Debuggen von lokalem Code anfallen, z. B. das Festlegen von Haltepunkten und das Durchlaufen von Code, mit dem zusätzlichen Vorteil des Debugging für einen Live-Kubernetes-Cluster:
In der Debugging-Seitenleiste können Sie Variablen und Stack-Informationen prüfen. Verwenden Sie die Debug Console im Debugger im unteren Bereich, um mit der Debugging-Sitzung zu interagieren.
Nach Abschluss der Sitzung stehen über die Cloud Code-Statusleiste weitere Optionen für das Kontextmenü zur Überwachung Ihrer Anwendung und ihrer Ressourcen zur Verfügung, darunter:
- Deployment-Logs öffnen:theffnen Sie die Anwendungslogs einer bestimmten Bereitstellung mit der Cloud Code-Loganzeige.
- Open Service URL (Dienst-URL öffnen): URL des Anwendungsdienstes in einem Webbrowser öffnen
Wiedergabemodus aktivieren/deaktivieren:Wiedergabemodus für die aktuelle Sitzung aktivieren und deaktivieren (nicht für Fehlerbehebungssitzungen verfügbar)
Klicken Sie zum Beenden der Fehlerbehebungssitzung in der Debug-Symbolleiste auf das Stoppsymbol.
Nach Beendigung der Anwendung werden alle bereitgestellten Kubernetes-Ressourcen aus dem Cluster gelöscht.
Konfigurationsdetails
Cloud Code, bereitgestellt von Skaffold, übernimmt die folgenden Konfigurationsdetails:
- Portweiterleitung des Debug-Ports, damit der Debugger hinzugefügt werden kann.
- Anhängen eines Debuggers an einen oder mehrere Debug-fähige Container in Ihrer Anwendung.
Wenn für Ihre Anwendung mehrere debugfähige Container (Container, deren Sprache von Cloud Code Debug unterstützt wird) in
skaffold.yaml
konfiguriert sind, wird an jeden dieser Container ein Debugger angehängt. - Quellzuordnungsdefinitionen über Sitzungen hinweg: Sie können diese Definitionen anpassen, indem Sie Ihren
.vscode/launch.json
direkt bearbeiten.
Darüber hinaus richtet Cloud Code, abhängig von der Sprache, Folgendes ein:
Node.js
Neuschreiben des Einstiegspunkts, der aufgerufen werden soll:
node --inspect=localhost:9229
Python
Installieren Sie das ptvsd
-Modul mithilfe eines Init-Containers und schreiben Sie den Einstiegspunkt für den Aufruf neu:
python -m ptvsd --host localhost --port 5678
Go
Installieren des dlv
-Debuggers mit einem Init-Container und Umschreiben des Einstiegspunkts, sodass die gestartete Fehlerbehebungssitzung nur mit einem Fehlerbehebungsserver (im monitorlosen Modus) den Debug-Prozess beim Start fortsetzt, mehrere Client-Verbindungen akzeptiert und unter localhost:56268
empfängt:
dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --
Java
Fügen Sie eine Umgebung JAVA_TOOLS_OPTIONS mit der entsprechenden JDWP-Konfiguration hinzu, sodass der JDWP-Debugging-Agent eine Socket-Verbindung auf Port 5005 überwacht und der VM die Ausführung ermöglicht, bevor der Debugger angehängt wird:
jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y
Weitere Informationen zum Debugging auf Skaffold finden Sie in der skaffold debug
-Dokumentation.
Debugger an einen Kubernetes-Pod anhängen
Cloud Code unterstützt außerdem das Anfügen eines Debuggers an einen Kubernetes-Pod. Informationen zu den Unterschieden finden Sie in dieser Tabelle.