Cloud Code for IntelliJ consente di eseguire facilmente il debug delle applicazioni di cui è stato eseguito il deployment in un cluster Kubernetes. Puoi eseguire il debug di un'applicazione su un cluster locale (come minikube o Docker Desktop), Google Kubernetes Engine o qualsiasi altro cloud provider.
Grazie al supporto del debug di Cloud Code, puoi saltare la configurazione manuale, come la configurazione del port forwarding, l'installazione di un backend di debug o l'inserimento corretto di argomenti di debug specifici per la lingua. Tutto ciò che serve è un'applicazione Kubernetes
compatibile con Cloud Code che includa un file di configurazione skaffold.yaml
.
Cloud Code consente inoltre di eseguire il debug di un'applicazione durante la modifica e l'iterazione del codice sorgente.
IDE supportati
Nella tabella seguente sono elencati i linguaggi e gli IDE supportati da Cloud Code per il debug. Nella tabella sono elencati anche i plug-in richiesti, ove applicabile:
linguaggio | IDE e versioni supportati | Plug-in obbligatorio |
---|---|---|
Java | IntelliJ IDEA Ultimate | N/A |
Community IntelliJ IDEA | N/A | |
Go | IntelliJ IDEA Ultimate | Plug-in Go |
GoLand | N/A | |
Node.js | IntelliJ IDEA Ultimate | Plug-in Node.js |
WebStorm | N/A | |
Python | IntelliJ IDEA Ultimate | Plug-in Python |
Professionista PyCharm | N/A |
Per ulteriori informazioni sul supporto degli IDE, consulta la pagina relativa agli IDE JetBrains supportati.
Con Cloud Code puoi impostare punti di interruzione ed eseguire il debug delle applicazioni remote in esecuzione nei container per i seguenti linguaggi:
Java
Cloud Code aggiunge automaticamente una variabile di ambiente, JAVA_TOOL_OPTIONS
, con la configurazione JDWP appropriata per abilitare il debug. Se JAVA_TOOL_OPTIONS
è già presente, Cloud Code utilizza le impostazioni esistenti specificate in JAVA_TOOL_OPTIONS
.
Node.js
A seconda della struttura dell'applicazione e della configurazione di build delle immagini, potrebbe essere necessario aiutare il debugger a mappare le origini locali alle origini remote nel container. In questo modo il debugger dei nodi può elaborare correttamente i punti di interruzione.
Puoi configurare questa opzione in uno dei seguenti modi:
Configurazione manuale
Seleziona Sviluppa su Kubernetes Esegui configurazione dal menu a discesa, quindi fai clic su Modifica configurazioni. Nella scheda Debug, configura il mapping delle origini dall'origine dell'applicazione locale alla località di origine nel container remoto.
Opzioni di configurazione:
- File/directory: il file o la directory locale della tua applicazione in esecuzione su Kubernetes.
- Percorso remoto: il percorso del file o della directory in esecuzione nel container su Kubernetes.
Configurazione automatica
Puoi scegliere di rimandare questa mappatura a Cloud Code. All'avvio della sessione di debug, Cloud Code cerca di dedurre automaticamente questa mappatura. Il mapping dedotto viene presentato in una finestra di dialogo con una finestra di dialogo per ogni artefatto di cui stai eseguendo il debug.
Opzioni di configurazione:
- Percorso locale: il percorso locale alla radice dell'artefatto di cui stai eseguendo il debug.
- Percorso remoto: il percorso del file o della directory in esecuzione nel container su Kubernetes. Puoi scegliere di eseguire l'override di questa impostazione con un valore personalizzato. Se fai clic su Annulla, non viene applicata alcuna mappatura.
Go
Per configurare l'applicazione per il debug, l'app deve essere
un'applicazione basata su Go Module
ed essere identificata come basata su Go impostando una delle
variabili di ambiente di runtime Go standard
nel container, ad esempio GODEBUG
, GOGC
, GOMAXPROCS
o
GOTRACEBACK
. GOTRACEBACK=single
è l'impostazione predefinita per Go
e GOTRACEBACK=all
è una configurazione generalmente utile.
Facoltativamente, ma consigliato, la tua app deve essere creata con le
opzioni -gcflags='all=-N -l'
per disabilitare le ottimizzazioni. I profili di Skaffold sono un'opzione utile a questo scopo e possono essere impostati con il campo Profilo di deployment nella configurazione Esegui nella scheda Crea/Esegui il deployment.
Python
Per configurare la tua applicazione per il debug, assicurati di soddisfare i seguenti prerequisiti:
IDE, versione e plug-in sono compatibili
Per gli IDE, le versioni e i plug-in compatibili, consulta la pagina relativa agli IDE supportati.
La versione di Skaffold è 1.25.0 o successiva
Puoi consentire a Cloud Code di gestire le dipendenze o puntare a un'installazione Skaffold locale. Vedi Preferenze > Strumenti > Cloud Code > Dipendenze.
L'interprete Python è configurato
Se nel progetto non è configurato un interprete Python, il debug non funzionerà, in quanto non è possibile eseguire
pydevd
, il debugger di Python sottostante.IDE Modalità di configurazione IDEA IntelliJ Il debug Python con Cloud Code richiede la configurazione di un SDK Python per il tuo progetto.
Vai a File > Struttura del progetto e aggiungi un SDK Python nella scheda Progetto. Se non ne esiste, aggiungine uno nella scheda SDK.PyCharm Vai a File > Impostazioni > Progetto > Interprete Python oppure, per Mac OS X, PyCharm > Preferenze > Progetto > Interprete Python e aggiungi un interprete Python.
Per ulteriori informazioni, consulta la documentazione di debug Skaffold.
Eseguire il debug di un'applicazione
Per avviare il ciclo di sviluppo in modalità di debug sul tuo cluster Kubernetes, fai clic sull'azione di debug per Sviluppa su Kubernetes.
Il ciclo di sviluppo continuo viene avviato in modalità di debug.
Cloud Code collega una sessione di debug:
Ora puoi eseguire le attività normalmente eseguite durante il debug del codice locale, ad esempio impostare i punti di interruzione e seguire le istruzioni dettagliate per il codice, su un cluster Kubernetes attivo.
Per terminare la sessione di debug, fai clic sull'icona di interruzione nella configurazione di esecuzione Sviluppo su Kubernetes.
Passaggi successivi
- Utilizza la sincronizzazione file e il ricaricamento a caldo per velocizzare lo sviluppo.
- Configurare un ambiente di sviluppo continuo in Cloud Code.
- Visualizza i log di Kubernetes in Cloud Code.