Google Cloud Deploy è un servizio gestito che automatizza la distribuzione delle applicazioni in una serie di ambienti target in una sequenza di promozione definita. Quando vuoi eseguire il deployment dell'applicazione aggiornata, devi creare una release, il cui ciclo di vita è gestito da una pipeline di distribuzione.
Come funziona una pipeline Google Cloud Deploy
La pipeline di distribuzione di Google Cloud Deploy contiene le seguenti informazioni:
Un nome, che devi usare quando fai riferimento alla pipeline di distribuzione, e una descrizione.
La sequenza di promozione, che descrive l'ordine in cui eseguire il deployment nei target configurati.
Facoltativamente, etichette e annotazioni.
Inoltre, le definizioni della destinazione possono essere impostate personalmente.
I target possono essere definiti nello stesso file di configurazione della pipeline di distribuzione oppure in uno o più file separati. Più pipeline di distribuzione possono utilizzare lo stesso target o target, ma un determinato target può essere utilizzato solo una volta in una determinata pipeline di distribuzione.
Il processo di distribuzione di Google Cloud Deploy
Di seguito è riportata una descrizione di ciò che accade in un semplice scenario di distribuzione continua di Google Cloud Deploy.
Puoi definire la tua pipeline di distribuzione in un file di configurazione YAML.
Questo file di configurazione definisce la sequenza di promozione in cui eseguire il deployment dell'applicazione in una serie di target.
Hai anche bisogno di una configurazione per Skaffold, necessaria a Google Cloud Deploy per eseguire le operazioni di rendering e deployment.
Puoi definire i tuoi target nel file di configurazione della pipeline oppure in uno o più file separati.
Puoi registrare la pipeline con il servizio Google Cloud Deploy.
Ora che il servizio è a conoscenza della tua applicazione, gestisce il deployment nelle destinazioni in base alla sequenza di promozione definita.
L'output del processo CI include una chiamata a Google Cloud Deploy per avviare la pipeline di distribuzione.
Questa chiamata crea una risorsa
release
, che rappresenta il manifest sottoposto a rendering per ogni destinazione, ciascuna delle quali viene generata utilizzando l'origine di rendering skaffold.yaml fornita e i riferimenti a specifiche immagini container di cui eseguire il deployment. Per la prima chiamata a creare una release, Google Cloud Deploy crea automaticamente una risorsarollout
, che associa la release al primo ambiente di destinazione. In base a questa implementazione, il deployment dell'applicazione viene eseguito nel primo target.Puoi utilizzare qualsiasi strumento CI purché fornisca una o più immagini container da fornire alla tua pipeline di distribuzione di Google Cloud Deploy.
Inoltre, la chiamata per creare una release e richiamare una pipeline di distribuzione non deve provenire dallo strumento CI. Può provenire da uno script o da qualsiasi sistema che risponda al completamento del processo di CI.
Quando tutto è pronto per eseguire il deployment dell'applicazione al target successivo, chiama Google Cloud Deploy per promuoverla.
In ogni caso, la chiamata per richiamare la promozione fa sì che Google Cloud Deploy crei una nuova implementazione.
La promozione continua per tutte le destinazioni nella sequenza di promozione, l'ultima delle quali è
prod
(o qualsiasi nome che utilizzi per il target finale per mettere in produzione l'applicazione).Il processo di creazione e promozione delle release è descritto più dettagliatamente nell'architettura di servizio di Google Cloud Deploy.
Durante l'esecuzione della pipeline, Google Cloud Deploy raccoglie metriche e dettagli di controllo.
Promozione
Per promuovere una release devi eseguirne il deployment nel target successivo nella sequenza di promozione definita nella pipeline. La prima chiamata a Google Cloud Deploy crea una risorsa release
, quindi una risorsa rollout
che viene utilizzata per il deployment nella prima destinazione della sequenza di promozione. Ogni chiamata successiva per promuovere la release genera un'implementazione nel target successivo.
Approvazioni
Puoi specificare che è necessaria un'approvazione per la promozione a qualsiasi destinazione. Ad esempio, potresti voler richiedere l'approvazione per la promozione in un target di produzione. Per richiedere l'approvazione per un target, imposta la proprietà requireApproval
nella definizione di target.
Quando una destinazione richiede l'approvazione, Google Cloud Deploy genera un messaggio Pub/Sub che può essere utilizzato da un sistema integrato. Ad esempio, un sistema di gestione delle richieste di assistenza potrebbe iscriversi al messaggio per avviare un flusso di lavoro di approvazione.
Consulta Richiedi approvazione per ulteriori informazioni sulle promozioni e sulla relativa gestione.
Notifiche
Google Cloud Deploy fornisce notifiche Pub/Sub per i seguenti eventi:
- Rendering: inizio, successo e errore
- Deployment: avvio, operazione riuscita ed errore
- È necessaria un'approvazione
- Approvazione approvata
- Approvazione rifiutata
Google Cloud Deploy utilizza un argomento Pub/Sub per inviare queste notifiche.
Per maggiori dettagli, consulta Utilizzo delle notifiche di Google Cloud Deploy.
Rollback
Google Cloud Deploy supporta il rollback dell'applicazione di cui hai eseguito il deployment in qualsiasi destinazione. Un rollback in Google Cloud Deploy prevede l'attivazione di un'implementazione rispetto all'ultima release di cui è stato eseguito il deployment. La nuova implementazione utilizza gli stessi parametri utilizzati nel deployment riuscito.
Vedi Rollback di un deployment per maggiori dettagli.
Informazioni su Skaffold e Google Cloud Deploy
Google Cloud Deploy utilizza Skaffold per il rendering, il deployment e la verifica. Con Skaffold puoi anche connettere facilmente il tuo loop di sviluppo locale a una pipeline di distribuzione continua di Google Cloud Deploy.
Per saperne di più su come Google Cloud Deploy si integra con Skaffold, consulta la panoramica di Skaffold.
Google Cloud Deploy con altri strumenti Google Cloud
Google Cloud Deploy supporta quasi tutti gli strumenti a monte di una pipeline CI/CD. Ciò significa che puoi utilizzare qualsiasi ambiente di sviluppo e repository di codice sorgente, qualsiasi sistema di integrazione continua (CI) e repository di artefatti.
A valle, Google Cloud Deploy esegue il deployment in Google Kubernetes Engine, Cloud Run e Anthos.
Se utilizzavi principalmente gli strumenti di Google Cloud, il tuo flusso di origine in produzione avrebbe il seguente aspetto:
Utilizza Cloud Code per creare l'origine dell'applicazione.
Cloud Code estende diversi IDE popolari (VS Code, IntelliJ, Cloud Shell) per semplificare la creazione e il deployment delle applicazioni su Google Cloud.
Utilizza Skaffold per gestire il tuo loop di sviluppo locale.
Google Cloud Deploy utilizza Skaffold, tramite Cloud Build, per eseguire il rendering e il deployment dei manifest. Questa integrazione significa che devi gestire un file
skaffold.yaml
, ma non significa che devi rendere Skaffold parte del tuo flusso di sviluppo locale. ma puoi sfruttarlo per lo sviluppo continuo.Crea la tua applicazione utilizzando Cloud Build.
Cloud Build consente di configurare una pipeline CI che può essere attivata da un commit nel repository del codice sorgente. L'output da Cloud Build sarà artefatti che includono immagini container di cui è possibile eseguire il deployment. Puoi aggiungere una chiamata a Google Cloud Deploy per creare una release e richiamare la pipeline di distribuzione.
Archivia gli artefatti in Artifact Registry.
Google Cloud Deploy recupera le immagini dei container da Artifact Registry, che ti consente di archiviare centralmente artefatti e dipendenze.
Configura la tua pipeline di distribuzione in Google Cloud Deploy per acquisire l'immagine container ed eseguirne il deployment in una progressione di n target.
Ciascuno di questi target identificato nella tua pipeline di distribuzione rappresenta un cluster GKE, Cloud Run o Anthos in cui viene eseguito il deployment della tua applicazione.
Gestisci la tua applicazione su GKE, Cloud Run o Anthos.
GKE è l'ambiente gestito di Google Cloud per l'esecuzione di applicazioni containerizzate su Kubernetes.
Con Cloud Run, puoi eseguire i container in un ambiente serverless.
Anthos fornisce un'esperienza operativa e di sviluppo coerente per ambienti cloud e on-premise.
Monitora le prestazioni della tua applicazione utilizzando la suite operativa di Google Cloud.
La suite operativa di Google Cloud offre il monitoraggio e il logging integrati per la tua applicazione.
Passaggi successivi
Per uno sguardo rapido e semplice su come creare una pipeline di distribuzione e utilizzarla per eseguire il deployment di un'applicazione, prova la guida rapida.
Scopri di più sull'interazione tra i componenti di Google Cloud Deploy.
Consulta il Framework dell'architettura Google Cloud: eccellenza operativa per articoli su come utilizzare i principi di eccellenza operativa per creare una base di distribuzione automatizzata.