Panoramica di Cloud Deploy

Cloud Deploy è un servizio gestito che automatizza la distribuzione delle tue applicazioni a una serie di ambienti target in una sequenza di promozione definita. Quando vuoi eseguire il deployment dell'applicazione aggiornata, crei una release, il cui lifecycle è gestito da una pipeline di distribuzione.

Come funziona una pipeline di Cloud Deploy

La pipeline di distribuzione di Cloud Deploy contiene le seguenti informazioni:

  • Un nome, da utilizzare per fare riferimento alla pipeline di distribuzione, e una descrizione.

  • La sequenza di promozioni, che descrive l'ordine in cui eseguire il deployment nei target configurati.

  • (Facoltativo) Etichette e annotazioni.

  • Inoltre, facoltativamente, le definizioni di target stesse.

Le destinazioni possono essere definite 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 gli stessi target, ma un determinato target può essere utilizzato solo una volta in una determinata pipeline di distribuzione.

Il processo di distribuzione di Cloud Deploy

Di seguito è riportata una descrizione di cosa succede in un semplice scenario di distribuzione continua di Cloud Deploy.

  1. Puoi definire la pipeline di distribuzione in un file di configurazione YAML.

    Questo file di configurazione definisce la sequenza di promozioni in cui eseguire il deployment dell'applicazione in una serie di target.

    È necessaria anche una configurazione per Skaffold, necessaria a Cloud Deploy per eseguire operazioni di rendering e deployment.

  2. Puoi definire i target nel file di configurazione della pipeline oppure in uno o più file separati.

  3. Registri la tua pipeline con il servizio Cloud Deploy.

    Ora che il servizio sa dell'applicazione, gestisce il deployment nelle destinazioni in base alla sequenza di promozioni definita.

  4. L'output del processo CI include una chiamata a Cloud Deploy per avviare la pipeline di distribuzione.

    Questa chiamata crea una risorsa release, che rappresenta il manifest visualizzato per ogni destinazione, ognuno dei quali viene generato utilizzando l'origine di rendering fornita, skaffold.yaml e i riferimenti a immagini container specifiche di cui eseguire il deployment. Per questa prima chiamata per creare una release, Cloud Deploy crea automaticamente una risorsa rollout, che associa la release al primo ambiente di destinazione. In base a questa implementazione, viene eseguito il deployment dell'applicazione nella prima destinazione.

    Puoi utilizzare qualsiasi strumento di CI purché generi una o più immagini container da fornire alla tua pipeline di distribuzione di 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 risponde al completamento del processo CI.

  5. Quando è tutto pronto per eseguire il deployment della tua applicazione alla destinazione successiva, chiama Cloud Deploy per promuoverla.

    In ogni caso, la chiamata per richiamare la promozione fa sì che Cloud Deploy crei una nuova implementazione.

  6. La promozione continua in tutti i target nella sequenza di promozioni, l'ultimo dei quali è prod (o il nome utilizzato per il target finale per la messa in produzione dell'applicazione).

    Il processo di creazione e promozione della release è descritto in maggiore dettaglio in Architettura del servizio di Cloud Deploy.

Durante l'esecuzione della pipeline, Cloud Deploy raccoglie metriche e dettagli di audit.

Promozione

Per promuovere una release, devi eseguirne il deployment al target successivo nella sequenza di promozione definita nella pipeline. La prima chiamata a Cloud Deploy crea un elemento release, poi una risorsa rollout utilizzata per il deployment sulla prima destinazione nella sequenza di promozione. Ogni chiamata successiva per promuovere la release comporta un'implementazione nella destinazione successiva.

Approvazioni

Puoi specificare che è necessaria un'approvazione per la promozione a qualsiasi target. 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 del target.

Quando un target richiede l'approvazione, Cloud Deploy genera un messaggio Pub/Sub utilizzabile da un sistema integrato. Ad esempio, un sistema di gestione dei ticket potrebbe iscriversi al messaggio per avviare un flusso di lavoro di approvazione.

Consulta Richiedere l'approvazione per ulteriori informazioni sulle promozioni e sulla gestione dell'approvazione per le promozioni.

Notifiche

Cloud Deploy fornisce notifiche Pub/Sub per i seguenti eventi:

  • Rendering: inizio, successo e fallimento
  • Deployment: avvio, successo ed errore
  • È necessaria un'approvazione
  • Approvazione approvata
  • Approvazione rifiutata

Cloud Deploy utilizza un argomento Pub/Sub per inviare queste notifiche.

Per ulteriori dettagli, vedi Utilizzo delle notifiche di Cloud Deploy.

Rollback

Cloud Deploy supporta il rollback dell'applicazione di cui hai eseguito il deployment in qualsiasi destinazione. Un rollback in Cloud Deploy consiste nell'attivazione di un'implementazione nell'ultima release di cui è stato eseguito il deployment. La nuova implementazione utilizza gli stessi parametri utilizzati per il deployment riuscito.

Per maggiori dettagli, consulta Eseguire il rollback di un deployment.

Informazioni su Skaffold e Cloud Deploy

Cloud Deploy utilizza Skaffold per il rendering, il deployment e la verifica. Con Skaffold puoi inoltre connettere facilmente il tuo loop di sviluppo locale a una pipeline di distribuzione continua di Cloud Deploy.

Per saperne di più su come Cloud Deploy si integra con Skaffold, consulta la panoramica su Skaffold.

Cloud Deploy con altri strumenti Google Cloud

Cloud Deploy supporta quasi tutti gli strumenti a monte in 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, Cloud Deploy esegue il deployment su Google Kubernetes Engine, Cloud Run e GKE Enterprise.

Se utilizzassi principalmente strumenti Google Cloud, il flusso da sorgente a produzione sarebbe simile a questo:

  1. Utilizza Cloud Code per creare l'origine dell'applicazione.

    Cloud Code estende diversi IDE popolari (VS Code, IntelliJ, Cloud Shell) per semplificare la creazione di applicazioni di cui eseguire il deployment e l'esecuzione su Google Cloud.

  2. Utilizza Skaffold per gestire il tuo ciclo di sviluppo locale.

    Cloud Deploy utilizza Skaffold, tramite Cloud Build, per il rendering e il deployment dei manifest. Questa integrazione significa che devi gestire un file skaffold.yaml, ma non significa che devi includere Skaffold nel tuo flusso di sviluppo locale. Ma puoi sfruttarlo per uno sviluppo continuo.

  3. Crea la tua applicazione utilizzando Cloud Build.

    Cloud Build consente di configurare una pipeline CI che può essere attivata da un commit nel repository di codice sorgente. L'output di Cloud Build sarà artefatti, incluse immagini container di cui è possibile eseguire il deployment. Puoi aggiungere una chiamata a Cloud Deploy per creare una release e richiamare la pipeline di distribuzione.

  4. Archiviare gli artefatti in Artifact Registry.

    Cloud Deploy recupera le immagini container da Artifact Registry, che consente di archiviare a livello centrale gli artefatti e le dipendenze.

  5. Configura la tua pipeline di distribuzione in Cloud Deploy per utilizzare l'immagine container ed eseguirne il deployment in una sequenza di n target.

    Ognuno di questi target identificati nella pipeline di distribuzione rappresenta un cluster GKE, un cluster Cloud Run o GKE in cui viene eseguito il deployment dell'applicazione.

  6. Gestisci la tua applicazione su GKE, Cloud Run o GKE Enterprise.

    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.

    GKE Enterprise fornisce un'esperienza operativa e di sviluppo coerente per ambienti cloud e on-premise.

  7. Monitora le prestazioni della tua applicazione utilizzando l'osservabilità di Google Cloud.

    L'osservabilità di Google Cloud offre monitoraggio e logging integrati per la tua applicazione.

Passaggi successivi