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 votre application déployée sur un cluster Kubernetes en utilisant 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, grâce à l'assistance au débogage proposée par Cloud Code, aucune configuration manuelle n'est nécessaire, par exemple pour transférer des ports ou injecter des arguments de débogage spécifiques à un langage. Il vous suffit de disposer d'une application Kubernetes compatible avec Cloud Code et comprenant un fichier de configuration skaffold.yaml, ainsi qu'une configuration de lancement cloudcode.kubernetes.

Déboguer une application

  1. Dans barre d'état Cloud Code, choisissez la commande Debug on Kubernetes (Déboguer avec Kubernetes).
  2. Si votre application ne dispose pas de la configuration Skaffold nécessaire ou de la configuration de lancement cloudcode.kubernetes, Cloud Code vous aidera à les configurer.
  3. Confirmez si vous souhaitez utiliser le contexte Kubernetes actuel pour exécuter l'application (ou passer à une application préférée).
  4. Si le contexte choisi correspond à un cluster distant, vous serez invité à fournir un registre d'images dans lequel les images seront envoyées.

    Voici des exemples qui indiquent comment spécifier l'emplacement de stockage des images de conteneurs 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}

    Cloud Code concatène ce registre d'images avec le nom d'image spécifié dans les fichiers manifeste Kubernetes afin de générer le nom final du dépôt d'images.

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

    Ce choix est stocké dans votre configuration de lancement cloudcode.kubernetes (disponible dans .vscode/launch.json).

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

  6. Une fois le déploiement terminé, Cloud Code transfère automatiquement tous les ports de conteneur déclarés vers votre ordinateur et affiche les URL dans la fenêtre de sortie afin que vous puissiez parcourir votre application en ligne.

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

  7. Pour chaque conteneur débogable dans votre application, vous êtes invité à confirmer ou à saisir le répertoire du conteneur distant dans lequel se trouve le programme à déboguer.

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

    Invite de racine distante

    Cloud Code rattache une session de débogage pour chaque conteneur débogable dans l'application.

    Vous pouvez désormais effectuer toutes vos tâches habituelles de débogage de code local, telles que la définition de points d'arrêt et le passage en revue du code, à la différence que ce débogage s'effectue sur un cluster Kubernetes en service :

  8. 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

  9. Une fois votre session terminée, d'autres options de menu contextuel sont disponibles pour surveiller votre application et ses ressources via 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 du service ouvert:ouvrez l'URL d'un service spécifique dans un navigateur Web.
    • Activer/Désactiver le mode de lecture:activez ou désactivez 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,

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

    À la fin de l'application, toutes les ressources Kubernetes déployées sont supprimées du cluster.

Détails de la configuration

Cloud Code, fourni par Skaffold, se charge automatiquement des détails de configuration suivants :

  • 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 est composée de plusieurs conteneurs débogables (dont le langage est compatible avec le débogage Cloud Code) configurés au format skaffold.yaml, un débogueur sera alors associé à chacun de ces services.
  • Conservation des définitions de mappage source pour plusieurs sessions. Vous pouvez personnaliser ces définitions en modifiant directement le fichier .vscode/launch.json.

En plus de ce qui précède, selon le langage, Cloud Code s'occupe également des éléments 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

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

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

Java

Ajout d'un environnement JAVA_TOOLS_OPTIONS avec la configuration JDWP appropriée, de sorte que l'agent de débogage de JDWP puisse écouter une connexion de socket sur le port 5005 et permettre à la VM de commencer à s'exécuter avant que le débogueur soit rattaché :

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 permet également d'associer un débogueur à un pod Kubernetes. Pour connaître les différences, consultez ce tableau.