Accelera lo sviluppo in Cloud Code for IntelliJ

Per accelerare lo sviluppo locale in Cloud Code for IntelliJ, sfrutta i vantaggi 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:

  1. Apporta una modifica al progetto. Ad esempio, se utilizzi app Cloud Code Java Guestbook, aggiungi un nuovo endpoint FrontendController corso come segue:

    1. Apri il file FrontendController.java da src/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);
      }
      
    2. Aggiungi le importazioni necessarie per le nuove annotazioni, RequestMapping e ResponseBody.

  2. 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.

  3. 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:

  1. Apri il progetto in cui vuoi definire i moduli.

  2. Apri il file skaffold.yaml.

  3. 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 modulo db definisce deployment di database:

    apiVersion: skaffold/v3
    kind: Config
    metadata:
      name: db # module defining database deployments
    requires:
    - configs:
      - setup
    build:
      artifacts:
      - image: accounts-db
        context: src/accounts-db
      - image: ledger-db
        context: src/ledger-db
    manifests:
      rawYaml:
      - dev-kubernetes-manifests/accounts-db.yaml
      - dev-kubernetes-manifests/ledger-db.yaml
    deploy:
      kubectl: {}
  4. 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 Sezione requires del tuo file skaffold.yaml.

    Ad esempio, il file skaffold.yaml di Bank of Anthos include la dipendenza dalla configurazione setup.

    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.

  5. 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 da eseguire nella scheda Crea / Esegui il deployment quando selezioni Esegui > Modifica configurazioni.

  1. Installa le più recenti build di Insiders.

  2. Vai a Esegui > Modifica configurazioni e apri la scheda Crea / Esegui il deployment.

  3. Per Configurazione Skaffold, seleziona skaffold.yaml.

    Scegli 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 e i moduli che vuoi creare e distribuire.

La selezione viene mantenuta per i deployment successivi. Se selezioni un sottoinsieme di moduli, Cloud Code visualizza un avviso sul deployment di un sottoinsieme dei moduli e non dell'intero sistema.

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 un nel tuo IDE per propagare le modifiche apportate all'origine le dipendenze per la tua applicazione live.

Il target di esecuzione Sviluppa su Kubernetes avvia il ciclo di sviluppo sul tuo in un cluster Kubernetes. Una volta iniziato 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.

  1. Fai clic sull'icona Sviluppa su Kubernetes, quindi fai clic su Modifica configurazioni per aprire la finestra di dialogo Configurazioni di esecuzione/debug.
  2. Personalizza il deployment utilizzando opzioni di configurazione disponibili.
  3. Se vuoi che Cloud Code esegua nuovamente il deployment della tua applicazione automaticamente dopo il salvataggio delle modifiche, nella sezione Modalità di visualizzazione - Ricrea e esegui di nuovo il deployment, seleziona Al salvataggio del file. Le nuove applicazioni Kubernetes L'opzione On demand è selezionata per impostazione predefinita. Per ulteriori informazioni sulle modalità di smartwatch, consulta le Modalità di visualizzazione.
  4. Se la tua applicazione è configurata per utilizzare moduli Skaffold, puoi scegli se creare o eseguire il deployment solo di moduli specifici.
  5. Quando la configurazione ti soddisfa, fai clic su OK e poi su sull'icona Esegui.

Passaggi successivi

Assistenza

Per inviare feedback o segnalare un problema nell'IDE IntelliJ, vai a Strumenti > Cloud Code > Guida / Informazioni > Invia Feedback o segnala un problema per segnalare un problema su GitHub. fai una domanda su Stack Overflow.