Questo documento descrive come iniziare a utilizzare Skaffold come parte di Cloud Deploy, tra cui:
- Configurazione di Skaffold per l'utilizzo con una pipeline di distribuzione di Cloud Deploy
- Utilizzo di Skaffold e Cloud Deploy con strumenti di rendering di terze parti, come Helm e Kustomize
- (Facoltativo) Utilizzo di Skaffold per lo sviluppo locale
- (Facoltativo) Utilizzo di Skaffold per l'integrazione e il deployment continui (CI/CD)
Perché Skaffold?
Vuoi sapere perché Cloud Deploy utilizza Skaffold e perché devi gestire una configurazione di Skaffold? Continua a leggere.
Ho esperienza con CI/CD, ma al momento non utilizzo Skaffold
Skaffold è uno strumento a riga di comando open source che consente di migliorare la produttività degli sviluppatori. Orchestra lo sviluppo continuo, l'integrazione continua (CI) e la distribuzione continua (CD).
Skaffold fornisce una configurazione dichiarativa e portatile, utilizzando un'architettura modulare che consente di utilizzare strumenti diversi per la fase di rendering.
Quando viene creata una release, Cloud Deploy chiama Skaffold per eseguire il rendering dei manifest. Al momento del deployment, Cloud Deploy chiama di nuovo Skaffold per applicare questi manifest per eseguire il deployment dell'applicazione in ogni target della progression. 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 ed eseguite il deployment in un cluster (o Minikube) man mano che modifici il codice. Cloud Code for VS Code e Cloud Code for IntelliJ estensioni IDE integrano Skaffold negli IDE Visual Studio Code e JetBrains, per lo sviluppo continuo.
Skaffold per la distribuzione continua
Puoi anche utilizzare Skaffold per la distribuzione continua,
con passaggi di creazione, deployment, rendering e applicazione. Cloud Deploy utilizza
le funzionalità di rendering e applicazione
di Skaffold. Per utilizzare Cloud Deploy, devi avere almeno un file di configurazione
skaffold.yaml valido.
Tramite Skaffold, puoi anche eseguire l'integrazione con strumenti di gestione dei manifest di terze parti
, come Helm e Kustomize.
L'utilizzo di Skaffold in questo modo consente di utilizzare le funzionalità di questi strumenti per il rendering dei manifest. kubectl rimane il deployer per questi manifest.
Non ho familiarità con il deployment in Kubernetes
Con Skaffold, puoi configurare un insieme di base di manifest per tutti i deployment. Puoi quindi utilizzare il motore di rendering di Skaffold, tramite Cloud Deploy, per eseguire il rendering e poi 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 Cloud Deploy con strumenti comuni di creazione di modelli di manifest, come Helm e Kustomize.
Che cosa è necessario per far funzionare Cloud Deploy?
Per utilizzare una pipeline di distribuzione di base di Cloud Deploy, il
skaffold.yaml file di configurazione
deve avere almeno la seguente configurazione:
Le informazioni di intestazione necessarie per tutte le configurazioni
skaffold.yaml:apiVersion: skaffold/v4beta7 kind: ConfigUna sezione
manifestsper GKE, cluster collegati a GKE o Cloud Run che elenca tutti i manifest Kubernetes non elaborati (a meno che tu non stia utilizzando uno strumento di gestione dei manifest, come Helm o Kustomize).Ecco un esempio di utilizzo di un manifest Kubernetes non elaborato:
manifests: rawYaml: - deployment.yamlSe prevedi di utilizzare un renderer (come Helm o Kustomize) per eseguire il rendering dei manifest, consulta Aggiungere il supporto di Helm a skaffold.yaml e Aggiungere il supporto di Kustomize a skaffold.yaml per indicazioni su come configurare Skaffold per utilizzare questi strumenti.
Per esempi di Helm e Kustomize, consulta Gestire i manifest
Una sezione
deploy, condeploy.kubectl, per il deployment in GKE o nei cluster collegati a GKE oppuredeploy.cloudrunper il deployment in Cloud Run.Per GKE e cluster collegati a GKE:
deploy: kubectl: {}La sezione deploy esegue il deployment dei manifest dell'applicazione forniti nella sezione manifests.
Per i target Cloud Run:
deploy: cloudrun: {}La sezione deploy esegue il deployment dei manifest dell'applicazione forniti nella sezione manifests.
Se utilizzi target personalizzati, il file
skaffold.yaml deve avere l'intestazione (apiVersion e kind:) e le
azioni personalizzate
che il target personalizzato utilizzerà se il tipo di target personalizzato non fa già
riferimento a una
configurazione Skaffold remota.
Creare un file skaffold.yaml
Cloud Deploy utilizza Skaffold per il rendering e il deployment delle applicazioni.
Per ogni release, devi fornire almeno un file skaffold.yaml che identifichi i manifest da utilizzare. Per indicazioni su cosa deve essere incluso in questo file, consulta la
sezione precedente.
Generare il file skaffold.yaml con Cloud Deploy
Se non hai un file skaffold.yaml, ma hai un singolo manifest Kubernetes o un file di definizione del servizio Cloud Run, Cloud Deploy può generare un file skaffold.yaml per te.
Il file Skaffold generato sarà disponibile nella directory di gestione temporanea dell'origine di Cloud Storage al termine della release.
Il seguente comando include il flag --from-k8s-manifest, che passa il manifest Kubernetes. Cloud Deploy utilizza le informazioni nel manifest per generare il file 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 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.
L'utilizzo di uno di questi flag con il flag --skaffold-file o --source genera un errore.
Utilizzare il file skaffold.yaml generato
Il file skaffold.yaml generato è adatto per l'onboarding, l'apprendimento e la dimostrazione di Cloud Deploy. Dopo aver acquisito familiarità con Cloud Deploy,
e per i carichi di lavoro di produzione, potresti voler utilizzare una configurazione Skaffold che
distingua i 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 nell'archivio di origine del rendering, non il file di cui è stato eseguito il rendering. L'origine del rendering è disponibile per il download dalla scheda Artefatti nella pagina Dettagli release.
Questo file
skaffold.yamlgenerato è incluso nell'origine di rendering archiviata in un bucket Cloud Storage.Puoi visualizzare questo file scaricando il file
.tar.gzed estraendolo.Il file
skaffold.yamldi cui è stato eseguito il rendering è disponibile in Artefatti di destinazione.Nella sezione Artefatti di destinazione, fai clic su Visualizza artefatti.

Utilizzare Skaffold per lo sviluppo locale
Uno dei punti di forza di Skaffold è che puoi utilizzarlo per lo sviluppo
locale e per CI/CD.
In modalità dev, Skaffold monitora i file di origine e, quando rileva una modifica, ricrea le immagini, esegue nuovamente i test ed esegue nuovamente il deployment dei container in un cluster minikube (ad esempio) sulla macchina locale.
Quando utilizzi Skaffold in questo modo, puoi utilizzare gli stessi comandi localmente e per il deployment remoto.
Se utilizzi Skaffold per lo sviluppo locale, puoi definire profili Skaffold separati per i target e una sezione deploy predefinita per lo sviluppo locale.
Quando arresti la modalità dev, Skaffold esegue la pulizia degli artefatti di cui è stato eseguito il deployment dal cluster.
Utilizzare Skaffold per CI/CD
Oltre a utilizzare Skaffold per la creazione e il deployment locali continui, puoi utilizzare Skaffold per CI/CD. Cloud Deploy utilizza le funzionalità CI/CD di Skaffold per eseguire il rendering e applicare i manifest ed eseguire il deployment dell'applicazione nei target definiti, date le immagini container create utilizzando uno strumento CI come Cloud Build e un registro di immagini come Artifact Registry.
Eseguire il rendering, il deployment e l'applicazione
Skaffold separa il processo di rendering dei manifest dal deployment.
Cloud Deploy chiama skaffold render,
per eseguire il rendering dei manifest e skaffold apply
per applicarli al target.
Questa separazione tra rendering e applicazione consente di acquisire lo stato dichiarativo completo dell'applicazione nella configurazione, in modo che possa essere applicato in modo sicuro e ripetibile (ad esempio, per i rollback). Questa tecnica semplifica anche le approvazioni. Poiché il rendering dei manifest viene eseguito per tutti i target prima del primo lancio, puoi visualizzare il file YAML di cui è stato eseguito il rendering che verrà applicato a ogni target.
Cloud Deploy non supporta l'utilizzo di altri deployer per eseguire il deployment dell'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
deployer, consulta Architettura del servizio Cloud Deploy.
Informazioni sui profili Skaffold
Puoi creare profili Skaffold separati, identificati in
skaffold.yaml, in una profiles: sezione.
Quando utilizzi i profili Skaffold con Cloud Deploy, puoi 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 Cloud Deploy, ma sono utili per definire le personalizzazioni dei manifest tra i target, ad esempio utilizzando file kustomization.yaml Kustomize diversi per target.
Aggiungere il supporto di Kustomize a skaffold.yaml
L'integrazione della configurazione di Kustomize con la configurazione di Cloud Deploy/Skaffold prevede i seguenti passaggi:
Includi un file
kustomization.yamltra i file di configurazione.Puoi archiviare i file di configurazione in una directory locale o in un bucket Cloud Storage.
Nel file
skaffold.yaml, crea una sezionedeployper ogni profilo.Puoi anche avere una sezione
deployal di fuori di qualsiasi profilo definito, se non utilizzi i profili o per una configurazione di deployment predefinita non associata a un profilo.Di seguito è riportato un esempio di configurazione di Skaffold che mostra le sezioni
deployper profilo e utilizza un'app di esempio fittizia denominatamy-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 di Skaffold mostrata qui ha profili separati per i target
test,stagingeprod. Mostra anche un profilo per lo sviluppo locale. In ogni profilo è presente una sezionedeploy.kustomizecon un percorso che punta alla posizione della personalizzazione da utilizzare per quel target.
Aggiungere il supporto di Helm a skaffold.yaml
Puoi utilizzare Helm per eseguire il rendering dei manifest. Cloud Deploy non utilizza Helm per eseguire il deployment delle applicazioni e supporta solo kubectl come deployer.
Per utilizzare Helm, devi avere il grafico o i grafici Helm, archiviati in qualsiasi posizione a cui puoi fare riferimento da skaffold.yaml. Questa posizione può essere in un file system, in un repository, possibilmente insieme a skaffold.yaml, o in un repository Open Container Initiative (OCI).
Per utilizzare un grafico Helm, aggiungi una helm sezione al tuo
skaffold.yaml file.
apiVersion: skaffold/v4beta7
kind: Config
build:
artifacts:
- image: skaffold-helm-image
manifests:
helm:
releases:
- name: skaffold-helm-image
chartPath: charts
deploy:
kubectl: {}
Il skaffold.yaml riferimento
mostra cosa è necessario in questa helm sezione.
Funzionalità Skaffold non supportate
Le seguenti funzionalità di Skaffold non possono essere utilizzate in Cloud Deploy:
-
L'utilizzo di
--module=per selezionare moduli specifici perbuild,render,applye così via non è supportato. I moduli statici sono supportati. In Helm, la possibilità di creare uno spazio dei nomi se non ne esiste uno.
Passaggi successivi
Visita il sito di Skaffold per scoprire come funziona e cosa può fare per te.
Esercitati a utilizzare Cloud Deploy con Kustomize e i profili Skaffold.
Scopri come Cloud Deploy seleziona le versioni degli strumenti da utilizzare e come determinare quali versioni sono in uso.
Scopri come utilizzare i profili Skaffold con strumenti avanzati di gestione dei manifest come Helm, Kustomize e kpt.