Gestalten Sie die Zukunft der Softwarebereitstellung und tragen Sie Ihre Stimme durch. Nehmen Sie dazu den 2021 der DevOps-Umfrage an.

Fehler in Anwendung beheben

Mit Cloud Code for IntelliJ lassen sich mühelos Fehler in ihren auf einem Kubernetes-Cluster bereitgestellten Anwendungen beheben. Sie können Fehler in Anwendungen auf einem lokalen Cluster (wie Minikube oder Docker Desktop), GKE oder einem anderen Cloudanbieter beheben.

Außerdem müssen Sie sich beim Cloud Code-Debugging-Support keine Gedanken über eine manuelle Einrichtung machen, z. B. Portweiterleitung einrichten, Debugging-Back-End installieren oder sprachspezifische Debugging-Argumente rechts einfügen, um die Option zu aktivieren. Sie benötigen lediglich eine Cloud Code-fähige Kubernetes-Anwendung, die eine skaffold.yaml-Konfigurationsdatei enthält.

Unterstützte IDEs

Informationen zu unterstützten IDEs, Versionen und Plug-ins finden Sie in der folgenden Tabelle:

Sprache IDE Edition Erforderliches Plug-in
Java IntelliJ IDEA Community oder Ultimate
Go IntelliJ IDEA Ultimate Go-Plug-in
GoLand
Node.js IntelliJ IDEA Ultimate Node.js-Plug-in
WebStorm
Python IntelliJ IDEA Ultimate Python-Plug-in
PyCharm Professionell

Mit Cloud Code können Sie für die folgenden Sprachen Haltepunkte festlegen und Fehler in Remote-Anwendungen beheben, die in Containern ausgeführt werden:

Java

Cloud Code fügt der entsprechenden JDWP-Konfiguration automatisch die Umgebungsvariable JAVA_TOOL_OPTIONS hinzu, um das Debugging zu aktivieren. Wenn JAVA_TOOL_OPTIONS bereits vorhanden ist, verwendet Cloud Code die in JAVA_TOOL_OPTIONS angegebenen Einstellungen.

Node.js

Je nach Struktur Ihrer Anwendung und ihrer Image-Build-Konfiguration müssen Sie dem Debugger möglicherweise helfen, Ihre lokalen Quellen den Remote-Quellen im Container zuzuordnen. Dadurch kann der Node.txt-Debugger Ihre Haltepunkte ordnungsgemäß verarbeiten.

Dies kann auf eine der folgenden Arten konfiguriert werden:

  • Manuelle Konfiguration

    Wählen Sie in der Drop-down-Liste die Option Develop on Kubernetes (In Kubernetes entwickeln) aus und klicken Sie dann auf Edit Configurations (Konfigurationen bearbeiten). Konfigurieren Sie auf dem Tab Debugging die Quellzuordnung von Ihrer lokalen Anwendungsquelle zum Quellspeicherort im Remote-Container.

    Quellort im Bereich "Quellzuordnung" auf dem Tab "Fehlerbehebung" auswählen

    Konfigurationsoptionen:

    • Datei/Verzeichnis – die lokale Datei oder das Verzeichnis Ihrer Anwendung, die auf Kubernetes ausgeführt wird.
    • Remote-Pfad: Der Pfad zu der Datei oder dem Verzeichnis, das im Container auf Kubernetes ausgeführt wird.
  • Automatische Konfiguration

    Sie können diese Zuordnung zu Cloud Code aufheben. Wenn Sie Ihre Fehlerbehebungssitzung starten, versucht Cloud Code, diese Zuordnung automatisch abzuleiten. Die abgeleitete Zuordnung wird in einem Dialogfeld angezeigt. Ein Dialogfeld für jedes Artefakt, für das das Debugging ausgeführt wird.

    Remote-Pfadzuordnungsdialog für jedes Artefakt, das den verwendeten Remote-Pfad angibt

    Konfigurationsoptionen:

    • Lokaler Pfad: der lokale Pfad zum Stammverzeichnis des Artefakts, für das Sie eine Fehlerbehebung durchführen
    • Remote-Pfad: Der Pfad zu der Datei oder dem Verzeichnis, das im Container auf Kubernetes ausgeführt wird. Sie können diesen Wert mit Ihrem eigenen Wert überschreiben. Wenn Sie auf Abbrechen klicken, wird keine Zuordnung angewendet.

Go

Ihre Anwendung muss zur Fehlerbehebung für die AnwendungGo-Modul basierend auf einem der Standard-Umgebungsvariablen für Go im Container, z. B.:GODEBUG ,GOGC ,GOMAXPROCS oderGOTRACEBACK auf. GOTRACEBACK=single ist die Standardeinstellung für Go und GOTRACEBACK=all ist eine allgemein nützliche Konfiguration.

Optional (aber empfohlen) sollte Ihre Anwendung mit den -gcflags='all=-N -l'-Optionen erstellt werden, um Optimierungen zu deaktivieren. Skaffold-Profile sind dafür eine sinnvolle Option und können in der Ausführungskonfiguration im Feld Deployment-Profil auf der Erstellen/Bereitstellen.

Python

Die folgenden Voraussetzungen müssen erfüllt sein, damit Sie Ihre Anwendung für das Debugging konfigurieren können:

  • IDE, Edition und Plug-in sind kompatibel

    Informationen zu kompatiblen IDEs, Versionen und Plug-ins finden Sie unter Unterstützte IDEs.

  • Die Skaffold-Version ist Version 1.25.0

    Sie können Cloud Code die Verwaltung Ihrer Abhängigkeiten erlauben oder auf eine lokale Skaffold-Installation verweisen. Siehe Einstellungen > Tools > Cloud Code > Abhängigkeiten.

  • Python-Interpreter ist konfiguriert

    Ohne einen in Ihrem Projekt konfigurierten Python-Interpreter funktioniert das Debugging nicht, da es keine Möglichkeit zur Ausführung gibtpydevd , dem zugrunde liegenden Python-Debugger.

    IDE Konfiguration
    IntelliJ IDEA Für das Python-Debugging mit Cloud Code muss ein Python SDK für Ihr Projekt konfiguriert sein.

    Gehen Sie zu Datei > Projektstruktur und fügen Sie auf dem Tab Projekt ein Python SDK hinzu. Falls keines vorhanden ist, fügen Sie auf dem Tab SDK eine hinzu.
    PyCharm Wechseln Sie zu File > Settings > Project > Python Interpreter oder zu Mac OS X, PyCharm > Preferences > Project > Python Interpreter und fügen Sie einen Python-Interpreter hinzu. auf.

Weitere Informationen finden Sie in der Skaffold-Dokumentation zur Fehlerbehebung.

Debugging

  1. Wenn Sie den Entwicklungszyklus im Fehlerbehebungsmodus auf Ihrem Kubernetes-Cluster starten möchten, klicken Sie auf die Debug-Aktion für Entwickeln auf Kubernetes Symbol für Ausführungsaktion.

    Kubernetes-Cluster-Entwicklungszyklus im Debug-Modus starten

    Der kontinuierliche Entwicklungszyklus wird im Fehlerbehebungsmodus gestartet.

    Cloud Code hängt an eine Sitzung zur Fehlerbehebung an:

    Kubernetes Debugger hinzugefügt

  2. Die normalen Aufgaben wie das Einrichten von Haltepunkten und das Durchlaufen von Code lassen sich jetzt bei einem Kubernetes-Cluster ausführen.

    Kubernetes Debugger-Sitzung

  3. Klicken Sie zum Beenden der Fehlerbehebungssitzung auf das Stoppsymbol in der Konfiguration Develop on Kubernetes (In Kubernetes entwickeln).

Support

Wenn Sie uns Feedback geben möchten, können Sie ein Problem auf GitHub melden oder eine Frage auf Stack Overflow stellen.