Utilizzando Google Cloud Deploy, puoi eseguire il deployment in una destinazione configurata per rappresentare più destinazioni e viene eseguito il deployment della tua applicazione in queste destinazioni in parallelo (contemporaneamente). Il target identificato come fase nella pipeline è chiamato multitarget, mentre i target che compongono il multi-target vengono chiamati target secondari.
Puoi utilizzare il deployment parallelo con qualsiasi tipo di destinazione supportato da Google Cloud Deploy, tra cui Google Kubernetes Engine, Cloud Run e Anthos.
Perché il deployment parallelo
Puoi utilizzare il deployment parallelo, ad esempio, per eseguire il deployment dell'applicazione in più target di produzione. In questo caso, non è necessario eseguire il deployment in sequenza per ogni destinazione, perché non c'è alcuna progressione (ad esempio, dallo sviluppo alla gestione temporanea alla produzione).
E questo deployment parallelo può far parte della normale avanzamento di una pipeline di distribuzione:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...]
.
Risorse Google Cloud Deploy utilizzate per il deployment parallelo
Il deployment parallelo utilizza le seguenti risorse specializzate di Google Cloud Deploy:
più target
Un target multiplo è un target configurato con la proprietà
multiTarget
al livello più alto della configurazione YAML del target e, anziché fare riferimento al cluster o al servizio di runtime, fa riferimento a una o più altre destinazioni usandomultiTarget.targetIds
.Target figlio
Un target secondario è qualsiasi target a cui si fa riferimento in un target multiplo come
multiTarget.targetIds
. L'elemento secondario deve anche fare riferimento a un tipo di destinazione supportato (Google Kubernetes Engine, Anthos o Cloud Run).Implementazioni del controller
L'implementazione di un controller è un'implementazione che corrisponde al target multiplo.
Per ulteriori informazioni su ciò che puoi e non puoi fare con l'implementazione di un controller, consulta la pagina Limitazioni.
Implementazioni secondarie
Per ulteriori informazioni su ciò che puoi e non puoi fare con un'implementazione secondaria, consulta l'articolo Limitazioni.
Configura deployment parallelo
La configurazione del deployment parallelo consiste nel definire un target multiplo e il numero di target secondari di cui hai bisogno (fino al limite). Le definizioni di target 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 vi viene fatto riferimento dal multi-target utilizzando la proprietàmultiTarget.targetIds
. - Puoi configurare il target multiplo per l'approvazione, ma non i target secondari, che non possono includere
requireApproval:true
.
Più target e target secondari possono includere configurazioni di ambiente di esecuzione personalizzate. Se un target secondario non specifica un ambiente di esecuzione, eredita quello definito nella definizione multi-target o l'impostazione predefinita. Per ulteriori dettagli, consulta Ambienti di esecuzione e deployment parallelo.
Configura il targeting multiplo
Un target multiplo è un singolo target identificato come fase nella pipeline di pubblicazione, ma rimanda a uno o più target secondari.
La configurazione multi-target include la proprietà multiTarget
. Un
target multiplo non può avere le proprietà gke
, run
o anthosCluster
.
La configurazione di un multi-target è la stessa indipendentemente dal runtime di cui stai eseguendo il deployment.
Nella tua pipeline di distribuzione YAML o in un file YAML separato, crea la definizione di base di base, che include 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, utilizzato nella proprietà della definizione della pipeline di pubblicazione,
stages.targetId
.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sono i nomi dei target secondari in cui viene eseguito il deployment di questo target multi-target. Ogni nome corrisponde alla proprietà
name
nella definizione del target secondario.
La presenza della proprietà multiTarget.targetIds
rende questo target come multi-target.
Configura le destinazioni secondarie
Per ogni target identificato come target secondario nella configurazione con più target, configura un altro target come target secondario:
Nella mediazione della pipeline di distribuzione o in un file YAML separato, 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 delle destinazioni nella proprietà
multiTarget.targetIds
nella definizione di più target.Il valore della proprietà
gke.cluster
è il nome della risorsa al quale fa riferimento questo cluster, tra cui l'ID del progetto, la regione e il nome del cluster.
Questo target è configurato come un target GKE standard.
L'unica cosa che lo rende un target secondario è che vi viene fatto riferimento nella proprietà multiTarget.targetIds
nel multi-target.
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 nell'elenco delle destinazioni 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 questa destinazione, inclusi l'ID progetto e la regione.
Questa destinazione è configurata come un target standard di Cloud Run. L'unica cosa che lo rende un target secondario è che vi viene fatto riferimento
nella proprietà multiTarget.targetIds
nel target multiplo.
Anthos
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 nell'elenco delle destinazioni nella proprietà
multiTarget.targetIds
nella definizione di più target.MEMBERSHIP_NAME è il nome che hai scelto durante la registrazione del cluster utente Anthos a un parco risorse.
Questa destinazione è configurata come un target di Anthos standard. L'unica cosa che lo rende un target secondario è che vi viene fatto riferimento
nella proprietà multiTarget.targetIds
nel target multiplo.
Crea la release
Dopo aver configurato target multipli e secondari, 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 destinazione Google Cloud Deploy, tranne per il fatto che, quando arriva alla fase con il multi-target, Google Cloud Deploy crea un'implementazione del controller per il multi-target e un'implementazione secondaria per eseguire il deployment dell'applicazione in ogni destinazione secondaria.
Messaggi Pub/Sub in risposta a operazioni Google Cloud Deploy distinguendo tra le implementazioni del controller e quelle secondarie.
Limitazioni
Un target multiplo non può avere più di 50 target secondari.
All'interno di una pipeline di distribuzione, una destinazione secondaria può avere un solo elemento multi-target principale.
Un target multiplo non può essere secondario e non può fare riferimento a se stesso o a un altro target multiplo come target secondari.
Non puoi utilizzare un target secondario più di una volta in una singola pipeline di distribuzione, ma puoi riutilizzarlo in una pipeline diversa.
I pool predefiniti hanno limiti di contemporaneità, a differenza dei pool privati.
Quando esegui il deployment in un target multiplo, tutte le implementazioni figlio vengono implementate contemporaneamente, fino al limite di contemporaneità di Cloud Build. Se hai più target secondari rispetto a quel limite, i job di deployment per alcuni target non vengono eseguiti fino a quando altri non vengono completati, il che significa che Google Cloud Deploy non esegue il deployment su tutti i target secondari contemporaneamente, in questo caso.
Inoltre, se i target includono i job di verifica, è possibile che uno o più di questi job vengano avviati prima del deployment dell'applicazione in tutti i target secondari.
Se devi essere in grado di eseguire il deployment contemporaneamente in più target rispetto al limite specificato nella documentazione di Cloud Build, hai due opzioni:
Richiedi un aumento del numero di build contemporanee che puoi eseguire.
Imposta un pool privato e configura i target per utilizzare il pool.
Ambienti di esecuzione e deployment parallelo
Ogni destinazione può essere configurata in modo da utilizzare un ambiente di esecuzione non predefinito.
Se l'ambiente di esecuzione multi-target non è predefinito, tutti i target secondari che utilizzano l'ambiente di esecuzione predefinito ereditano l'ambiente non predefinito dal target
Se il target multiplo utilizza l'ambiente di esecuzione predefinito, qualsiasi target secondario configurato con un ambiente di esecuzione non predefinito utilizza tale ambiente non predefinito.
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, consentendoti comunque di personalizzare l'ambiente di esecuzione per uno o più target secondari se necessario.
Per ulteriori informazioni sugli ambienti di esecuzione in Google Cloud Deploy, consulta Utilizzo degli ambienti di esecuzione di Google Cloud Deploy.
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 con qualsiasi destinazione, puoi configurare il deployment parallelo per richiedere approvazioni. Con il deployment parallelo, tuttavia, puoi configurare l'approvazione solo per il multi-target. L'approvazione o il rifiuto interessa tutti i target secondari insieme.
Visualizzazione del deployment parallelo nella console Google Cloud
Puoi visualizzare i dettagli dei target secondari, target multipli, dell'implementazione del controller e dei deployment secondari nella console Google Cloud.
Quando visualizzi l'elenco dei target per una determinata pipeline di distribuzione, nel dettaglio della pipeline di pubblicazione vengono elencati i target multipli, ma non i target secondari. Quando visualizzi i dettagli della release, tuttavia, puoi vedere l'implementazione del controller e quella secondaria. Puoi anche visualizzare le implementazioni controller e secondarie elencate nella scheda Implementazioni nella pagina dei dettagli della pipeline di distribuzione.
Nel strumento di controllo delle release puoi visualizzare e distribuire i manifest visualizzati per le implementazioni secondarie.
Passaggi successivi
Prova la guida rapida: eseguire il deployment di un'app in più destinazioni contemporaneamente.
Consulta l'articolo Architettura del servizio Google Cloud Deploy.