Questo documento descrive le relazioni tra Cloud Deploy e i sistemi esterni con cui funziona per eseguire il deployment delle applicazioni. Questi sistemi sono altri servizi Google Cloud e strumenti di terze parti.
La visualizzazione di alto livello
Il seguente diagramma mostra le relazioni tra Cloud Deploy e i sistemi distinti su cui si basa.
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, a condizione che un output del processo CI possa essere una chiamata all'API o all'CLI di Cloud Deploy per creare una release.
-
Cloud Deploy chiama Cloud Build per eseguire il rendering dei manifest e il deployment nel runtime di destinazione.
-
Cloud Deploy utilizza Skaffold tramite Cloud Build per eseguire il rendering e il deployment dei manifest, quindi il deployment dell'applicazione.
-
Cloud Deploy archivia l'origine di rendering e i manifest sottoposti a rendering in un bucket Cloud Storage.
Google Cloud Observability e Cloud Audit Logs.
Google Cloud Observability raccoglie e rende disponibili i dati di logging per Cloud Deploy.
Vedi anche Audit log.
-
Cloud Deploy pubblica messaggi in diversi argomenti Pub/Sub. Puoi utilizzare questo servizio per l'integrazione con flussi di lavoro esterni, test e altri sistemi correlati.
Per ulteriori informazioni, consulta Iscrizione alle notifiche di Cloud Deploy .
Runtime target
Cloud Deploy utilizza
skaffold apply
, tramite Cloud Build, per eseguire il deployment delle applicazioni nel runtime di destinazione (GKE o GKE Enterprise).
Risorse Cloud Deploy
Il seguente diagramma mostra le risorse utilizzate da Cloud Deploy per eseguire il deployment delle tue applicazioni e le relazioni tra queste risorse:
Come mostrato in questo diagramma, le relazioni tra le risorse sono le seguenti:
La pipeline di distribuzione può generare zero o più release e può fare riferimento a uno o più target, inclusi i target multipli e i relativi target secondari associati.
La pipeline di importazione può anche fare riferimento a una o più automazioni, che automatizzano le azioni sulle risorse Cloud Deploy.
Ogni release include l'istanza della pipeline, ovvero un "snapshot" della pipeline di distribuzione e dei target così come sono stati configurati al momento della creazione della release.
Ogni release può generare zero o più implementazioni e può fare riferimento a zero o più elementi.
Ogni implementazione include almeno una fase, che rappresenta una raccolta di operazioni (job) in un'implementazione raggruppate logicamente, ad esempio un deployment o un deployment e una verifica.
Ogni fase include uno o più job che rappresentano le operazioni da eseguire durante il rollout, ovvero il deployment o la verifica. Ogni job può includere una o più esecuzioni, ovvero istanze di job, ad esempio un tentativo di implementazione. Un'esecuzione di job è una risorsa secondaria dell'implementazione.
I target multipli, utilizzati per il deployment parallelo, creano implementazioni del controller, che a loro volta generano implementazioni secondarie corrispondenti ai target secondari.
Ogni implementazione è associata a un target.
Per il deployment parallelo , ogni target secondario è associato a un implementazione secondaria.
Ogni target è associato 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 elemento è qualsiasi output del processo CI (ad esempio un'immagine container) che viene implementato in un runtime di destinazione nell'ambito di un rollout.
Inoltre, un'implementazione ha una o più fasi e le fasi hanno uno o più job e una o più esecuzioni di job.
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 ha una o più fasi. Una fase è un messaggio secondario in un rollout.
Job
L'operazione specifica da eseguire su un'implementazione, ad esempio il deployment o la verifica. Un job è un messaggio secondario in un rollout.
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.
Le automazioni contengono regole di automazione a cui possono fare riferimento zero o più risorse AutomationRun. AutomationRuns sono istanze di regole di automazione eseguite, ad esempio una promozione automatica da un target a un altro. Le risorse Automation e AutomationRun sono risorse peer-child sotto una pipeline di caricamento.
Come si combinano per pubblicare la release
Questa sezione descrive come Cloud Deploy interagisce con i componenti elencati in questo documento per automatizzare la distribuzione dell'applicazione come release.
Il sistema CI invoca una pipeline di distribuzione Cloud Deploy.
Il processo CI chiama Cloud Deploy utilizzando l'CLI o l'API per creare una nuova release, passando gli elementi di compilazione o i riferimenti alle immagini.
Per ulteriori informazioni sull'integrazione del sistema CI, consulta Integrare Cloud Deploy con altri sistemi.
Quando viene creata una nuova release, Cloud Deploy esegue le seguenti operazioni:
Memorizza un'istanza della pipeline di importazione nell'ambito della release.
Questa istanza della pipeline rimane invariata per questa release, anche se la configurazione della pipeline di distribuzione viene modificata. Per saperne di più, consulta la sezione Istanze pipeline per release.
Inoltre, la versione di Skaffold viene memorizzata come parte della release. Nella maggior parte dei casi, si tratta della versione predefinita di Skaffold, ma poiché puoi specificare altre versioni, queste informazioni vengono memorizzate.
Chiama Cloud Build, che recupera l'origine di rendering di Skaffold da Cloud Storage.
Cloud Deploy archivia l'origine di rendering nel bucket Cloud Storage predefinito o alternativo.
Chiama
skaffold diagnose
(utilizzando la versione di Skaffold memorizzata al momento della creazione della release) per generare un singolo manifest efficace.Chiama l'operazione
render
.Se utilizzi destinazioni integrate, Cloud Deploy chiama
skaffold render
per eseguire il rendering del manifest utilizzando le immagini o gli artefatti di build forniti. Cloud Deploy sostituisce i nomi delle immagini inspec.templates.spec.containers.image
con i percorsi completi delle immagini (inclusi digest o tag) forniti nel comandogcloud deploy releases create
o in un file degli elementi di compilazione a cui fa riferimento il comando.Se utilizzi un target personalizzato, Cloud Deploy chiama l'operazione
render
definita per il tipo di target personalizzato.Cloud Deploy archivia il manifest visualizzato nel bucket Cloud Storage predefinito o alternativo.
Cloud Deploy esegue queste azioni utilizzando l'ambiente di esecuzione predefinito o alternativo.
Quando viene creato un implementazione (automaticamente dopo la creazione della release o su richiesta più tardi), Cloud Deploy esegue le seguenti operazioni:
Chiama gli hook di pre-deployment, se specificati.
Se utilizzi una strategia di deployment canary, gli hook di pre-deployment vengono chiamati all'inizio della prima fase.
Chiama l'operazione
deploy
.Se utilizzi destinazioni integrate, Cloud Deploy crea e esegue automaticamente il deployment di un rollout nel primo target chiamando
skaffold apply
. Se utilizzi un target integrato, il primo implementazione viene creata automaticamente al momento della creazione della release.Se utilizzi un target personalizzato, Cloud Deploy crea automaticamente un rollout per il primo target, chiamando l'operazione
deploy
definita per il tipo di target personalizzato.Per i target integrati e quelli personalizzati, l'implementazione nel primo target è automatica solo quando la release viene creata utilizzando la riga di comando.
La procedura di implementazione nel primo target è la stessa delle promozioni, come descritto nel passaggio successivo.
Chiama
skaffold verify
, severify
ètrue
per la destinazione nella pipeline di distribuzione config e se la verifica è specificata nella configurazione di Skaffold.Chiama gli hook di post-deployment, se specificati, dopo
verify
, se è specificato unverify
. In caso contrario, gli hook di post-deployment vengono chiamati dopodeploy
.Se utilizzi una strategia di deployment canary, gli hook post-deployment vengono eseguiti come ultimo job nella fase di implementazione finale.
Quando è il momento di promuovere la release al target successivo, Cloud Build recupera il manifest specifico per il target da Cloud Storage. Quindi Cloud Build invoca
skaffold apply
per applicare il manifest visualizzato al runtime di destinazione specificato.Se la destinazione richiede l'approvazione, puoi approvare o rifiutare tramite la CLI o 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.
Questa procedura vale non solo per le promozioni, ma anche per i rollback e per i ricollocamenti.
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 in modo più dettagliato in Integrare Cloud Deploy con sistemi esterni.
Puoi specificare un'automazione per eseguire automaticamente varie operazioni all'interno della pipeline di distribuzione. Questi possono essere eseguiti all'ora specificata. Un
automationRun
rappresenta un'esecuzione di una regola di automazione.Durante il funzionamento di Cloud Deploy, il servizio scrive log della piattaforma e audit log in Google Cloud Observability e Cloud Audit Logs.
In tutti questi passaggi, il controllo del flusso e l'accesso alle risorse sono limitati utilizzando Identity and Access Management.
Passaggi successivi
Scopri di più su come integrare Cloud Deploy con altri sistemi
Consulta le informazioni importanti sul ciclo di vita delle versioni di Skaffold.
Scopri di più sugli ambienti di esecuzione di Cloud Deploy.
Prova la procedura dettagliata per i profili Skaffold di Cloud Deploy