Inizia a utilizzare Skaffold in Google Cloud Deploy

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questo documento descrive come iniziare a utilizzare Skaffold come parte di Google Cloud Deploy, tra cui:

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

Perché Skaffold?

Vuoi sapere perché Google Cloud Deploy utilizza Skaffold e perché devi gestire una configurazione di Skaffold? Continua a leggere.

Ho esperienza con CI/CD, ma attualmente 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 dichiarativa e portatile, basata su un'architettura pluggable, che consente di utilizzare strumenti diversi per la fase di rendering.

Quando viene creata una release, Google Cloud Deploy chiama Skaffold per il rendering dei manifest. Al momento del deployment, Google Cloud Deploy chiama di nuovo Skaffold per applicare questi manifest al deployment della tua applicazione in ogni target della progressione. Dopo il deployment, Skaffold esegue controlli di integrità per monitorare il runtime di destinazione per un deployment riuscito.

Skaffold per lo sviluppo continuo

Quando utilizzi Skaffold per lo sviluppo continuo, le immagini vengono create, testate e ne viene eseguito il deployment in un cluster (o Minikube) durante la modifica del codice. Cloud Code per VS Code e Cloud Code per IntelliJ le estensioni IDE integrano Skaffold negli IDE Visual Studio Code e JetBrains, per uno sviluppo continuo.

Skaffold per la distribuzione continua

Puoi anche utilizzare Skaffold per la distribuzione continua, con passaggi di creazione, deployment, rendering e applicazione. Google Cloud Deploy utilizza le capacità di rendering e applicazione di Skaffold. Per utilizzare Google Cloud Deploy, devi avere almeno un file di configurazione skaffold.yaml valido.

Tramite Skaffold, puoi anche integrare strumenti di gestione manifest di terze parti, come Helm e Kustomize. L'utilizzo di Skaffold permette di sfruttare le funzionalità di questi strumenti per eseguire il rendering dei manifest. kubectl rimane il deployer per questi manifest.

Non ho mai eseguito il deployment in Kubernetes

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

Scopri di più sulla gestione dei manifest, inclusi esempi di utilizzo di Skaffold e Google Cloud Deploy con strumenti comuni per la creazione di modelli di manifest, come Helm e Kustomize.

Cosa serve per consentire il funzionamento di Google Cloud Deploy?

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

  • Le informazioni dell'intestazione necessarie a tutte le configurazioni di skaffold.yaml:

    apiVersion: skaffold/v2beta28
    Kind: Config
    
  • Una stanza deploy, con deploy.kubectl, per il deployment in GKE o in Anthos, oppure con deploy.cloudrun per il deployment in Cloud Run.

    Per GKE: yaml deploy: kubectl: manifests: - ...

    Nella intestazione manifests, un elenco di tutti i manifest non elaborati di Kubernetes. Se prevedi di utilizzare un renderer (ad esempio Helm o Kustomize) per eseguire il rendering dei manifest, consulta la sezione Aggiungere il supporto Kustomize allo script skaffold.yaml e Aggiungere il supporto Helm al file skaffold.yaml per istruzioni su come configurare Skaffold per l'utilizzo di questi strumenti.

    Per Cloud Run:

    metadata:
      name:
    manifests:
      rawYaml:
      - ...
    deploy:
      cloudrun: {}
    

Crea un file skaffold.yaml

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

Come requisito minimo sarà necessario fornire un file skaffold.yaml che identifichi i manifest da utilizzare. Ecco un esempio:

apiVersion: skaffold/v2beta28
kind: Config
deploy:
  kubectl:
    manifests:
      - MANIFEST

In questa configurazione, MANIFEST è il percorso del manifest o dei manifest da elaborare per Skaffold.

Fai in modo che Google Cloud Deploy generi skaffold.yaml

Se non hai un file skaffold.yaml, ma hai un singolo manifest Kubernetes o un file di definizione del servizio Cloud Run, Google Cloud Deploy può generare un file skaffold.yaml per te .

Il file Skaffold generato sarà disponibile nella directory temporanea di origine di Cloud Storage al completamento del rilascio.

Il comando seguente include il flag --from-k8s-manifest, passando il manifest di Kubernetes. Google Cloud Deploy utilizza le informazioni nel manifest per generare skaffold.yaml, che viene poi utilizzato per la release.

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

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

L'utilizzo di uno di questi flag con il flag --skaffold-file o con il flag --source genera un errore.

Utilizzo del file skaffold.yaml generato

Il skaffold.yaml generato è adatto per l'onboarding, l'apprendimento e la dimostrazione di Google Cloud Deploy. Dopo aver acquisito dimestichezza con Google Cloud Deploy, e per i carichi di lavoro di produzione, può essere utile configurare una configurazione Skaffold tra i tuoi target (utilizzando i profili Skaffold).

Quando utilizzi il file skaffold.yaml generato come punto di partenza per creare una configurazione Skaffold differenziata, assicurati di utilizzare il file nell'archivio di origine di rendering, non il file visualizzato. L'origine del rendering è disponibile per il download dalla scheda Artefatti nella pagina **Dettagli release **.

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

    Per visualizzare questo file, scarica il file .tar.gz ed estrailo.

  • Il rendering del skaffold.yaml è 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 origine e di destinazione di rendering

Utilizzo di Skaffold per lo sviluppo locale

Uno dei punti di forza di Skaffold è che può essere utilizzato per lo sviluppo locale e per CI/CD. In modalità dev, Skaffold controlla i file di origine e, quando rileva una modifica, Skaffold ricrea le immagini, ripete il test ed esegue nuovamente il deployment dei container in un cluster kukube (ad esempio) sulla tua macchina locale.

Quando utilizzi Skaffold in questo modo, puoi utilizzare gli stessi comandi che hai configurato localmente per il deployment da remoto.

Se utilizzi Skaffold per lo sviluppo locale, puoi definire profili Skaffold separati per i tuoi target e un'intestazione di deployment predefinita per lo sviluppo locale.

Quando interrompi 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 utilizzare Skaffold per CI/CD. Google Cloud Deploy utilizza le funzionalità CI/CD in Skaffold per eseguire il rendering e applicare i manifest ed eseguire il deployment dell'applicazione sui target definiti, date le immagini container create usando uno strumento CI come Cloud Build e un registro di immagini come Artifact Registry.

Esegui il rendering, il deployment e applica

Skaffold separa il processo di rendering del manifest dal deployment. Google Cloud Deploy chiama skaffold render, per visualizzare i manifest e skaffold apply per applicarli al target.

Questa separazione tra rendering e applicazione ti consente di acquisire lo stato dichiarativo completo dell'applicazione durante la configurazione, in modo da poterla applicare in modo sicuro e ripetitivo (ad esempio per i rollback). Questa tecnica, inoltre, semplifica le approvazioni. Poiché i manifest vengono visualizzati per tutti i target prima della prima implementazione, puoi vedere il codice YAML visualizzato che verrà applicato a ogni destinazione.

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

Per saperne di più sul modo in cui Google Cloud Deploy esegue il deployment utilizzando kubectl come deployer, consulta Architettura del servizio Google Cloud Deploy.

Informazioni sui profili Skaffold

Puoi creare profili Skaffold distinti, identificati in skaffold.yaml, in una intestazione profiles:.

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

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

Aggiungi il supporto di Kustomize al dispositivo skaffold.yaml

L'integrazione della configurazione Kustomize con la configurazione di Google 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 bucket Cloud Storage.

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

    Puoi anche avere una intestazione deploy al di fuori di qualsiasi profilo definito, se non utilizzi i profili o una configurazione di deployment predefinita non associata a un profilo. Ecco un esempio:

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

    La configurazione Skaffold mostrata qui ha profili separati per le destinazioni test, staging e prod. Inoltre, mostra un profilo per lo sviluppo locale. In ogni profilo è presente una sfera deploy.kustomize con un percorso che rimanda alla posizione della kustomizzazione da utilizzare per il target in questione.

Aggiungi il supporto per Helm al dispositivo skaffold.yaml

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

Per usare Helm, ti servono grafici o grafici Helm, archiviati in qualsiasi posizione a cui puoi fare riferimento all'interno di skaffold.yaml. Questa posizione può trovarsi in un file system, in un repository, possibilmente insieme al tuo skaffold.yaml o in un repository Open Container Initiative (OCI).

Per utilizzare un grafico Helm, aggiungi una sfera helm al file skaffold.yaml.

apiVersion: skaffold/v2beta28
kind: Config
build:
  artifacts:
  - image: skaffold-helm-image
deploy:
  helm:
    releases:
    - name: skaffold-helm-image
      chartPath: charts

Il riferimento skaffold.yaml mostra ciò che è richiesto in questa helm riga.

Utilizzo di kpt con Skaffold

Ti consigliamo di non utilizzare kpt con Skaffold V1 in Google Cloud Deploy.

Funzionalità di Skaffold non supportate

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

Passaggi successivi

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

  • Esercitati all'utilizzo di Google Cloud Deploy con i profili Kustomize e Skaffold.

  • Scopri come Google Cloud Deploy seleziona la versione di Skaffold da usare, quando cambia la versione di Skaffold e come determinare quale versione è in uso.

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