Panoramica di Cloud Deploy

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, 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, che utilizzi quando fai riferimento alla pipeline di pubblicazione, e una descrizione.

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

  • (Facoltativo) Etichette e annotazioni.

  • Inoltre, facoltativamente, le definizioni dei target.

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

Procedura di distribuzione di Cloud Deploy

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

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

    Hai anche bisogno di una configurazione per Skaffold, che Cloud Deploy richiede 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. Registri 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 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 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, purché restituisca una o più immagini container da fornire alla pipeline di distribuzione Cloud Deploy.

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

  5. Quando è tutto pronto per il deployment dell'applicazione nel target successivo, chiami 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).

    Il processo di creazione e promozione delle release è descritto 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 nella sequenza di promozione definita nella pipeline. La prima chiamata a Cloud Deploy crea un release, poi una risorsa rollout che viene utilizzata per il deployment nella prima destinazione 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 una destinazione, imposta la proprietà requireApproval nella definizione della destinazione.

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 emissione di biglietti potrebbe abbonarsi al messaggio per avviare un workflow 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:

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

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

Per ulteriori dettagli, consulta la sezione 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 rispetto all'ultima release di cui è stato eseguito il deployment. Il nuovo rollout utilizza gli stessi parametri utilizzati in quell'implementazione riuscita.

Per saperne di più, consulta 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 facilmente il tuo 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. ovvero 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 su Google Kubernetes Engine, Cloud Run e GKE Enterprise.

Se hai utilizzato principalmente strumenti Google Cloud , il flusso di origine-produzione avrebbe il seguente aspetto:

  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 da eseguire il deployment e l'esecuzione suGoogle 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 significa che devi integrare Skaffold nel tuo flusso di sviluppo locale. ma 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 repository del codice sorgente. L'output di Cloud Build saranno artefatti, incluse immagini container deployable. 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 ti 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.

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

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

    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.

    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