Cloud Code pour Cloud Shell permet d'associer un débogueur à un pod Kubernetes pour Node.js, Python, Go, Java et .NET. Il vous suffit de disposer d'un conteneur débogable et d'une configuration d'association de type cloudcode.kubernetes
.
Pour en savoir plus sur les différences entre l'association à un pod Kubernetes et le débogage d'une application Kubernetes, consultez la section Associer à un pod Kubernetes vs déboguer une application Kubernetes.
Configurer un conteneur
Pour préparer votre conteneur au débogage, suivez les instructions relatives au langage que vous utilisez :
Node.js
- Démarrez l'application Node.js avec
--inspect=<debugPort>
, oùdebugPort
provient de la configuration d'association. Par exemple,CMD ["node", "--inspect=9229", "index.js"]
.
Python
- Assurez-vous que le module
ptvsd
est installé sur votre machine et dans votre conteneur. - Démarrez l'application Python via
ptvsd
. Faites correspondre le port spécifié dans le champdebugPort
de la configuration de l'association. Exemple :CMD ["python", "-m", "ptvsd", "--port", "
", "app.py"]
Go
- Assurez-vous que le package
dlv
est installé sur votre machine et dans votre conteneur Go. Démarrez l'application Go via
dlv debug
.Le port spécifié dans la commande de démarrage doit être identique à la valeur de l'attribut
debugPort
dans la configuration de l'association. Exemple :CMD ["dlv", "debug", "--headless", "--listen=:<debugPort>", "--log"]
Conseil de dépannage : Lors du débogage d'une application Go, celle-ci s'arrête et attend la liaison à un débogueur. Rattachez un débogueur pour que le service démarre.
Java
- Assurez-vous que JVM est installé sur votre machine.
Démarrez l'application Java avec les options suivantes, où
debugPort
provient de la configuration de rattachement.-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=
,quiet=y Par exemple, pour démarrer l'application Java en mode débogage et écouter le port
debugPort
pour la connexion:ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y", "-jar", "my-app-1.0.jar"]
.NET Core
Assurez-vous que
vsdbg
, le débogueur en ligne de commande .NET Core de Microsoft, est installé sur votre conteneur Kubernetes.Exemple :
RUN apt-get update
&& apt-get install -y --no-install-recommends unzip
&& apt-get install -y procps
&& rm -rf /var/lib/apt/lists/*
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /vsdbg
Configurer une configuration de rattachement
Pour vous rattacher à un conteneur débogable, vous devez disposer d'une configuration de rattachement de type cloudcode.kubernetes
.
Projets sans fichier .vscode/launch.json
Si votre projet ne contient pas de fichier launch.json
dans le dossier .vscode
, vous pouvez en ajouter un à l'aide du panneau de débogage.
Pour accéder au panneau "Débogage", cliquez sur
Débogage dans la barre d'activité.
Sélectionnez Ajouter une configuration dans le menu déroulant.
Sélectionnez l'environnement Cloud Code: Kubernetes.
Sélectionnez l'option Attach to Kubernetes Pod (Associer au pod Kubernetes).
Sélectionnez le langage de programmation que vous utilisez.
Cela a pour effet de créer et d'ouvrir un fichier
launch.json
pour votre projet, puis de créer une configuration de rattachement pour vous.Mettez à jour les attributs de configuration du fichier
launch.json
pour qu'ils correspondent à ceux de votre projet. Pour en savoir plus sur les attributs de configuration, consultez la section Attributs de configuration.
Projets comportant un fichier .vscode/launch.json
Pour ajouter une configuration de rattachement à un fichier .vscode/launch.json
existant:
- Ouvrez le fichier
launch.json
. - Pour appeler l'extrait Intellisense, cliquez sur Ajouter une configuration.
- Pour ajouter une configuration d'association, sélectionnez l'extrait Cloud Code: Associer au pod Kubernetes pour le langage que vous utilisez.
- Mettez à jour les attributs de la configuration pour qu'ils correspondent à ceux de votre projet. Pour en savoir plus sur les attributs de configuration, consultez la section Attributs de configuration.
Attributs de configuration
Attribut | Description |
---|---|
debugPort | Port de débogage utilisé sur le conteneur. |
podSelector | Ensemble de paires clé-valeur utilisées pour sélectionner le pod de débogage. Pour en savoir plus, consultez le guide sur les sélecteurs.
L'exemple suivant présente un "podSelector" typique:
|
local-racine | Chemin du répertoire local contenant le programme en cours de débogage. La valeur par défaut est "${workspaceFolder}". |
remoteRoot | Chemin absolu du répertoire distant contenant le programme en cours de débogage (sur le conteneur Kubernetes). |
Rattacher un débogueur à un pod Kubernetes
Une fois la configuration et le conteneur définis:
- Pour accéder au panneau "Débogage", cliquez sur
Débogage dans la barre d'activité.
Sélectionnez et lancez la configuration en appuyant sur
F5
.localhost:${debugPort}
est transféré versdebugPort
sur le conteneur lors du débogage.
La session de débogage est maintenant configurée. Vous pouvez effectuer les tâches habituelles lors du débogage du code local, comme définir des points d'arrêt et parcourir le code.
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.
Pour mettre fin à la session de débogage, cliquez sur
Arrêter dans la barre d'outils de débogage.
Rattacher à un pod Kubernetes et débogage d'une application Kubernetes
Se connecter à un pod Kubernetes | Déboguer une application Kubernetes |
---|---|
Déboguer un seul pod Kubernetes | Déboguer tous les conteneurs débogables dans l'application |
L'application doit s'exécuter dans le pod Kubernetes avant le débogage. | Exécute l'application sur le cluster Kubernetes et associe le débogueur. |
Utilise configuration (.vscode/launch.json) de type 'cloudcode.kubernetes' et request 'attach'. | Utilise la configuration (.vscode/launch.json) de type "cloudcode.kubernetes" et la requête "launch". Pour en savoir plus, consultez la section Configurations de lancement et configurations de rattachement. |
Exemple de configuration:
{ "name": "Attach to Kubernetes Pod (NodeJS)", "type": "cloudcode.kubernetes", "request": "attach", "language": "Node", "debugPort": 9229, "podSelector": { "app": "hello-world" }, "localRoot": "${workspaceFolder}", "remoteRoot": "/app" } |
Exemple de configuration:
{ "name": "Run/Debug on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "watch": true, "cleanUp": true, "portForward": true } |
Cette configuration ne peut pas être utilisée pour exécuter l'application. | Cette configuration peut être utilisée pour exécuter ou déboguer l'application. |
Cette configuration est spécifique au langage. | Cette configuration est indépendante du langage. |
Aucune commande dédiée. | Commande Debug on Kubernetes (Déboguer sur Kubernetes). |