Collega un debugger a un pod Kubernetes in Cloud Code per VS Code

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 cui debugPort 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 campo debugPort 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.

  1. Accedi al riquadro Debug (utilizzando l'icona Visualizza debug Icona debug dalla barra delle attività) e seleziona Aggiungi configurazione dal menu a discesa.

    Aggiungere la configurazione utilizzando il pannello di debug

  2. Seleziona Cloud Code: Kubernetes come ambiente.

    Impostazione di Cloud Code: Kubernetes come ambiente

  3. Seleziona l'opzione Attach to Kubernetes Pod.

    Seleziona l'opzione di configurazione Kubernetes

  4. Seleziona il linguaggio di programmazione corrispondente.

    Selezionare un linguaggio di programmazione preferito

    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:

  1. Apri il file Launch.json.
  2. Per richiamare lo snippet Intellisense, fai clic su Aggiungi configurazione.
  3. Seleziona lo snippet Cloud Code: Attach to Kubernetes Pod (Codice cloud: Collega al pod Kubernetes) per la lingua che stai utilizzando.
  4. 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:

"podSelector": { "app": <deployment-name> }

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:

  1. Apri la visualizzazione Debug Icona debug .
  2. Seleziona e avvia la configurazione con F5.
    • Verrà eseguito il port forwarding a localhost:${debugPort} sul dispositivo debugPort durante il debug.
  3. La sessione di debug è stata configurata.
  4. 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.
  5. 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.

  6. Per terminare la sessione di debug, fai clic su Icona di interruzione debug 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.

Richiedere assistenza

Per inviare feedback, segnala problemi su GitHub o fai una domanda su Stack Overflow.