Architettura del servizio Cloud Deploy

Questo documento descrive le relazioni tra Cloud Deploy e i sistemi esterni con cui funziona per eseguire il deployment delle tue applicazioni. Questi sistemi sono altri servizi Google Cloud e strumenti di terze parti.

La visualizzazione generale

Il seguente diagramma mostra le relazioni tra Cloud Deploy e i sistemi separati su cui si basa.

Relazioni tra i componenti di Cloud Deploy

Come mostrato in questo diagramma, Cloud Deploy interagisce con i seguenti sistemi:

  • Il tuo sistema CI

    Cloud Deploy supporta la maggior parte degli strumenti CI, purché un output del processo CI possa essere una chiamata all'API o all'CLI di Cloud Deploy per creare una release.

  • Cloud Build

    Cloud Deploy chiama Cloud Build per il rendering dei manifest ed il deployment nel runtime di destinazione.

  • Skaffold

    Cloud Deploy utilizza Skaffold tramite Cloud Build per eseguire il rendering e il deployment dei manifest, eseguendo così il deployment dell'applicazione.

  • Cloud Storage

    Cloud Deploy archivia l'origine di rendering e i manifest sottoposti a rendering in un bucket Cloud Storage.

  • Suite operativa di Google Cloud e Cloud Audit Logs.

    La suite operativa di Google Cloud raccoglie e rende disponibili i dati di logging per Cloud Deploy.

    Vedi anche Audit logging.

  • Pub/Sub

    Cloud Deploy pubblica messaggi in diversi argomenti Pub/Sub. Puoi utilizzare questo servizio per l'integrazione con il flusso di lavoro esterno, i test e altri sistemi correlati.

    Consulta Iscrizione alle notifiche di Cloud Deploy per ulteriori informazioni.

  • Runtime di destinazione

    Cloud Deploy utilizza skaffold apply, tramite Cloud Build, per eseguire il deployment delle applicazioni nel runtime di destinazione (GKE o GKE Enterprise).

Risorse di Cloud Deploy

Il seguente diagramma mostra le risorse utilizzate da Cloud Deploy per distribuire le tue applicazioni e le relazioni tra queste risorse:

Relazioni tra risorse Cloud Deploy

Come mostrato in questo diagramma, le relazioni tra le risorse sono le seguenti:

  • La pipeline di distribuzione può produrre zero o più release e può fare riferimento a uno o più target, inclusi più target e i relativi target secondari associati.

  • Ogni release include l'istanza della pipeline, ovvero uno "snapshot" della pipeline di distribuzione e dei target così come sono stati configurati al momento della release.

  • Ogni release può produrre zero o più implementazioni e può fare riferimento a zero o più artefatti.

    Ogni implementazione include almeno una fase, che rappresenta una raccolta di operazioni (job) in un'implementazione che sono raggruppate logicamente insieme, ad esempio un deployment o un deployment e verifica.

    Ogni fase include uno o più job, che rappresentano le operazioni da eseguire durante l'implementazione: deployment o verifica. Ogni job può includere una o più esecuzioni di job, ovvero istanze di job, ad esempio un tentativo di deployment. Un job eseguito è una risorsa figlio dell'implementazione.

    I target multipli, utilizzati per il deployment parallelo, creano implementazioni del controller, che creano implementazioni figlio, che corrispondono a destinazioni secondarie.

  • Ogni implementazione è associata a una destinazione.

    Per il deployment parallelo , ogni target secondario è associato a un'implementazione figlio.

  • Ogni destinazione è associata a un cluster GKE o Anthos o a un'altra destinazione di runtime per l'applicazione.

  • Un target può essere associato a una o più pipeline di distribuzione.

  • Un artefatto è qualsiasi output del processo CI (ad esempio, un'immagine container) di cui viene eseguito il deployment in un runtime di destinazione come parte di un'implementazione.

Inoltre, un'implementazione ha una o più fasi, mentre le fasi hanno uno o più job e uno o più esecuzioni di job.

Risorse di implementazione

Come mostrato in questo diagramma, un'implementazione include quanto segue:

  • Fasi

    Una fase contiene uno o più job (ad esempio deployment o deployment e verifica). Ogni implementazione prevede una o più fasi. Una fase è un messaggio secondario di un'implementazione.

  • Job

    L'operazione specifica da eseguire su un'implementazione, ad esempio deployment o verifica. Un job è un messaggio secondario di un'implementazione.

  • JobRuns

    Un'istanza di un job, ad esempio un tentativo di verifica. Ogni job può avere zero o più jobRun. JobRun è una risorsa secondaria di un'implementazione.

Come si combinano per pubblicare la nuova uscita

Questa sezione descrive come Cloud Deploy interagisce con i componenti elencati in questo documento per automatizzare la distribuzione della tua applicazione come release.

  1. Il tuo sistema CI richiama una pipeline di distribuzione di Cloud Deploy.

    Il processo CI chiama Cloud Deploy utilizzando l'CLI o l'API per creare una nuova release, passando gli artefatti o i riferimenti della build alle immagini.

    Per ulteriori informazioni sull'integrazione del sistema CI, consulta Integrazione di Cloud Deploy con altri sistemi.

  2. Quando viene creata una nuova release, Cloud Deploy procede come segue:

    1. Archivia un'istanza della pipeline di distribuzione come parte della release.

      Questa istanza della pipeline rimane invariata per questa release, anche se la configurazione della pipeline di distribuzione viene modificata. Per ulteriori informazioni, consulta Istanze di pipeline per release.

      Inoltre, la versione di Skaffold viene archiviata come parte della release. Nella maggior parte dei casi, questa sarà la versione predefinita di Skaffold, ma poiché puoi specificare altre versioni, queste informazioni vengono archiviate.

    2. Chiama Cloud Build, che recupera l'origine di rendering Skaffold da Cloud Storage.

      Cloud Deploy archivia l'origine di rendering nel bucket Cloud Storage predefinito o alternativo.

    3. Richiama skaffold diagnose (utilizzando la versione di Skaffold archiviata al momento della creazione della release) per generare un singolo manifest efficace.

    4. Richiama skaffold render per eseguire il rendering del manifest utilizzando le immagini fornite o gli artefatti della build.

      Cloud Deploy sostituisce i nomi delle immagini in spec.templates.spec.containers.image con i percorsi completi delle immagini (inclusi digest o tag) forniti nel comando gcloud deploy releases create o in un file degli artefatti di build a cui fa riferimento il comando.

      Cloud Deploy archivia il manifest sottoposto a rendering nel bucket Cloud Storage predefinito o alternativo.

      Cloud Deploy esegue queste azioni utilizzando l'ambiente di esecuzione predefinito o alternativo.

    5. Crea ed esegue automaticamente il deployment di un'implementazione nella prima destinazione, chiamando skaffold apply.

      Questo è vero solo quando Cloud Deploy viene richiamato dall'interfaccia a riga di comando per creare una release.

      Il processo di deployment nella prima destinazione è lo stesso che utilizzi per le promozioni, come descritto nel passaggio successivo.

    6. Chiamate skaffold verify, se verify è true per la destinazione nella configurazione della pipeline di distribuzione e se la verifica è specificata nella configurazione Skaffold.

  3. Quando è il momento di promuovere la release alla destinazione successiva, Cloud Build recupera il manifest specifico per la destinazione da Cloud Storage. Quindi Cloud Build richiama skaffold apply per applicare il manifest sottoposto a rendering al runtime di destinazione specificato.

    Se il target richiede l'approvazione, puoi approvare o rifiutare tramite l'interfaccia a riga di comando o utilizzando la console.

    Inoltre, Cloud Deploy genera un messaggio Pub/Sub, a cui puoi iscriverti per avviare automaticamente un flusso di lavoro di approvazione.

    Cloud Deploy utilizza la versione di Skaffold e l'istanza della pipeline associate a questa release ed esegue questo passaggio nell'ambiente di esecuzione predefinito o personalizzato.

    Questo processo è valido non solo per le promozioni, ma anche per i rollback e i deployment.

  4. Durante le operazioni di Cloud Deploy, il servizio pubblica notifiche in diversi argomenti Pub/Sub (ad esempio, quando un'implementazione richiede l'approvazione).

    Questa e altre integrazioni sono descritte più in dettaglio in Integrazione di Cloud Deploy con sistemi esterni.

  5. Durante le operazioni di Cloud Deploy, il servizio scrive log della piattaforma e audit log nella suite operativa di Google Cloud e in Cloud Audit Logs.

In tutti questi passaggi, il controllo del flusso e l'accesso alle risorse sono limitati mediante Identity and Access Management.

Passaggi successivi