Cloud Code permet d'associer un débogueur à un pod Kubernetes. Il vous suffit de disposer d'un conteneur débogable et d'une configuration de rattachement de type cloudcode.kubernetes
.
Configurer un conteneur
Vous devez vous assurer que le conteneur que vous souhaitez déboguer est prêt au débogage. Vous trouverez ci-dessous les instructions spécifiques à chaque langage pour configurer les conteneurs.
Node.js
- Démarrez l'application Node.js avec
--inspect=<debugPort>
, oùdebugPort
provient de la configuration de rattachement. Par exemple,CMD ["node", "--inspect=9229", "index.js"]
.
Python
- Vérifiez que le module
ptvsd
est installé sur votre ordinateur et dans votre conteneur. - Démarrez l'application Python via
ptvsd
. Faites correspondre le port spécifié au champdebugPort
dans la configuration de rattachement. Exemple :CMD ["python", "-m", "ptvsd", "--port", "
", "app.py"]
Go
- Assurez-vous que le package
dlv
est installé sur votre ordinateur et sur votre conteneur Go. Démarrez votre application Go via
dlv debug
.Le port spécifié dans la commande de démarrage doit être identique à la valeur de l'attribut
debugPort
de la configuration de rattachement. 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 la JVM est installée sur votre ordinateur.
Démarrez l'application Java avec
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y
, oùdebugPort
provient de la configuration de rattachement.Par exemple, pour lancer 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
Vérifiez que
vsdbg
, le débogueur de 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 associer votre conteneur à un conteneur pouvant être débogué, vous devez disposer d'une configuration d'association de type cloudcode.kubernetes
.
Projets dépourvus de fichier .vscode/launch.json
Si votre projet ne dispose pas de fichier launch.json dans son dossier .vscode
, vous pouvez en ajouter un à l'aide du panneau de débogage.
Accédez au panneau "Débogage" (à l'aide de l'icône de débogage
dans la barre des tâches de gauche) et sélectionnez
Add Configuration
dans le menu déroulant.Sélectionnez
Cloud Code: Kubernetes
comme environnement.Sélectionnez l'option
Attach to Kubernetes Pod
.Sélectionnez le langage de programmation correspondant.
Cette opération permet de créer et d'ouvrir un fichier
launch.json
pour votre projet, ainsi qu'une configuration d'association pour vous. Vous pouvez maintenant mettre à jour les attributs de configuration dans ce fichier pour qu'ils correspondent à ceux de votre projet. Pour plus d'informations sur les attributs de configuration, reportez-vous à ce tableau.
Projets comportant un fichier .vscode/launch.json
Pour ajouter une configuration de rattachement à un fichier .vscode/launch.json existant, procédez comme suit :
- Ouvrez le fichier launch.json.
- Appuyez sur le bouton
Add Configuration
qui appelle l'extrait Intellisense. - Sélectionnez l'un des extraits
Cloud Code: Attach to Kubernetes Pod
pour le langage souhaité. Une configuration permettant de joindre une pièce jointe est alors ajoutée. Vous pouvez désormais mettre à jour les attributs de cette configuration afin qu'ils correspondent à ceux de votre projet. Pour plus d'informations sur les attributs de configuration, reportez-vous à ce tableau.
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 plus d'informations, reportez-vous au guide sur les sélecteurs) Un podSelector se présente généralement comme ceci :
|
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 configurés :
- Ouvrez le panneau de débogage
.
- Sélectionnez et lancez la configuration à l'aide de la touche
F5
.- Lors du débogage,
localhost:${debugPort}
sera transféré versdebugPort
sur le conteneur.
- Lors du débogage,
- La session de débogage est maintenant correctement configurée.
- 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.
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 l'icône d'arrêt 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ébogue un seul pod Kubernetes | Débogue tous les conteneurs débogables dans l'application |
Vous devez vous assurer que l'application s'exécute dans le pod Kubernetes avant le débogage. | Exécute l'application sur le cluster Kubernetes et rattache le débogueur. |
Utilise la configuration (.vscode/launch.json) de type "cloudcode.kubernetes" et la requête "attach". | Utilise la configuration (.vscode/launch.json) de type "cloudcode.kubernetes" et la requête "launch". 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 ne dépend pas du langage. |
Aucune commande dédiée | Commande "Déboguer sur Kubernetes" |