Con Cloud Deploy, puoi eseguire il deployment in una destinazione configurata rappresentano più target e viene eseguito il deployment dell'applicazione nelle destinazioni in questione parallelo (contemporaneamente). Il target che identifichi come fase nella pipeline è chiamata multi-target e i target che include più target sono chiamati target secondari.
Puoi usare il deployment parallelo con qualsiasi tipo di destinazione Cloud Deploy supporta, tra cui Google Kubernetes Engine, Cloud Run e GKE Enterprise.
Perché eseguire il deployment parallelo
Puoi usare il deployment parallelo, ad esempio per eseguire il deployment dell'applicazione più target di produzione. In questo caso, non è necessario eseguire il deployment i target in successione, perché non c'è avanzamento (ad esempio, da dev a dalla gestione temporanea alla produzione).
Questo deployment parallelo può far parte di una normale pipeline di distribuzione
progressione:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...]
.
Risorse Cloud Deploy utilizzate per il deployment parallelo
Il deployment parallelo utilizza le seguenti risorse specializzate in Cloud Deploy di risorse:
più target
Un target multiplo è un target configurato con la proprietà
multiTarget
. al livello superiore del file YAML della configurazione di destinazione, anziché fare riferimento per il cluster di runtime o per il servizio, fa riferimento a una o più altre destinazioni, utilizzandomultiTarget.targetIds
.Target figlio
Per target secondario si intende qualsiasi target a cui fa riferimento un target multiplo come
multiTarget.targetIds
. L'asset secondario deve inoltre fare riferimento a un tipo di destinazione supportato (Google Kubernetes Engine, GKE Enterprise o Cloud Run.Implementazioni del controller
L'implementazione del controller è un'implementazione che corrisponde a un target multiplo.
Consulta la sezione Limitazioni per ulteriori informazioni su cosa puoi o non puoi fare con l'implementazione di un controller.
-
Per ulteriori informazioni su cosa puoi e non puoi fare con l'implementazione di un account secondario, consulta la sezione Limitazioni.
Configurare il deployment parallelo
La configurazione di un deployment parallelo consiste nella definizione di un target multiplo e numero di target secondari necessari (fino al limite). Destinazione Le definizioni sono uguali a quelle di tutti i target, ad eccezione di quanto segue:
- I target multipli includono la proprietà
multiTarget
. - I target secondari non includono la proprietà
multiTarget
, ma vi viene fatto riferimento dal target multiplo utilizzando la proprietàmultiTarget.targetIds
. - Puoi configurare il target multiplo per l'approvazione, ma non i target secondari,
che non possono includere
requireApproval:true
.
I target multipli e secondari possono includere ambiente di esecuzione configurazioni. Se un target figlio non specifica un ambiente di esecuzione, eredita quella definita nella definizione di target multipli o quella predefinita. Consulta: Ambienti di esecuzione e deployment parallelo per ulteriori dettagli.
Configura il target multiplo
Un target multiplo è un singolo target identificato come fase della pubblicazione pipeline, ma punta a una o più destinazioni figlio.
La configurazione di più target include la proprietà multiTarget
. R
il target multiplo non può avere le proprietà gke
, run
o anthosCluster
.
La configurazione per un target multiplo è la stessa indipendentemente dal runtime
in cui eseguire il deployment.
Nel file YAML della pipeline di distribuzione o in un file YAML separato, crea la definizione di destinazione di base, incluso multiTarget
:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]
In questo YAML...
TARGET_NAME è il nome di questo target multiplo, utilizzata nella definizione della pipeline di distribuzione,
stages.targetId
proprietà.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sono i nomi dell'elemento figlio per il deployment di questo multi-target. Ogni nome corrisponde alla proprietà
name
nella definizione del target secondario.
La presenza della proprietà multiTarget.targetIds
rende questo target un
multi-target.
Configurare i target figlio
Per ogni target identificato come bambino nei tuoi configurazione multi-target, configura un altro target come target secondario:
Nel file YAML della pipeline di distribuzione o in un file YAML distinto, crea la definizione di destinazione di base:
GKE
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
gke:
cluster: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
In questo YAML...
CHILD_TARGET1 è il nome di questo target secondario. Il nome corrisponde a un membro nell'elenco dei target nella proprietà
multiTarget.targetIds
della definizione multi-target.Il valore della proprietà
gke.cluster
è il nome della risorsa del cluster a cui fa riferimento questo target, inclusi l'ID progetto, la regione e il cluster nome.
Questa destinazione è configurata come una destinazione GKE standard.
L'unico aspetto che lo rende un target secondario è che viene fatto riferimento
Proprietà multiTarget.targetIds
nel target multiplo.
Cloud Run
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
run:
location: projects/PROJECT_ID/locations/REGION
In questo YAML...
CHILD_TARGET1 è il nome di questo target secondario. La corrisponde a un membro nell'elenco dei target della
multiTarget.targetIds
nella definizione di target multipli.Il valore della proprietà
run.location
è il nome della risorsa Servizio Cloud Run a cui fa riferimento questo target, tra cui tra l'ID progetto e la regione.
Questa destinazione è configurata come un Cloud Run standard
target. L'unico aspetto che rende questo target secondario è che viene fatto riferimento
dalla proprietà multiTarget.targetIds
nel target multiplo.
GKE Enterprise
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
anthosCluster:
membership: projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME
In questo YAML...
CHILD_TARGET1 è il nome di questo target secondario. La corrisponde a un membro nell'elenco dei target della
multiTarget.targetIds
nella definizione di target multipli.MEMBERSHIP_NAME è il nome che hai scelto quando hai registrato il cluster utente GKE Enterprise in un parco risorse.
Questa destinazione è configurata come GKE Enterprise standard
target. L'unico aspetto che rende questo target secondario è che viene fatto riferimento
dalla proprietà multiTarget.targetIds
nel target multiplo.
Passa i parametri di deployment alle destinazioni
Puoi differenziare i target secondari includendo i parametri nel tuo e i valori nella definizione della pipeline di distribuzione. Questi valori possono essere applicate separatamente al in manifest separati, in base alla corrispondenza delle etichette nei target corrispondenti.
Ad esempio, potresti volere un numero diverso di repliche per ogni target. Per farlo, devi includere i parametri e i valori nel modulo di pubblicazione progression della pipeline, insieme a sulle etichette sui target secondari in modo che corrispondano a ogni coppia parametro-valore.
Scopri di più sui parametri di deployment.
Crea la release
Con target multipli e secondari configurati, creare la pipeline di distribuzione e le risorse di destinazione, e quindi creare una release, come di consueto.
Il ciclo di vita della pipeline di distribuzione è lo stesso di qualsiasi Pipeline e target di Cloud Deploy, ma quando si arriva fase multi-target, Cloud Deploy crea un controller per il target multiplo e un'implementazione figlio per eseguire il deployment dell'applicazione per ciascun target secondario.
I messaggi Pub/Sub in risposta alle operazioni Cloud Deploy fanno la distinzione tra implementazioni del controller e implementazioni secondarie.
Limitazioni
Un target multiplo non può avere più di 50 target secondari.
Tutti i target figlio di un singolo target multiplo devono avere lo stesso runtime di destinazione (ad esempio tutti i GKE o tutti GKE Enterprise).
All'interno di una pipeline di distribuzione, un target secondario può avere un solo elemento padre multi-target.
Un target multiplo non può essere senza figlio e non può fare riferimento a se stesso o a un altro come target secondari.
Non puoi utilizzare un target figlio più di una volta in una singola pipeline di distribuzione, ma puoi riutilizzarli in altre pipeline.
I pool predefiniti hanno limiti di contemporaneità, contrariamente ai pool privati.
Quando esegui il deployment su più target, il deployment di tutte le implementazioni secondarie viene eseguito con fino al limite di contemporaneità di Cloud Build. Se hai più target secondari limitato, i job di deployment per alcune destinazioni non verranno eseguiti fino al termine di altre, significa che Cloud Deploy non esegue il deployment in tutte le destinazioni figlio nello stesso momento, in questo caso.
Inoltre, se i target includono la funzionalità Verifica offerte di lavoro, è possibile che uno o più job di verifica vengano avviati prima del deployment dell'applicazione in tutte le destinazioni secondarie.
Se devi poter eseguire il deployment contemporaneamente a più destinazioni rispetto al limite specificato nella documentazione di Cloud Build, hai due opzioni:
Richiedi un aumento del numero di build in parallelo che puoi eseguire.
Configura un pool privato e configurare le destinazioni per utilizzare quel pool.
Ambienti di esecuzione e deployment parallelo
Ogni destinazione può essere configurata in modo da utilizzare un ambiente di esecuzione non predefinito.
Se il target multiplo ha un ambiente di esecuzione non predefinito, tutti i target figlio utilizzando l'ambiente di esecuzione predefinito, eredita quello non predefinito più target
Se il target multiplo utilizza l'ambiente di esecuzione predefinito, qualsiasi target secondario configurato con un ambiente di esecuzione non predefinito utilizza quella non predefinito.
Queste regole semplificano la propagazione degli ambienti di esecuzione alle destinazioni figlio da un target multiplo, senza dover definire o modificare per ogni target secondario, consentendoti comunque di personalizzare ambiente di esecuzione per una o più destinazioni figlio, se necessario.
Consulta Utilizzo degli ambienti di esecuzione di Google Cloud Deploy per ulteriori informazioni sugli ambienti di esecuzione in Cloud Deploy.
Esegui il rollback di un deployment parallelo
Se devi eseguire il rollback di un deployment da più destinazioni parallele, Esegui il rollback del target multiplo, come descritto in Esegui il rollback di una destinazione.
Approvazioni per il deployment parallelo
Come per qualsiasi target, puoi configurare il deployment parallelo in modo che richieda approvazioni. Con il deployment parallelo, tuttavia, puoi configurare l'approvazione solo multi-target. L'approvazione o il rifiuto influisce su tutti i target secondari insieme.
Visualizza il deployment parallelo nella console Google Cloud
Puoi visualizzare i dettagli dei target secondari, multi-target, e le implementazioni secondarie nella console Google Cloud.
Quando visualizzi l'elenco dei target per una determinata pipeline di distribuzione, nella sezione Dettagli pipeline, viene elencato il target multiplo, ma non i target figlio. Tuttavia, quando visualizzi i dettagli della release, puoi vedere l'implementazione del controller e il deployment secondario. Puoi anche vedere le implementazioni dei controller e dei file secondari elencate nella Scheda Implementazioni nella pagina dei dettagli della pipeline di distribuzione.
Nella funzione di controllo delle release, puoi visualizzare e confrontare visualizzati per le implementazioni figlio.
Utilizzare il deployment parallelo con una strategia di deployment
Puoi eseguire il deployment in parallelo quando utilizzi una strategia di deployment canary. Consulta: Usa il deployment parallelo con una strategia di deployment canary per ulteriori informazioni.
Passaggi successivi
Prova la guida rapida: esegui il deployment di un'app in più destinazioni contemporaneamente.
Scopri di più sull'utilizzo dei parametri di deployment.
Consulta lo schema di configurazione del target.
Consulta l'articolo Architettura del servizio Cloud Deploy.