Cloud Code per VS Code supporta il collegamento di un debugger a un pod Kubernetes per Node.js, Python, Go, Java e .NET. Tutto ciò di cui hai bisogno è un contenitore di debug e una configurazione di collegamento di tipo cloudcode.kubernetes
.
Per informazioni su come il collegamento a un pod Kubernetes differisce da Debug di un'applicazione Kubernetes, consulta Collegamento a un pod Kubernetes e debug di un'applicazione Kubernetes.
Configurazione di un container
Per preparare il container per il debug, segui le istruzioni per il linguaggio che stai utilizzando:
Node.js
- Avvia l'applicazione Node.js con
--inspect=<debugPort>
da cuidebugPort
proviene dalla configurazione di Collega. Ad esempio:CMD ["node", "--inspect=9229", "index.js"]
Python
- Assicurati di avere installato il modulo
ptvsd
sulla macchina e nel container. - Avvia l'applicazione Python tramite
ptvsd
. Fai corrispondere la porta specificata al campodebugPort
nella configurazione dell'associazione. Ad esempio:CMD ["python", "-m", "ptvsd", "--port", "
", "app.py"]
Go
- Assicurati di avere installato il pacchetto
dlv
sulla macchina e sul container Go. Avvia l'applicazione Go tramite
dlv debug
.La porta specificata nel comando iniziale deve essere la stessa del valore dell'attributo
debugPort
nella configurazione di collegamento. Ad esempio:CMD ["dlv", "debug", "--headless", "--listen=:<debugPort>", "--log"]
Suggerimento per la risoluzione dei problemi: durante il debug di un'applicazione Go, l'applicazione si arresta e attende il collegamento di un debugger. Allega un debugger per far partire il servizio.
Java
- Assicurati che JVM sia installato sul tuo computer.
Avvia l'applicazione Java utilizzando le seguenti opzioni, da cui
debugPort
viene eseguita dalla configurazione dell'allegato.-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=
,quiet=y Ad esempio, per avviare l'applicazione Java in modalità di debug e ascoltare la porta
debugPort
per la connessione:ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y", "-jar", "my-app-1.0.jar"]
.NET Core
Assicurati di avere installato sul container Kubernetes il
vsdbg
, il debugger della riga di comando .NET Core di Microsoft.Ad esempio:
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
Impostare una configurazione di collegamento
Per stabilire un collegamento a un contenitore di cui è possibile eseguire il debug, devi avere una configurazione di collegamento di tipo cloudcode.kubernetes
.
Progetti con file .vscode/launch.json
Se il progetto non contiene un file Launch.json nella cartella .vscode
, puoi aggiungerne uno utilizzando il riquadro Debug.
Accedi al riquadro Debug (utilizzando l'icona Visualizza debug dalla barra delle attività) e seleziona Aggiungi configurazione dal menu a discesa.
Seleziona Cloud Code: Kubernetes come ambiente.
Seleziona l'opzione
Attach to Kubernetes Pod
.Seleziona il linguaggio di programmazione corrispondente.
Questa operazione crea e apre un file
launch.json
per il progetto e crea una configurazione allegata per te. Ora puoi aggiornare gli attributi di configurazione in questo file in modo che corrispondano a quelli del progetto. Per ulteriori informazioni sugli attributi della configurazione, consulta Attributi di configurazione.
Progetti con file .vscode/launch.json
Per aggiungere una nuova configurazione di collegamento a un file .vscode/launch.json esistente:
- Apri il file Launch.json.
- Per richiamare lo snippet Intellisense, fai clic su Aggiungi configurazione.
- Seleziona lo snippet Cloud Code: Attach to Kubernetes Pod (Codice cloud: Collega al pod Kubernetes) per la lingua che stai utilizzando.
- Verrà aggiunta una configurazione di collegamento. Ora puoi aggiornare gli attributi in questa configurazione in modo che corrispondano a quelli del tuo progetto. Per ulteriori informazioni sugli attributi della configurazione, consulta questa tabella.
Attributi di configurazione
Attributo | Descrizione |
---|---|
debugPort | Porta di debug utilizzata sul container. |
PodSelector | Coppia di coppie chiave-valore utilizzate per selezionare il pod di debug
(per ulteriori informazioni, consulta la guida ai selettori). Solitamente podSelector:
|
localroot | Percorso della directory locale contenente il programma di cui eseguire il debug. Il valore predefinito è ${workspaceCartella}. |
radice radice | Percorso assoluto della directory remota contenente il programma di cui eseguire il debug (sul contenitore Kubernetes). |
Collegamento di un debugger a un pod Kubernetes
Dopo aver impostato la configurazione e il contenitore:
- Apri la visualizzazione Debug .
- Seleziona e avvia la configurazione con
F5
.- Verrà eseguito il port forwarding a
localhost:${debugPort}
sul dispositivodebugPort
durante il debug.
- Verrà eseguito il port forwarding a
- La sessione di debug è stata configurata.
- Ora puoi eseguire tutte le attività che svolgi normalmente durante il debug del codice locale, ad esempio l'impostazione dei punti di interruzione e la modifica del codice.
Per esaminare le variabili e le informazioni sullo stack, utilizza la barra laterale di debug. Per interagire con la sessione di debug, utilizza la console di debug nel debugger di riquadro inferiore.
Per terminare la sessione di debug, fai clic su Arresta nella barra degli strumenti di debug.
Collegamento a un pod Kubernetes e debug di un'applicazione Kubernetes
Collegamento a un pod Kubernetes | Debug di un'applicazione Kubernetes |
---|---|
Esegue il debug di un singolo pod Kubernetes. | Esegue il debug di tutti i container di cui è possibile eseguire il debug nell'applicazione. |
L'applicazione deve essere in esecuzione nel pod Kubernetes prima di eseguire il debug. | Esegue l'applicazione sul cluster Kubernetes e collega il debugger. |
Utilizza configuration (.vscode/launch.json) di tipo 'cloudcode.kubernetes' e richiedi 'allegato'. | Utilizza configuration (.vscode/launch.json) di tipo 'cloudcode.kubernetes' e richiedi 'launch'. Per ulteriori informazioni, vedi Confronto tra configurazioni di lanci e collega. |
Esempio di configurazione:
{ "name": "Attach to Kubernetes Pod (NodeJS)", "type": "cloudcode.kubernetes", "request": "attach", "language": "Node", "debugPort": 9229, "podSelector": { "app": "hello-world" }, "localRoot": "${workspaceFolder}", "remoteRoot": "/app" } |
Esempio di configurazione:
{ "name": "Run/Debug on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "watch": true, "cleanUp": true, "portForward": true } |
Questa configurazione non può essere utilizzata per eseguire l'applicazione. | Questa configurazione può essere utilizzata per eseguire o eseguire il debug dell'applicazione. |
Questa configurazione è specifica per la lingua. | Questa configurazione è indipendente dal linguaggio. |
Nessun comando dedicato. | Comando Debug su Kubernetes. |
La modalità di orologio non è disponibile, quindi dopo aver apportato le modifiche devi riavviare manualmente il debugger. | La modalità di visualizzazione consente a Cloud Code di riavviare il debugger dopo aver salvato le modifiche. |