Per accelerare lo sviluppo locale in Cloud Code for IntelliJ, sfrutta la sincronizzazione dei file e il ricaricamento a caldo, il deployment automatico al momento del salvataggio e utilizza i moduli Skaffold per sviluppare separatamente parti di un'applicazione.
Attiva la sincronizzazione dei file e il ricaricamento a caldo di Skaffold
Per migliorare l'efficienza del flusso di lavoro per lo sviluppo locale ed evitare di ricreare, ripetere il deployment e riavviare i pod, Skaffold supporta la copia dei file modificati in un container di cui è stato eseguito il deployment. Ciò significa che quando apporti modifiche ai file di codice statico e sorgente, puoi vedere le modifiche applicate in pochi secondi, determinando un loop di feedback accelerato.
Per i file statici (come i file HTML e CSS), questo comportamento di copia dei file è chiamato sincronizzazione dei file.
Per i file di codice sorgente, questo comportamento è chiamato ricaricamento rapido e supporta i seguenti tipi di file:
- Vai: *.go
- Java: *.java, *.kt, *.scala, *.groovy, *.clj
- NodeJS: *.js, *.mjs, *.caffè, *.lit immediatamente, *.json
Quando il ricaricamento a caldo è configurato, Skaffold rileva le modifiche ai file supportati e le sincronizza con il container in esecuzione sul tuo cluster. Le modifiche ai tipi di file che non supportano il ricaricamento a caldo attivano la nuova creazione dell'immagine e il riavvio del pod.
La sincronizzazione automatica dei file e il ricaricamento a caldo sono attivi per impostazione predefinita quando utilizzi Buildpacks come generatore preferito. Per altri strumenti di creazione come Docker, puoi specificare una sezione sync
nel file skaffold.yaml
per l'artefatto che stai personalizzando.
L'impostazione di sincronizzazione può essere una delle seguenti (in ordine di preferenza):
auto
: Skaffold configura automaticamente la sincronizzazione. (solo per gli artefatti Jib e Buildpacks). Questa è l'impostazione predefinita per i Buildpacks.infer
: le destinazioni di ogni file modificato vengono dedotte dal builder.manual
: devi specificare i file nell'area di lavoro locale e la relativa destinazione nel container in esecuzione.
La seguente sezione sync
di esempio in un file skaffold.yaml
specifica una sincronizzazione manual
per sincronizzare tutti i file HTML /static-html
nella cartella static
in un contenitore:
build: artifacts: - image: gcr.io/k8s-skaffold/node-example context: node sync: manual: - src: 'static-html/*.html' dest: static
Per informazioni dettagliate sulla sincronizzazione dei file e sulla specifica delle regole di sincronizzazione, consulta la guida di Skaffold sulla sincronizzazione dei file.
Aggiungi nuove funzionalità durante lo sviluppo su Kubernetes
Dopo aver configurato la sincronizzazione dei file e il ricaricamento a caldo, avvia un ciclo di iterazione e aggiungi altre funzionalità al progetto. Il deployment delle modifiche nel cluster Kubernetes viene eseguito senza interrompere e rimuovere il deployment, creare e taggare manualmente l'immagine o aggiornare il cluster.
Un ciclo di iterazione standard è simile al seguente:
Apporta una modifica al tuo progetto. Ad esempio, se utilizzi l'app Cloud Code Java Guestbook, aggiungi un nuovo endpoint alla classe
FrontendController
come segue:Apri il file
FrontendController.java
dasrc/main/java/cloudcode/guestbook/frontend
e aggiungi quanto segue:@RequestMapping("/greeting") @ResponseBody public String greeting(@RequestParam(value="name", defaultValue="World") String name) { return String.format("Hello from Kubernetes with IntelliJ, %s!", name); }
Aggiungi le importazioni necessarie per le nuove annotazioni,
RequestMapping
eResponseBody
.
Salva le modifiche (
Ctrl
/Cmd+S
) o crea il progetto.Puoi controllare l'avanzamento e i log di deployment nella finestra della console. Una volta eseguito il deployment delle modifiche, conferma gli aggiornamenti.
Per terminare la sessione di sviluppo continuo, fai clic sull'icona Interrompi.
Cloud Code elimina tutte le risorse Kubernetes utilizzate per la sessione di sviluppo.
Sviluppa applicazioni con microservizi utilizzando le configurazioni Skaffold
Durante lo sviluppo di applicazioni basate su microservizi, può essere utile lavorare in modo indipendente su sezioni separate per semplificare il debug e il deployment.
Puoi sviluppare ed eseguire il debug di parti della tua applicazione in modo indipendente suddividendola
in moduli Skaffold. Ad esempio, l'esempio di Bank of Anthos è un'applicazione contenente dieci microservizi. Il file skaffold.yaml
dell'esempio raggruppa questi servizi in cinque moduli skaffold denominati setup
, db
, frontend
, backend
e loadgenerator
.
Definire i moduli Skaffold e le dipendenze di configurazione
Per definire i moduli Skaffold e le dipendenze di configurazione:
Apri il progetto in cui vuoi definire i moduli.
Apri il file
skaffold.yaml
.Se il file
skaffold.yaml
ha più configurazioni, per creare una configurazione di un modulo Skaffold, specifica la riga seguente:metadata: name: MODULE_NAME_1
Ad esempio, in Bank of Anthos
skaffold.yaml
, il modulodb
definisce i deployment del database:Per le configurazioni che si basano sul deployment di un'altra configurazione prima di poter eseguire il deployment della configurazione attuale, devi aggiungere la configurazione alle dipendenze. Per specificare una dipendenza di configurazione, aggiungi un elenco
configs
alla sezionerequires
del fileskaffold.yaml
.Ad esempio, il file
skaffold.yaml
di Bank of Anthos include la dipendenza di configurazionesetup
.Per definire una dipendenza, aggiungi quanto segue al file
skaffold.yaml
, dove DEPENDENCY_NAME è il nome della dipendenza.requires: - configs: DEPENDENCY_NAME
Le configurazioni elencate in questo modo possono fare riferimento a dipendenze definite nello stesso file o in altri file
skaffold.yaml
nel progetto corrente.Testa le dipendenze della configurazione creando ciascuno dei moduli Skaffold separatamente per assicurarti che venga eseguito il deployment con le relative dipendenze seguendo i passaggi descritti in Creare moduli Skaffold specifici e relative dipendenze.
crea moduli Skaffold specifici e le loro dipendenze
Dopo aver definito i moduli e le rispettive dipendenze, puoi specificare quali moduli eseguire nella scheda Crea / Esegui il deployment quando selezioni Esegui > Modifica configurazioni.Installa le build Insiders più recenti.
Vai a Esegui > Modifica configurazioni e apri la scheda Crea / Esegui il deployment.
In Configurazione Skaffold, seleziona skaffold.yaml.
Scegliere una delle opzioni seguenti:
- Crea ed esegui il deployment con tutti i moduli e le dipendenze
- Crea ed esegui il deployment con (se sono disponibili moduli) e seleziona i moduli che vuoi creare ed eseguire il deployment.
La selezione persiste per i deployment successivi. Se selezioni un sottoinsieme di moduli, Cloud Code mostra un avviso relativo al deployment di un sottoinsieme di moduli e non dell'intero sistema.
Sviluppo continuo su Kubernetes
Dopo aver configurato la destinazione dell'esecuzione con le opzioni desiderate, puoi optare per un'esecuzione regolare dell'applicazione o avviare un ciclo di iterazione di sviluppo sul tuo IDE per propagare le modifiche apportate all'origine e alle dipendenze all'applicazione attiva.
Il target dell'esecuzione Sviluppa su Kubernetes avvia il ciclo di sviluppo nel cluster Kubernetes. Dopo aver avviato il ciclo di sviluppo, Cloud Code, utilizzando Skaffold, crea un'immagine per il progetto e la tagga, ne esegue il push nel repository configurato e utilizza kubectl per eseguire il deployment dei manifest Kubernetes del progetto.
- Fai clic sull'icona Sviluppa su Kubernetes, quindi su Modifica configurazioni per aprire la finestra di dialogo Configurazioni di esecuzione/debug.
- Personalizza il deployment utilizzando le opzioni di configurazione disponibili.
- Se vuoi che Cloud Code ripeta automaticamente il deployment della tua applicazione dopo il salvataggio delle modifiche, in Modalità di controllo: ricrea e implementa di nuovo, seleziona Al salvataggio del file. Per impostazione predefinita, nelle nuove applicazioni Kubernetes è selezionata l'opzione On demand. Per ulteriori informazioni sulle modalità orologio, consulta la sezione Modalità orologio.
- Se la tua applicazione è configurata per utilizzare i moduli Skaffold, puoi scegliere di creare o eseguire solo il deployment di moduli specifici.
- Quando la configurazione ti soddisfa, fai clic su OK e poi sull'icona Esegui.
Passaggi successivi
- Usa il cluster minikube integrato di Cloud Code per lo sviluppo locale.
- Eseguire il debug dell'applicazione in Cloud Code
- Leggi i dettagli sulla funzionalità di sincronizzazione dei file di Skaffold