Per velocizzare lo sviluppo locale in Cloud Code for VS Code, sfrutta il supporto sincronizzazione e ricaricamento a caldo, deployment automatico al momento del salvataggio e utilizzo dei moduli Skaffold per sviluppare parti di un'applicazione separatamente.
Attiva la sincronizzazione dei file Skaffold e il ricaricamento a caldo
Per migliorare l'efficienza del flusso di lavoro per lo sviluppo locale ed evitare dover ricreare e riavviare i pod, Skaffold supporta copiando i file modificati in un container di cui è stato eseguito il deployment. Ciò significa che quando apporti modifiche e file di codice sorgente, puoi vedere le modifiche applicate in pochi secondi, velocizzando ciclo di feedback.
Per i file statici (ad esempio, HTML e CSS), questo comportamento di copia è chiamato sincronizzazione di file.
Per i file di codice sorgente, questo comportamento è chiamato ricaricamento a caldo e supporta i seguenti tipi di file:
- Vai: *.go
- Java: *.java, *.kt, *.scala, *.groovy, *.clj
- NodeJS: *.js, *.mjs, *.CPU, *.litcaffè, *.json
Con il ricaricamento a caldo configurato, Skaffold rileva le modifiche ai file supportati e li sincronizza modifiche al container in esecuzione sul cluster. Modifiche ai tipi di file che non supportano i video a caldo il ricaricamento attiva la ricompilazione di un'immagine e il riavvio del pod.
La sincronizzazione automatica dei file e il ricaricamento a caldo sono abilitate per impostazione predefinita
usare Buildpacks
come builder preferito. Per altri builder 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 Jib e Buildpacks artifacts.) Questa è l'impostazione predefinita per i Buildpack.infer
: le destinazioni per ogni file modificato vengono dedotte dallo strumento di creazione.manual
: devi specificare i file nell'area di lavoro locale e la loro destinazione in il container in esecuzione.
La seguente sezione sync
di esempio in un file skaffold.yaml
specifica un
Sincronizza manual
per sincronizzare tutti i /static-html
file HTML su static
in un container:
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, vedi Guida Skaffold per la sincronizzazione dei file.
Aggiungere 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 più caratteristiche al tuo progetto. Il deployment delle modifiche viene eseguito in Kubernetes senza interrompere e rimuovere il deployment, creando manualmente e il tagging dell'immagine o l'aggiornamento del cluster.
Un ciclo di iterazione standard è simile al seguente:
Apporta una modifica al progetto. Ad esempio, se utilizzi app Cloud Code Java Guestbook, aggiungi un nuovo endpoint
FrontendController
corso 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 visualizzare i log di avanzamento e deployment nella finestra della console. Dopo 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.
Sviluppare applicazioni di microservizi utilizzando le configurazioni Skaffold
Quando si sviluppano applicazioni basate su microservizi, può essere utile lavorare su istanze in modo indipendente per semplificare il debug e il deployment.
Puoi sviluppare ed eseguire il debug di parti della tua applicazione in modo indipendente suddividendo
la tua applicazione nei moduli Skaffold. Ad esempio,
Esempio di Bank of Anthos
è un'applicazione contenente dieci microservizi. Il valore
skaffold.yaml
raggruppa questi servizi in cinque moduli skaffold denominati setup
, db
,
frontend
, backend
e loadgenerator
.
Definizione dei moduli Skaffold e delle dipendenze di configurazione
Per definire i moduli Skaffold e le dipendenze della 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 un configurare un modulo Skaffold, specifica la riga seguente:metadata: name: MODULE_NAME_1
Ad esempio, nella Bank of Anthos
skaffold.yaml
, il modulodb
definisce deployment di database:Per le configurazioni che si basano sul deployment di un'altra configurazione prima eseguire il deployment della configurazione attuale, devi aggiungere la configurazione delle dipendenze. Per specificare una dipendenza dalla configurazione, aggiungi un elenco
configs
alla Sezionerequires
del tuo fileskaffold.yaml
.Ad esempio, il file
skaffold.yaml
di Bank of Anthos include la dipendenza dalla 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 alle dipendenze definite nel stesso file o altri file
skaffold.yaml
nel progetto corrente.Testa le dipendenze della configurazione creando ciascuno degli Skaffold separatamente per assicurarti che il deployment venga eseguito di dipendenze seguendo i passaggi Creare moduli Skaffold specifici e le loro dipendenze.
Creare moduli Skaffold specifici e le rispettive dipendenze
Dopo aver definito i moduli e le loro dipendenze, puoi specificare quali
moduli da eseguire con Cloud Code nel file launch.json
.
Se per il tuo progetto non è stato definito un file launch.json
, quando esegui Cloud
Code: Esegui su Kubernetes o Cloud Code: Debug su Kubernetes,
viene richiesto di selezionare i moduli da creare:
- Apri la tavolozza dei comandi (
Ctrl
/Cmd
+Shift
+P
) ed esegui Cloud Codice: esegui su Kubernetes. - Fai clic su Seleziona moduli.
- Scegli i moduli di cui vuoi eseguire il deployment e fai clic su OK. Ciascuna viene creato con le sue dipendenze.
- Quando richiesto, scegli un registro di immagini, quindi premi
Enter
.
Se il tuo progetto ha uno launch.json
, segui questi passaggi per scegliere lo Skaffold
moduli da creare:
Apri il file
launch.json
del progetto.Modifica la configurazione di avvio per aggiungere l'opzione
skaffoldFlags
con un elenco delimitato da virgole dimodules
da creare. SeskaffoldFlags
viene omesso, vengono creati tutti i moduli.{ "name": "Run on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "skaffoldFlags": { "modules": ["MODULE_NAME_2,MODULE_NAME_2"], "watch": true, "cleanUp": true, } }
Esegui la configurazione di avvio che hai modificato.
Sviluppo continuo su Kubernetes
Dopo aver configurato il target delle esecuzioni con le opzioni desiderate, puoi puoi optare per un'esecuzione regolare della tua applicazione o avviare uno sviluppo nel tuo IDE per propagare le modifiche apportate all'origine le dipendenze per la tua applicazione live.
La destinazione di esecuzione Esegui su Kubernetes avvia il ciclo di sviluppo sul tuo in un cluster Kubernetes. Una volta avviato il ciclo di sviluppo, Cloud Code, utilizzando Skaffold, crea un'immagine per progetto, quindi lo tagga, ne esegue il push nel repository configurato e utilizza kubectl per eseguire il deployment dei manifest Kubernetes del progetto.
- Personalizza il deployment utilizzando opzioni di configurazione disponibili.
- Se la tua applicazione è configurata per utilizzare moduli Skaffold, puoi seleziona moduli specifici di cui creare o eseguire il deployment.
- Apri la tavolozza dei comandi (premi
Ctrl
/Cmd
+Shift
+P
), quindi esegui il Comando Cloud Code: Run on Kubernetes. - Conferma se utilizzare il modello attuale Contesto Kubernetes eseguire l'app (o passare all'app che preferisci). Per ulteriori informazioni per configurare un contesto Kubernetes, l'impostazione della configurazione.
Se hai scelto un cluster remoto come contesto, scegli un'immagine quando ti viene richiesto. registro a cui eseguire il push delle immagini. Se utilizzi Container Registry, puoi vai a un registro esistente o specifica il nome di un registro da creare. Se il tuo progetto ha API Artifact Registry abilitata e almeno in un repository Artifact Registry, può sfogliare e selezionare un repository Artifact Registry esistente.
Cloud Code crea i container, ne esegue il push al registry applica le configurazioni Kubernetes al cluster e attende l'implementazione.
Passaggi successivi
- Usa la tecnologia integrata di Cloud Code cluster minikube per lo sviluppo locale.
- Esegui il debug dell'applicazione in Cloud Code
- Leggi i dettagli su Funzionalità di sincronizzazione dei file di Skaffold