Panoramica di Cloud Deploy

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

Come funziona una pipeline Cloud Deploy

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

  • Un nome, da utilizzare quando fai riferimento alla pipeline di importazione, e una descrizione.

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

  • (Facoltativo) Etichette e annotazioni.

  • Facoltativamente, anche le definizioni dei target.

I target possono essere definiti nello stesso file di configurazione della pipeline di importazione o in uno o più file separati. Più pipeline di distribuzione possono utilizzare lo stesso target o più target, ma un determinato target può essere utilizzato una sola volta in una determinata pipeline di distribuzione.

Procedura di importazione di Cloud Deploy

Di seguito è riportata una descrizione di ciò che accade in uno scenario semplice di distribuzione continua di Cloud Deploy.

  1. Definisci la pipeline di importazione in un file di configurazione YAML.

    Questo file di configurazione definisce la sequenza di promozione in cui eseguire il deployment della tua applicazione in una serie di target.

    Inoltre, devi avere una configurazione per Skaffold, di cui Cloud Deploy ha bisogno per eseguire operazioni di rendering e deployment.

  2. Definisci i target nel file di configurazione della pipeline o in uno o più file distinti.

  3. Registra la pipeline con il servizio Cloud Deploy.

    Ora che il servizio conosce la tua applicazione, gestisce il deployment ai target in base alla sequenza di promozione 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 target, ciascuno dei quali viene generato utilizzando la fonte di rendering fornita, skaffold.yaml, e i riferimenti a immagini container specifiche da 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 questo rollout, l'applicazione viene implementata nel primo target.

    Puoi utilizzare qualsiasi strumento CI, a condizione che generi una o più immagini container da fornire alla pipeline di distribuzione Cloud Deploy.

    Inoltre, la chiamata per creare una release e invocare una pipeline di distribuzione non deve provenire dallo strumento CI. Può provenire da uno script o da qualsiasi sistema che risponde al completamento della procedura di CI.

  5. Quando è tutto pronto per eseguire il deployment dell'applicazione nel target successivo, chiama Cloud Deploy per promuoverla.

    In ogni caso, la chiamata per invocare la promozione fa sì che Cloud Deploy crei un nuovo implementazione.

  6. La promozione continua in tutti i target della sequenza, l'ultimo dei quali è prod (o qualsiasi nome tu usi per il target finale per mettere l'applicazione in produzione).

    La procedura di creazione e promozione delle release è descritta in modo più dettagliato nell'architettura del servizio Cloud Deploy.

Durante l'esecuzione della pipeline, Cloud Deploy raccoglie le metriche e i dettagli di controllo.

Promozione

Per promuovere una release, devi eseguirne il deployment nel target successivo della sequenza di promozione definita nella pipeline. La prima chiamata a Cloud Deploy crea un release, quindi una risorsa rollout che viene utilizzata per il deployment nel primo target della sequenza di promozione. Ogni chiamata successiva per promuovere la release comporta un'implementazione nel target successivo.

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 che può essere utilizzato da un sistema integrato. Ad esempio, un sistema di vendita di biglietti potrebbe iscriversi al messaggio per avviare un flusso di lavoro di approvazione.

Per ulteriori informazioni sulle promozioni e sulla gestione dell'approvazione delle promozioni, consulta la sezione Richiedi approvazione.

Notifiche

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

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

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

Per ulteriori dettagli, consulta la sezione Utilizzare le notifiche di Cloud Deploy.

Rollback

Cloud Deploy supporta il rollback dell'applicazione di cui è stato eseguito il deployment in qualsiasi destinazione. Un rollback in Cloud Deploy consiste nell'attivare un rollout in base all'ultima release di cui è stato eseguito il deployment. Il nuovo implementazione utilizza gli stessi parametri utilizzati per il deployment riuscito.

Per ulteriori 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 anche collegare facilmente il tuo loop di sviluppo locale a una pipeline di distribuzione continua di Cloud Deploy.

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

Cloud Deploy con altri strumenti Google Cloud

Cloud Deploy supporta quasi tutti gli strumenti a monte di una pipeline CI/CD. In altre parole, puoi utilizzare qualsiasi ambiente di sviluppo e repository di codice sorgente, qualsiasi sistema di integrazione continua (CI) e qualsiasi repository di elementi.

A valle, Cloud Deploy esegue il deployment in Google Kubernetes Engine, Cloud Run e GKE Enterprise.

Se hai utilizzato principalmente gli strumenti Google Cloud, il flusso di origine alla produzione sarà simile al seguente:

  1. Utilizza Cloud Code per creare il codice sorgente dell'applicazione.

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

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

    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 che devi includere Skaffold nel tuo flusso di sviluppo locale. Tuttavia, puoi sfruttarlo per lo sviluppo continuo.

  3. Crea l'applicazione utilizzando Cloud Build.

    Cloud Build ti consente di configurare una pipeline CI che può essere attivata da un commit al tuo repository di codice sorgente. L'output di Cloud Build sarà costituito da elementi tra cui immagini di container di cui è possibile eseguire il deployment. Puoi aggiungere una chiamata a Cloud Deploy per creare una release e invocare la pipeline di distribuzione.

  4. Archivia gli artefatti in Artifact Registry.

    Cloud Deploy recupera l'immagine o le immagini container da Artifact Registry, che ti consente di archiviare centralmente gli elementi e le dipendenze.

  5. Configura la pipeline di distribuzione in Cloud Deploy per acquisire l'immagine del contenitore ed eseguirne il deployment in una progressione di n target.

    Ciascuno di questi target identificati nella pipeline di distribuzione rappresenta un cluster GKE, 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 offre un'esperienza operativa e di sviluppo coerente per ambienti cloud e on-premise.

  7. Monitora le prestazioni della tua applicazione utilizzando Google Cloud Observability.

    Google Cloud Observability offre monitoraggio e logging integrati per la tua applicazione.

Passaggi successivi