Cette page a été traduite par l'API Cloud Translation.
Switch to English

Déboguer une application Kubernetes

Cloud Code vous permet de déboguer facilement une application déployée sur un cluster Kubernetes à l'aide de skaffold debug.

Vous pouvez déboguer votre application sur un cluster local (tel que Minikube ou Docker Desktop), Google Kubernetes Engine ou tout autre fournisseur cloud.

En outre, avec la compatibilité de Cloud Code, vous n'avez pas à effectuer une configuration manuelle, comme la configuration du transfert de port ou l'injection d'arguments de débogage spécifiques à un langage. Vous avez simplement besoin d'une application Kubernetes prête pour Cloud Code, qui inclut un fichier de configuration skaffold.yaml et une configuration de lancement cloudcode.kubernetes.

Déboguer une application

  1. Dans la barre d'état de Cloud Code, sélectionnez la commande Débogage sur Kubernetes.
  2. Si votre application ne dispose pas de la configuration Skaffold requise ni de la configuration de lancement cloudcode.kubernetes, Cloud Code vous aide à les configurer.
  3. Vérifiez si vous utilisez le contexte Kubernetes actuel pour exécuter l'application (ou changez de version).
  4. Si le contexte choisi est un cluster distant, vous êtes invité à indiquer un registre d'images dans lequel transférer les images.

    Les exemples suivants montrent comment spécifier l'emplacement de stockage des images de conteneur pour certains registres courants:

    Docker Hub docker.io/{account}
    Assurez-vous d'être correctement authentifié si vous utilisez un dépôt Docker Hub privé.
    Google Container Repository (GCR) gcr.io/{project_id}
    AWS Container Repository (ECR) {aws_account_id}.dkr.ecr.{region}.amazonaws.com/{my-app}
    Azure Container Registry (ACR) {my_acr_name}.azurecr.io/{my-app}

    Pour générer le nom de dépôt de l'image finale, Cloud Code concatène ce registre d'images avec le nom d'image spécifié dans les fichiers manifestes Kubernetes. Ce choix est stocké dans la configuration de lancement cloudcode.kubernetes (disponible dans le fichier .vscode/launch.json).

    Pour en savoir plus, consultez le guide de gestion des registres d'images.

    Cloud Code crée vos conteneurs, les transfère dans le registre, applique les configurations Kubernetes au cluster et attend le déploiement.

  5. Après le déploiement, Cloud Code transfère automatiquement tous les ports de conteneur déclarés sur votre machine et affiche les URL dans la fenêtre de sortie afin que vous puissiez parcourir votre application active.

    Transfert des ports et affichage des URL dans la fenêtre de sortie

  6. Pour chaque conteneur pouvant être débogué dans votre application, confirmez ou saisissez le répertoire dans le conteneur distant où se trouve le programme que vous souhaitez déboguer.

    Vous pouvez également appuyer sur ÉCHAP pour ignorer le débogage du conteneur.

    Invite de racine distante

    Cloud Code associe une session de débogage pour chaque conteneur pouvant être débogué dans l'application.

    Vous pouvez désormais effectuer les mêmes opérations que lorsque vous déboguez du code local, comme définir des points d'arrêt et accéder au code d'un cluster Kubernetes actif.

  7. Pour inspecter les variables et les informations de pile, utilisez la barre latérale de débogage. Pour interagir avec la session de débogage, utilisez la console de débogage dans le volet inférieur du débogueur.

    Application interrompue au niveau du point d'arrêt, sections variables et pile des appels remplies avec des valeurs couvertes

  8. Une fois votre session terminée, d'autres options de menu contextuel sont disponibles pour surveiller votre application et ses ressources à l'aide de la barre d'état Cloud Code, y compris:

    • Ouvrir les journaux de déploiement:ouvrez les journaux d'application d'un déploiement spécifique à l'aide de la visionneuse de journaux Cloud Code.
    • URL ouverte du service:ouvrez l'URL du service d'application d'un service spécifique dans un navigateur Web.
    • Turn / off watch mode (Activer/Désactiver le mode Watch) : permet d'activer ou de désactiver le mode de lecture pour la session en cours (non disponible pour les sessions de débogage).

      Options disponibles via la barre d'état Cloud Code: en plus des actions standards de Cloud Code, ouvrez les journaux de déploiement, ouvrez l'URL du service et du mode Lecture,

  9. Pour mettre fin à la session de débogage, cliquez sur l'icône d'arrêt dans la barre d'outils de débogage.

    Une fois la session de débogage terminée, toutes les ressources Kubernetes déployées sont supprimées du cluster.

    Arrêter de déboguer l'application Kubernetes

Détails de la configuration

Cloud Code, fourni par Skaffold, est géré automatiquement par les informations de configuration suivantes pour tous les langages compatibles:

  • Transfert du port de débogage pour que le débogueur puisse être associé
  • Association d'un débogueur à un ou plusieurs conteneurs débogables dans votre application. Si votre application comporte plusieurs conteneurs pouvant être débogués (conteneurs dont le langage est compatible avec le débogage Cloud Code) configuré dans le fichier skaffold.yaml, un débogueur est associé à chaque conteneur pouvant être débogué.
  • Conservation des définitions de mappage source pour plusieurs sessions. Vous pouvez personnaliser ces définitions en modifiant directement le fichier .vscode/launch.json.

Cloud Code gère également les détails de configuration spécifiques aux langages suivants:

Node.js

Réécriture du point d'entrée à appeler :

node --inspect=localhost:9229

Python

Installation du module ptvsd à l'aide d'un conteneur d'initialisation et réécriture du point d'entrée à appeler :

python -m ptvsd --host localhost --port 5678

Go

L'installation du débogueur dlv à l'aide d'un conteneur init et la réécriture du point d'entrée, de sorte que la session de débogage lancée ne s'exécute qu'avec un serveur de débogage (en mode sans interface graphique), se poursuit. le processus débogué au démarrage, accepte plusieurs connexions client et écoute le fichier localhost:56268:

dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --

Java

Ajoutez un environnement JAVA_TOOLS_OPTIONS avec la configuration Java Debug Wire (JDWP) appropriée de sorte que l'agent de débogage JDWP écoute une connexion de socket sur le port 5005 et que la VM puisse commencer à s'exécuter avant le Le débogueur est associé:

jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y

Pour en savoir plus sur le débogage optimisé par Skaffold, consultez la documentation de skaffold debug.

Rattacher un débogueur à un pod Kubernetes

Cloud Code VS Code permet également d'associer un débogueur à un pod Kubernetes. Pour effectuer une comparaison, consultez la section Associer un pod Kubernetes à un débogage Kubernetes.

Assistance

Pour envoyer vos commentaires, signalez tout problème sur GitHub ou posez une question sur Stack Overflow.