Panoramica di Cloud Deploy

Cloud Deploy è un servizio gestito che automatizza la distribuzione delle tue 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 di Cloud Deploy

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

  • Un nome, che utilizzi 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.

  • Sempre facoltativamente, le definizioni dei target stessi.

I target possono essere definiti nello stesso file di configurazione della pipeline di distribuzione o 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 una sola volta in una determinata pipeline di distribuzione.

La procedura di distribuzione di Cloud Deploy

Di seguito è riportata la descrizione di uno scenario di distribuzione continua di Cloud Deploy.

  1. Definisci 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.

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

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

  3. Registra la pipeline con il servizio Cloud Deploy.

    Ora che il servizio conosce la tua applicazione, gestisce il deployment nei target in base alla sequenza di promozione definita.

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

    Questa chiamata crea una risorsa release, che rappresenta il manifest sottoposto a rendering per ogni target, 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 rollout risorsa, che associa la release al primo ambiente di destinazione. In base a questo rollout, l'applicazione viene sottoposta a deployment nel primo target.

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

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

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

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

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

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

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

Promozione

Promuovere una release significa eseguirne il deployment nel target successivo della sequenza di promozione definita nella pipeline. La prima chiamata a Cloud Deploy crea una risorsa release, quindi una risorsa rollout utilizzata per il deployment nel primo target della sequenza di promozione. Ogni chiamata successiva per promuovere la release genera un rollout 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 in the target definition.

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 gestione dei ticket potrebbe sottoscrivere il messaggio per avviare un workflow di approvazione.

Per ulteriori informazioni sulle promozioni e sulla gestione dell'approvazione delle promozioni, consulta Richiedere l'approvazione.

Notifiche

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

  • Rendering: inizio, esito positivo e negativo
  • Deployment: inizio, esito positivo e negativo
  • È necessaria un'approvazione
  • Approvazione accordata
  • Approvazione rifiutata

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

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

Rollback

Cloud Deploy supporta il rollback dell'applicazione di cui hai eseguito il deployment in qualsiasi target. Un rollback in Cloud Deploy consiste nell'attivazione di un rollout rispetto all'ultima release di cui è stato eseguito il deployment correttamente. Il nuovo rollout utilizza gli stessi parametri utilizzati nel 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 connettere il ciclo 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 Google Cloud strumenti

Cloud Deploy supporta quasi tutti gli strumenti upstream 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 qualsiasi repository di artefatti.

A valle, Cloud Deploy esegue il deployment in Cloud Run e Google Kubernetes Engine, inclusi i cluster collegati GKE.

Se hai utilizzato principalmente Google Cloud strumenti open source, il flusso dal codice sorgente 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 di cui eseguire il deployment ed eseguire su Google Cloud.

  2. Utilizza Skaffold per gestire il 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 rendere Skaffold parte del flusso di sviluppo locale. Tuttavia, puoi sfruttarlo per it per lo sviluppo continuo.

  3. Crea l'applicazione utilizzando Cloud Build.

    Cloud Build consente di configurare una pipeline di CI che può essere attivata da un commit al repository di codice sorgente. L'output di Cloud Build sarà costituito da artefatti, incluse le 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. Archivia gli artefatti in Artifact Registry.

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

  5. Configura la pipeline di distribuzione in Cloud Deploy in modo che prenda l'immagine container ed esegua il deployment in una progressione di n target.

    I target identificati nella pipeline di distribuzione rappresentano cluster GKE, servizi o job Cloud Run o cluster collegati GKE in cui viene eseguito il deployment finale dell'applicazione.

  6. Gestisci l'applicazione su GKE o Cloud Run.

    GKE è l' Google Cloud ambiente gestito per l'esecuzione di applicazioni containerizzate su Kubernetes.

    Con Cloud Run, puoi eseguire i container in un ambiente serverless.

    I cluster collegati GKE offrono un'esperienza operativa e di sviluppo coerente per ambienti cloud e on-premise.

  7. Monitora il rendimento dell'applicazione utilizzando Google Cloud Observability.

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

Passaggi successivi