Con Cloud Deploy puoi eseguire il deployment in un target configurato per rappresentare più target e la tua applicazione viene distribuita in questi target in parallelo (contemporaneamente). Il target che identifichi come fase nella pipeline è chiamato target multiplo e i target che include sono chiamati target figlio.
Puoi utilizzare il deployment parallelo con qualsiasi tipo di destinazione supportato da Cloud Deploy, inclusi Google Kubernetes Engine, Cloud Run e GKE Enterprise.
Perché il deployment parallelo
Puoi utilizzare il deployment parallelo, ad esempio, per eseguire il deployment dell'applicazione su più target di produzione. In questo caso, non è necessario eseguire il deployment in ogni destinazione in sequenza, perché non c'è alcuna progressione (ad esempio, dalla fase di sviluppo a quella di staging e di produzione).
Questo deployment parallelo può far parte di una normale progressione della pipeline di pubblicazione:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...]
.
Risorse Cloud Deploy utilizzate per il deployment parallelo
Il deployment parallelo utilizza le seguenti risorse specializzate di Cloud Deploy:
più target
Un target multiplo è un target configurato con la proprietà
multiTarget
al livello superiore del file YAML di configurazione del target e, anziché fare riferimento al cluster o al servizio di runtime, fa riferimento a uno o più altri target utilizzandomultiTarget.targetIds
.Target figlio
Un target figlio è qualsiasi target a cui fa riferimento un target multiplo come
multiTarget.targetIds
. L'elemento secondario deve anche fare riferimento a un tipo di destinazione supportato (Google Kubernetes Engine, GKE Enterprise o Cloud Run).Implementazioni del controller
Un'implementazione del controller è un'implementazione che corrisponde al multi-target.
Per ulteriori informazioni su cosa puoi e non puoi fare con l'implementazione di un controller, consulta la sezione Limiti.
-
Per ulteriori informazioni su cosa puoi e non puoi fare con l'implementazione di un account bambino, consulta la sezione Limitazioni.
Configurare il deployment parallelo
La configurazione del deployment parallelo consiste nel definire un target multiplo e il numero di target secondari necessari (fino al limite). Le definizioni di targeting sono le stesse per tutti i target, ad eccezione di quanto segue:
- I target multipli includono la proprietà
multiTarget
. - I target secondari non includono la proprietà
multiTarget
, ma vengono richiamati 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 i target figlio possono includere configurazioni di ambiente di esecuzione personalizzate. Se un target figlio non specifica un ambiente di esecuzione, eredita quello definito nella definizione del target multiplo o quello predefinito. Per ulteriori dettagli, consulta Ambienti di esecuzione e deployment parallelo.
Configura il multitarget
Un target multiplo è un singolo target identificato come una fase della pipeline di distribuzione, ma che rimanda a uno o più target secondari.
La configurazione multitarget include la proprietà multiTarget
. Un
target multiplo non può avere le proprietà gke
, run
o anthosCluster
.
La configurazione per un target multiplo è la stessa indipendentemente dal runtime di destinazione.
Nel file YAML della pipeline di distribuzione o in un file YAML separato, crea la definizione di destinazione di base, inclusi 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 file YAML...
TARGET_NAME è il nome di questo multitarget, utilizzato nella proprietà
stages.targetId
della definizione della pipeline di distribuzione.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sono i nomi dei target figli a cui viene eseguito il deployment di questo target multiplo. Ogni nome corrisponde alla proprietà
name
nella definizione del target secondario.
La presenza della proprietà multiTarget.targetIds
rende questo target un
target multiplo.
Configura i target secondari
Per ogni target identificato come secondario nella 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 file 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 nome del cluster.
Questo target è configurato come un target GKE standard.
L'unica cosa che lo rende un target figlio è che viene fatto riferimento alla 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 file YAML...
CHILD_TARGET1 è il nome di questo target secondario. Il nome corrisponde a un membro dell'elenco di target nella proprietà
multiTarget.targetIds
nella definizione di più target.Il valore della proprietà
run.location
è il nome della risorsa del servizio Cloud Run a cui fa riferimento questo target, inclusi l'ID progetto e la regione.
Questo target è configurato come un target Cloud Run standard. L'unica cosa che lo rende un target figlio è 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 file YAML...
CHILD_TARGET1 è il nome di questo target secondario. Il nome corrisponde a un membro dell'elenco di target nella proprietà
multiTarget.targetIds
nella definizione di più target.MEMBERSHIP_NAME è il nome che hai scelto quando hai registrato il cluster utente GKE Enterprise in un parco risorse.
Questo target è configurato come un target GKE Enterprise standard. L'unica cosa che lo rende un target figlio è che viene fatto riferimento
dall'attributo multiTarget.targetIds
nel target multiplo.
Passare i parametri di deployment ai target
Puoi distinguere i target secondari includendo parametri nel manifest e valori nella definizione della pipeline di importazione. Questi valori possono essere applicati separatamente ai manifest separati, in base alla corrispondenza delle etichette nei target corrispondenti.
Ad esempio, potresti volere un numero diverso di repliche per ogni target secondario. A tale scopo, devi includere i parametri e i valori nella progressione della pipeline di importazione, insieme alle etichette sui target secondari da associare a ogni coppia parametro-valore.
Scopri di più sui parametri di deployment.
Crea la release
Con un target multiplo e target secondari configurati, crea la pipeline di distribuzione e le risorse target, quindi crea una release come di consueto.
Il ciclo di vita della pipeline di distribuzione è lo stesso di qualsiasi pipeline e target di Cloud Deploy, tranne per il fatto che quando arriva al livello con il multi-target, Cloud Deploy crea un rollout del controller per il multi-target e un rollout secondario per distribuire l'applicazione su ogni target secondario.
I messaggi Pub/Sub in risposta alle operazioni di Cloud Deploy distinguono tra implementazioni del controller e implementazioni secondarie.
Limitazioni
Un target multiplo non può avere più di 100 target secondari.
Tutti i target secondari di un singolo target multiplo devono avere lo stesso runtime di destinazione (ad esempio tutti GKE o tutti GKE Enterprise).
All'interno di una pipeline di distribuzione, un target secondario può avere un solo target multiplo principale.
Un target multiplo non può essere senza figli e non può fare riferimento a se stesso o a un altro target multiplo come target figlio.
Non puoi utilizzare un target secondario più di una volta all'interno di una singola pipeline di distribuzione, ma puoi riutilizzarlo in una pipeline diversa.
I pool predefiniti hanno limiti di concorrenza, ma non i pool privati.
Quando esegui il deployment in un target multiplo, tutti gli implementazioni secondarie vengono eseguite contemporaneamente, fino al limite di concorrenza di Cloud Build. Se hai più target secondari rispetto a questo limite, i job di deployment per alcuni target non verranno eseguiti fino al termine di altri, il che significa che Cloud Deploy non esegue il deployment su tutti i target secondari contemporaneamente.
Inoltre, se i target includono job di verifica, è possibile che uno o più di questi job vengano avviati prima che l'applicazione sia stata dispiaggiata in tutti i target secondari.
Se devi eseguire il deployment in contemporanea su più target 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 configura i target in modo che lo utilizzino.
Ambienti di esecuzione e deployment parallelo
Ogni target può essere configurato per utilizzare un ambiente di esecuzione non predefinito.
Se il target multiplo ha un ambiente di esecuzione non predefinito, tutti i target figli che utilizzano l'ambiente di esecuzione predefinito ereditano quello non predefinito dal target multiplo
Se il target multiplo utilizza l'ambiente di esecuzione predefinito, qualsiasi target figlio configurato con un ambiente di esecuzione non predefinito utilizza quest'ultimo.
Queste regole semplificano la propagazione degli ambienti di esecuzione ai target secondari da un target multiplo, quindi non devi definire o modificare l'ambiente di esecuzione per ogni target secondario, pur consentendoti di personalizzare l'ambiente di esecuzione per uno o più target secondari, se necessario.
Per saperne di più sugli ambienti di esecuzione in Cloud Deploy, consulta Utilizzare gli ambienti di esecuzione di Google Cloud Deploy.
Eseguire il rollback di un deployment parallelo
Se devi eseguire il rollback di un deployment da più destinazioni parallele, esegui il rollback del multi-target, come descritto in Eseguire il rollback di una destinazione.
Approvazioni per il deployment parallelo
Come per qualsiasi target, puoi configurare il deployment parallelo in modo che richieda approvazioni. Tuttavia, con il deployment parallelo puoi configurare l'approvazione solo sul multi-target. L'approvazione o il rifiuto influisce su tutti i target secondari contemporaneamente.
Visualizzare il deployment parallelo nella console Google Cloud
Puoi visualizzare i dettagli dei target multi, dei target secondari, dell'implementazione del controller e degli implementazioni secondari nella console Google Cloud.
Quando visualizzi l'elenco dei target per una determinata pipeline di distribuzione, in Dettagli della pipeline di distribuzione è elencato il target multiplo, ma non i target secondari. Tuttavia, quando visualizzi i dettagli della release, puoi vedere l'implementazione del controller e le implementazioni secondarie. Puoi anche visualizzare le implementazioni del controller e dei relativi elementi secondari elencate nella scheda Implementazioni della pagina dei dettagli della pipeline di distribuzione.
Nello strumento di controllo delle release, puoi visualizzare e confrontare i manifest visualizzati per gli implementazioni secondari.
Utilizzare il deployment parallelo con una strategia di deployment
Puoi eseguire il deployment in parallelo quando utilizzi una strategia di deployment canary. Per ulteriori informazioni, consulta Utilizzare il deployment parallelo con una strategia di deployment canary.
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.