Architettura del servizio Google Cloud Deploy

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

Visualizzazione generale

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

Relazioni tra i componenti Cloud Deploy

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

  • Il tuo sistema CI

    Google Cloud Deploy supporta la maggior parte degli strumenti di CI, a condizione che un output del processo di CI possa essere una chiamata all'API o all'interfaccia a riga di comando di Google Cloud Deploy per creare una release.

  • Cloud Build

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

  • Skaffold

    Google Cloud Deploy utilizza Skaffold tramite Cloud Build per il rendering e il deployment dei manifest, quindi eseguendo il deployment della tua applicazione.

  • Cloud Storage

    Google Cloud Deploy archivia l'origine del rendering e i manifest visualizzati, 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 Google Cloud Deploy.

    Vedere anche audit logging.

  • Pub/Sub

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

    Per ulteriori informazioni, consulta l'articolo sull'iscrizione alle notifiche di Google Cloud Deploy .

  • Runtime di destinazione

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

Risorse Google Cloud Deploy

Il seguente diagramma mostra le risorse utilizzate da Google Cloud Deploy per pubblicare le tue applicazioni e le loro relazioni:

Relazioni tra risorse Cloud Deploy

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

  • La pipeline di distribuzione può restituire zero o più release e può fare riferimento a uno o più target.

  • Ogni release include l'istanza di pipeline, ovvero uno snapshot della pipeline di distribuzione e delle destinazioni, così come sono state configurate al momento della creazione 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 logicamente raggruppate, ad esempio un deployment o un deployment e vengono verificati.

    Ogni fase include uno o più job, che rappresentano ciò che deve essere implementato all'implementazione: deployment o verifica. Ogni job può includere una o più esecuzioni, che sono istanze di job, ad esempio un tentativo di deployment. Un'esecuzione del job è una risorsa secondaria del lancio.

  • Ogni implementazione è associata a una destinazione.

  • 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 è un output del processo di 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 include una o più fasi e le fasi hanno uno o più job e una 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 include una o più fasi. Una fase è un messaggio secondario durante un'implementazione.

  • Job

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

  • Esecuzioni job

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

Come interagiscono per offrire la tua uscita

Questa sezione descrive il modo in cui Google 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 Google Cloud Deploy.

    Il processo di CI chiama Google Cloud Deploy tramite l'interfaccia a riga di comando o l'API per creare una nuova release, passando gli artefatti di build o i riferimenti alle immagini.

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

  2. Quando viene creata una nuova release, Google Cloud Deploy:

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

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

      Inoltre, la versione Skaffold viene archiviata come parte della release.

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

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

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

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

      Google 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 di artefatti di build a cui fa riferimento questo comando.

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

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

    5. Crea ed esegue automaticamente il deployment di un'implementazione nel primo target chiamando skaffold apply.

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

      Il processo di deployment nel primo target è lo stesso delle promozioni, come descritto nel passaggio successivo.

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

  3. Quando è il momento di promuovere la release nella destinazione successiva, Cloud Build recupera il manifest specifico della 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 approvarlo o rifiutarlo tramite l'interfaccia a riga di comando o utilizzando la console.

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

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

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

  4. Durante le operazioni di Google 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 ulteriormente nell'articolo Integrare Google Cloud Deploy con i sistemi esterni.

  5. Durante l'operazione di Google Cloud Deploy, il servizio scrive gli audit log della piattaforma e i log di controllo nella suite operativa di Google Cloud e negli audit log di Cloud.

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

Passaggi successivi