Utilizzando Cloud Deploy, puoi eseguire il deployment in una destinazione configurata per rappresentare più destinazioni e la tua applicazione viene distribuita in queste destinazioni in parallelo (contemporaneamente). Il target che identifichi come fase della pipeline è chiamato target multiplo, mentre i target che lo compongono sono chiamati target figlio.
Puoi utilizzare il deployment parallelo con qualsiasi tipo di destinazione supportato da Cloud Deploy.
Perché il deployment parallelo
Puoi utilizzare il deployment parallelo, ad esempio, per eseguire il deployment della tua applicazione in più target di produzione. In questo caso, non devi eseguire il deployment su ogni destinazione in successione, perché non c'è progressione (ad esempio, da sviluppo a staging a 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 multi-target è una destinazione configurata con la proprietà
multiTarget, al livello superiore del file YAML di configurazione della destinazione e, anziché fare riferimento al cluster o al servizio di runtime, fa riferimento a una o più altre destinazioni, utilizzandomultiTarget.targetIds.Target figlio
Un target figlio è qualsiasi target a cui fa riferimento un target multiplo come
multiTarget.targetIds.Implementazioni del controller
Un'implementazione del controller è un'implementazione che corrisponde al target multiplo.
Per saperne di più su cosa puoi e non puoi fare con l'implementazione di un controller, consulta la sezione Limitazioni.
-
Per saperne di più su cosa puoi e non puoi fare con un'implementazione secondaria, 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 del target sono le stesse di tutti i target, ad eccezione di quanto segue:
- I multi-target includono la proprietà
multiTarget. - I target secondari non includono la proprietà
multiTarget, ma viene fatto riferimento al 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 personalizzate dell'ambiente di esecuzione. Se un target figlio non specifica un ambiente di esecuzione, eredita quello definito nella definizione del target multiplo o quello predefinito. Per saperne di più, consulta Ambienti di esecuzione e deployment parallelo.
Configura il multitarget
Un target multiplo è un singolo target identificato come fase della pipeline di distribuzione, ma che punta a uno o più target figlio.
La configurazione multimirato include la proprietà multiTarget. Un
multi-target non può avere le proprietà gke, run o anthosCluster.
La configurazione per un multi-target è la stessa indipendentemente dal runtime a cui esegui il deployment.
Nel file YAML della pipeline di distribuzione o in un file YAML separato, crea la definizione di base della destinazione, 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 questa destinazione multipla, che viene utilizzato nella definizione della pipeline di distribuzione, proprietà
stages.targetId.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sono i nomi dei target secondari a cui viene distribuito questo target multiplo. Ogni nome corrisponde alla proprietà
namenella 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 figlio nella configurazione di target multipli, configura un altro target come target figlio:
Nel file YAML della pipeline di distribuzione o in un file YAML separato, crea la definizione di base della destinazione:
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 dell'elenco dei target nella proprietà
multiTarget.targetIdsdella 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 YAML...
CHILD_TARGET1 è il nome di questo target secondario. Il nome corrisponde a un membro dell'elenco dei target nella proprietà
multiTarget.targetIdsdella definizione multi-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 è il fatto che viene fatto riferimento
alla proprietà multiTarget.targetIds nel target multiplo.
Cluster collegati a GKE
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. Il nome corrisponde a un membro dell'elenco dei target nella proprietà
multiTarget.targetIdsdella definizione multi-target.MEMBERSHIP_NAME è il nome che hai scelto quando hai registrato il cluster in un parco risorse.
Target personalizzato
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: CHILD_TARGET1
description: TARGET_DESCRIPTION
customTarget:
customTargetType: CUSTOM_TARGET_TYPE_NAME
In questo YAML...
CHILD_TARGET1 è il nome di questo target secondario. Il nome corrisponde a un membro dell'elenco dei target nella proprietà
multiTarget.targetIdsdella definizione multi-target.CUSTOM_TARGET_TYPE_NAME è il nome del tipo di target personalizzato utilizzato da questo target.
Trasferire i parametri di deployment alle destinazioni
Puoi distinguere i target secondari includendo parametri nel manifest e valori nella definizione della pipeline di distribuzione. 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. Per farlo, devi includere i parametri e i valori nella progressione della pipeline di pubblicazione, insieme alle etichette dei target secondari da abbinare a ogni coppia parametro-valore.
Scopri di più sui parametri di deployment.
Crea la release
Con un target multiplo e i target secondari configurati, crea la pipeline di distribuzione e le risorse di destinazione, 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 che quando arriva alla fase con il multi-target, Cloud Deploy crea un rollout del controller per il multi-target e un rollout secondario per eseguire il deployment dell'applicazione in ogni target secondario.
I messaggi Pub/Sub in risposta alle operazioni di Cloud Deploy distinguono tra i rollout del controller e i rollout secondari.
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 Cloud Run).
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 figlio più di una volta all'interno di una singola pipeline di distribuzione, ma puoi riutilizzarlo in pipeline diverse.
Se i target secondari sono target personalizzati, devono fare tutti riferimento allo stesso
CustomTargetType.I pool predefiniti hanno limiti di concorrenza, ma i pool privati no.
Quando esegui il deployment in un target multiplo, tutti i rollout secondari vengono eseguiti contemporaneamente, fino al limite di concorrenza di Cloud Build. Se hai più target secondari di questo limite, i job di deployment per alcuni target non verranno eseguiti finché gli altri non saranno completati, il che significa che Cloud Deploy non esegue il deployment su tutti i target secondari contemporaneamente, in questo caso.
Inoltre, se i target includono job di verifica, è possibile che uno o più di questi job di verifica inizino prima che l'applicazione sia stata implementata in tutti i target secondari.
Se devi eseguire il deployment contemporaneamente su più target rispetto al limite specificato nella documentazione di Cloud Build, hai due opzioni:
Richiedi un aumento del numero di build simultanee che puoi eseguire.
Configura un pool privato e configura le destinazioni in modo che utilizzino quel pool.
Ambienti di esecuzione e deployment parallelo
Ogni destinazione può essere configurata per utilizzare un ambiente di esecuzione non predefinito.
Se il target multiplo ha un ambiente di esecuzione non predefinito, tutti i target secondari 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 quello non predefinito.
Queste regole semplificano la propagazione degli ambienti di esecuzione ai target secondari da un target multiplo, in modo da non dover definire o modificare l'ambiente di esecuzione per ogni target secondario, consentendoti comunque 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 Utilizzo degli ambienti di esecuzione di Cloud Deploy.
Eseguire il rollback di un deployment parallelo
Se devi eseguire il rollback di un deployment da più target paralleli, esegui il rollback del multi-target, come descritto in Eseguire il rollback di un target.
Approvazioni per il deployment parallelo
Come per qualsiasi target, puoi configurare l'implementazione parallela in modo che richieda approvazioni. Con il deployment parallelo, tuttavia, puoi configurare l'approvazione solo sulla destinazione multipla. L'approvazione o il rifiuto influiscono su tutti i target secondari insieme.
Visualizzare il deployment parallelo nella console Google Cloud
Puoi visualizzare i dettagli dei target secondari, del rollout del controller e dei rollout secondari in Google Cloud console.
Quando visualizzi l'elenco dei target per una determinata pipeline di distribuzione, nei dettagli della pipeline di distribuzione viene visualizzato il target multiplo, ma non i target secondari. Quando visualizzi i dettagli della release, tuttavia, puoi vedere l'implementazione del controller e le implementazioni secondarie. Puoi anche visualizzare le implementazioni del controller e dei progetti 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 sottoposti a rendering per i rollout secondari.
Utilizzare il deployment parallelo con una strategia di deployment
Puoi eseguire il deployment in parallelo quando utilizzi una strategia di deployment canary. Per saperne di più, 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 della destinazione.
Leggi l'articolo Architettura del servizio Cloud Deploy.