Inizia a utilizzare Skaffold in Cloud Deploy

Questo documento descrive come iniziare a utilizzare Skaffold nell'ambito di Cloud Deploy, tra cui:

  • Configurazione di Skaffold per l'utilizzo con una pipeline di distribuzione di Cloud Deploy
  • Utilizzando Skaffold e Cloud Deploy con strumenti di rendering di terze parti, come Helm e Kustomize
  • Se vuoi, puoi utilizzare Skaffold per lo sviluppo locale
  • Facoltativamente, utilizzare Skaffold per l'integrazione e il deployment continui (CI/CD)

Perché Skaffold?

Vuoi sapere perché Cloud Deploy utilizza Skaffold e perché è necessario gestire una configurazione Skaffold? Continua a leggere.

Ho esperienza con CI/CD, ma al momento non utilizzo Skaffold

Skaffold è uno strumento a riga di comando open source per migliorare la produttività degli sviluppatori. Orchestra sviluppo continuo, integrazione continua (CI), e distribuzione continua (CD).

Skaffold fornisce una configurazione portabile e dichiarativa, utilizzando un e ti permette di usare diversi strumenti per la fase di rendering.

Quando viene creata una release, Cloud Deploy chiama Skaffold per il rendering e i tuoi manifest. Al momento del deployment, Cloud Deploy chiama di nuovo Skaffold a e applicare questi manifest per eseguire il deployment dell'applicazione in ciascun target nella tua progressione. Dopo il deployment, Skaffold esegue controlli di integrità per monitorare il runtime di destinazione e deployment continuo.

Skaffold per uno sviluppo continuo

Quando utilizzi Skaffold per lo sviluppo continuo, vengono create, testate e sottoposte a deployment in un cluster (o Minikube) mentre modificare il codice. Cloud Code per VS Code e Cloud Code for IntelliJ Le estensioni IDE integrano Skaffold in Visual Studio Code e IDE JetBrains, per uno sviluppo continuo.

Skaffold per la distribuzione continua

Puoi anche utilizzare Skaffold per la distribuzione continua, con passaggi di build, deployment, rendering e applicazione. Cloud Deploy utilizza Rendering e applicazione di Skaffold le funzionalità di machine learning. Per utilizzare Cloud Deploy, è necessario almeno un di configurazione di skaffold.yaml.

Tramite Skaffold, puoi anche integrarlo con sistemi di gestione dei manifest di terze parti come Helm e Kustomize. L'uso di Skaffold consente di sfruttare le funzionalità di questi strumenti per eseguire il rendering e i file manifest. kubectl rimane il deployment di questi manifest.

Non ho mai eseguito il deployment in Kubernetes

Con Skaffold, puoi configurare un insieme base di manifest per tutti i tuoi deployment di machine learning. Puoi quindi utilizzare il motore di rendering di Skaffold, tramite Cloud Deploy, eseguire il rendering e quindi eseguire il deployment di ciascun manifest specifico del deployment da uno di questi di base.

Leggi ulteriori informazioni sulla gestione dei manifest. inclusi esempi di utilizzo di Skaffold e Cloud Deploy con di modelli di manifest, come Helm e Kustomize.

Cosa serve per far funzionare Cloud Deploy?

Per utilizzare una pipeline di distribuzione di Cloud Deploy di base, File di configurazione skaffold.yaml richiede almeno la seguente configurazione:

  • Le informazioni di intestazione necessarie per tutte le configurazioni skaffold.yaml:

    apiVersion: skaffold/v4beta7
    kind: Config
    
  • Una stanza manifests per GKE, GKE Enterprise o Cloud Run che elenca tutti i manifest Kubernetes non elaborati (a meno che non utilizzi uno strumento di gestione dei manifest, come Helm o Kustomize).

    Di seguito è riportato un esempio di utilizzo di un manifest Kubernetes non elaborato:

    manifests:
      rawYaml:
      - deployment.yaml
    

    Se prevedi di utilizzare un renderer (come Helm o Kustomize) per eseguire il rendering dei manifest, vedi Aggiungere il supporto Helm a skaffold.yaml e aggiungi il supporto Kustomize a skaffold.yaml per indicazioni su come configurare Skaffold per l'utilizzo di questi strumenti.

    Per esempi su Helm e Kustomize, vedi Gestire i manifest

  • Una stanza deploy, con deploy.kubectl, per il deployment in GKE o a GKE Enterprise oppure deploy.cloudrun per il deployment in Cloud Run.

    Per i target GKE e GKE Enterprise:

    deploy:
      kubectl: {}
    

    La stanza di deployment esegue il deployment dei manifest dell'applicazione forniti nella manifest stanza.

    Per le destinazioni Cloud Run:

    deploy:
      cloudrun: {}
    

    La stanza di deployment esegue il deployment dei manifest dell'applicazione forniti nei manifest stanza.

Se utilizzi i target personalizzati, il tuo skaffold.yaml deve contenere l'intestazione (apiVersion e kind:) più i azioni personalizzate che verrà utilizzato dal target personalizzato, qualora non fosse già utilizzato fare riferimento a un configurazione Skaffold remota.

Crea un file skaffold.yaml

Cloud Deploy utilizza Skaffold per il rendering e il deployment delle tue applicazioni.

Per ogni release, devi fornire almeno un file skaffold.yaml che identifica i manifest da utilizzare. Consulta le sezione precedente per indicazioni sui contenuti da inserire in questo file.

Fai in modo che Cloud Deploy generi il tuo skaffold.yaml

Se non hai un file skaffold.yaml, ma disponi di un solo file Kubernetes o un file di definizione di servizio Cloud Run, Cloud Deploy può generare un file skaffold.yaml per te.

Il file Skaffold generato sarà disponibile nell'origine Cloud Storage directory temporanea dopo il completamento della release.

Il seguente comando include il flag --from-k8s-manifest, che consente di passare il manifest di Kubernetes. Cloud Deploy utilizza le informazioni manifest per generare skaffold.yaml, che verrà poi usato per la release.

gcloud deploy releases create  RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --from-k8s-manifest=MANIFEST --region=REGION 

Per generare il file skaffold.yaml da un file YAML del servizio Cloud Run, utilizza lo stesso comando, ma con --from-run-manifest anziché --from-k8s-manifest

Utilizzare uno di questi flag con il flag --skaffold-file o Il flag --source genera un errore.

Utilizzo del file skaffold.yaml generato

Il skaffold.yaml generato è adatto per l'onboarding, l'apprendimento e di Cloud Deploy. Dopo aver acquisito familiarità con Cloud Deploy, Per i carichi di lavoro di produzione ti conviene usare una configurazione Skaffold le differenze tra i tuoi target (utilizzando i profili Skaffold).

Quando utilizzi il file skaffold.yaml generato come punto di partenza per creare la tua configurazione Skaffold differenziata, assicurati di utilizzare il file dell'origine di rendering, non il file sottoposto a rendering. L'origine di rendering è disponibile per il download dalla scheda Artefatti in **Dettagli sulla release ** .

  • Questo skaffold.yaml generato è incluso nell'origine di rendering archiviata in un nel bucket Cloud Storage.

    Puoi visualizzare questo file scaricando ed estraendo il file .tar.gz.

  • L'elemento skaffold.yaml sottoposto a rendering è disponibile in Artefatti di destinazione.

    Nella sezione Artefatti di destinazione, fai clic su Visualizza artefatti.

    Pagina dei dettagli della release, che mostra gli artefatti di destinazione e l'origine di rendering

Utilizzare Skaffold per lo sviluppo locale

Uno dei punti di forza di Skaffold è che puoi usarlo per scopi locali sviluppo e per CI/CD. In modalità dev, Skaffold controlla i tuoi file di origine e, quando rileva una modifica, Skaffold ricrea le immagini, ripete il test ed esegue nuovamente il deployment dei container ad esempio un cluster minikube sulla tua macchina locale.

Quando utilizzi Skaffold in questo modo, puoi usare localmente gli stessi comandi deployment remoto.

Se utilizzi Skaffold per lo sviluppo locale, puoi definire Skaffold separati profili per le tue destinazioni e una stanza predefinita per il deployment per lo sviluppo locale.

Quando arresti la modalità dev, Skaffold esegue la pulizia degli artefatti di cui è stato eseguito il deployment dal cluster.

Utilizzo di Skaffold per CI/CD

Oltre a utilizzare Skaffold per la creazione e il deployment locali continui, puoi usare Skaffold per CI/CD. Cloud Deploy utilizza le funzionalità CI/CD di Skaffold per eseguire il rendering e applicare i manifest e il deployment dell'applicazione ai target definiti, in base alle immagini container create utilizzando uno strumento CI come Cloud Build e un registry delle immagini come Artifact Registry.

Esegui il rendering, il deployment e l'applicazione

Skaffold separa il processo di rendering del manifest dal deployment. Cloud Deploy chiama skaffold render, per eseguire il rendering dei manifest e skaffold apply per applicarle al target.

Questa separazione tra rendering e applicazione ti consente di acquisire dichiarativo dell'applicazione in fase di configurazione, in modo che applicati in modo sicuro e ripetibile (ad esempio per i rollback). Questa tecnica semplifica l'approvazione. Poiché il rendering dei manifest viene eseguito per tutti i target prima la prima implementazione, puoi vedere il codice YAML visualizzato che verrà applicato target.

Cloud Deploy non supporta l'utilizzo di altri deployment per il deployment un'applicazione. Tuttavia, puoi utilizzare strumenti come Helm o Kustomize per il rendering.

Per scoprire di più su come Cloud Deploy esegue il deployment utilizzando kubectl come strumentazione di deployment, consulta Architettura del servizio Cloud Deploy.

Informazioni sui profili Skaffold

Puoi creare Skaffold separati profile: identificati in skaffold.yaml, in una stanza profiles:.

Quando utilizzi i profili Skaffold con Cloud Deploy, puoi creare profili separati per tutti i target o solo per alcuni. Ad esempio, diversi profili per dev, staging e prod.

I profili non sono necessari per utilizzare Skaffold in Cloud Deploy, ma sono utili per definire le personalizzazioni del manifest tra i target, ad esempio utilizzando diversi file Kustomize kustomization.yaml per target.

Aggiungi l'assistenza Kustomize a skaffold.yaml

Integrazione della configurazione Kustomize con Cloud Deploy/Skaffold è costituita da:

  1. Includi un file kustomization.yaml tra i file di configurazione.

    Puoi archiviare i file di configurazione in una directory locale o in un nel bucket Cloud Storage.

  2. Nel file skaffold.yaml, crea una stanza deploy per ogni profilo.

    Puoi anche avere una stanza deploy al di fuori di un profilo definito, se Non stai utilizzando profili o per una configurazione di deployment predefinita non collegata a un profilo.

    Di seguito è riportato un esempio di configurazione Skaffold che mostra deploy stanza per e utilizza un'app fittizia di esempio chiamata my-app:

    apiVersion: skaffold/v4beta7
    kind: Config
    build:
      artifacts:
        - image: my-app-web-profiles
          context: my-app-web-profiles
        - image: my-app-application-profiles
          context: my-app-application-profiles
      googleCloudBuild:
        projectId: ${PROJECT_ID}
    profiles:
    - name: local
      manifests:
        kustomize:
          paths:
            - my-app-application-profiles/kubernetes/local
    - name: test
      manifests:
        kustomize:
          paths:
            - my-app-application-profiles/kubernetes/test
    - name: staging
      manifests:
        kustomize:
          paths:
            - my-app-application-profiles/kubernetes/staging
    - name: prod
      manifests:
        kustomize:
          paths:
            - my-app-application-profiles/kubernetes/prod
    deploy:
      kubectl: {}
    

    La configurazione Skaffold mostrata qui ha profili separati per test, staging e prod target. Mostra anche un profilo per lo sviluppo locale. In ogni profilo è presente una stanza deploy.kustomize con un percorso che punta alla posizione della kustomizzazione da usare per quel target.

di Gemini Advanced.

Aggiungi il supporto Helm a skaffold.yaml

Puoi usare Helm per eseguire il rendering dei tuoi manifest. Cloud Deploy non utilizza Helm per il deployment delle tue applicazioni e supporta solo kubectl come deployer.

Per utilizzare Helm, devi avere il tuo grafico o grafici Helm, archiviati in qualsiasi posizione riferimento da skaffold.yaml. Il percorso può essere all'interno di un file sistema, un repository, eventualmente insieme a skaffold.yaml, o un modello Repository Container Initiative (OCI).

Per utilizzare un grafico Helm, aggiungi una stanza helm al tuo skaffold.yaml.

apiVersion: skaffold/v4beta7
kind: Config
build:
  artifacts:
  - image: skaffold-helm-image
manifests:
  helm:
    releases:
    - name: skaffold-helm-image
      chartPath: charts
deploy:
  kubectl: {}

Il riferimento skaffold.yaml mostra i requisiti in questa stanza (helm).

Funzionalità Skaffold non supportate

Le seguenti funzionalità di Skaffold non possono essere utilizzate in Cloud Deploy:

Passaggi successivi

  • Visita il sito di Skaffold per scoprire come funziona e cosa può fare per te.

  • Fai pratica utilizzando Cloud Deploy con i profili Kustomize e Skaffold.

  • Scopri come Cloud Deploy seleziona la versione di Skaffold da utilizzare, quando quest'ultima cambia e come per determinare quale versione è in uso.

  • Scopri come utilizzare Skaffold profili con strumenti avanzati di gestione dei manifest come Helm, Kustomize e kpt.