Utilizzando Cloud Deploy, puoi eseguire il deployment in un target configurato per rappresentare più target e la tua applicazione viene sottoposta a deployment in questi target in parallelo (contemporaneamente). Il target che identifichi come fase della pipeline è chiamato multi-target e i target che comprende sono chiamati target figlio.
Puoi utilizzare il deployment parallelo con qualsiasi tipo di target 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 in ogni target in sequenza, perché non c'è una progressione (ad esempio, da sviluppo a gestione temporanea a produzione).
Questo deployment parallelo può far parte di una normale pipeline di distribuzione
progressione:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].
Risorse di Cloud Deploy utilizzate per il deployment parallelo
Il deployment parallelo utilizza le seguenti risorse specializzate di Cloud Deploy:
Multi-target
Un multi-target è un target configurato con la proprietà
multiTarget, a 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 multi-target come
multiTarget.targetIds.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 un'implementazione del controller, consulta la sezione Limitazioni.
-
Per ulteriori informazioni su cosa puoi e non puoi fare con un'implementazione figlio, consulta la sezione Limitazioni.
Configurare il deployment parallelo
La configurazione del deployment parallelo consiste nel definire un multi-target e il numero di target figlio di cui hai bisogno (fino al limite). Le definizioni dei target sono le stesse di tutti i target, ad eccezione delle seguenti:
- I multi-target includono la proprietà
multiTarget. - I target figlio non includono la proprietà
multiTarget, ma viene fatto riferimento al multi-target utilizzando la proprietàmultiTarget.targetIds. - Puoi configurare il multi-target per l'approvazione, ma non i target figlio, che non possono includere
requireApproval:true.
I multi-target e i target figlio possono includere configurazioni di ambienti di esecuzione personalizzati. Se un target figlio non specifica un ambiente di esecuzione, eredita quello definito nella definizione del multi-target o quello predefinito. Per ulteriori dettagli, consulta la sezione Ambienti di esecuzione e deployment parallelo.
Configurare il multi-target
Un multi-target è un singolo target identificato come fase della pipeline di distribuzione, ma che punta a uno o più target figlio.
La configurazione del multi-target include la proprietà multiTarget. Un multi-target non può avere le proprietà gke, run o anthosCluster.
La configurazione di un multi-target è la stessa indipendentemente dal runtime in cui esegui il deployment.
Nel file YAML della pipeline di distribuzione o in un file YAML separato, crea la definizione di base del target, inclusa 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 multi-target, che è utilizzato nella definizione della pipeline di distribuzione, proprietà
stages.targetId.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sono i nomi dei target figlio in cui viene eseguito il deployment di questo multi-target. Ogni nome corrisponde alla proprietà
namenella definizione del target figlio.
La presenza della proprietà multiTarget.targetIds rende questo target un multi-target.
Configurare i target figlio
Per ogni target identificato come figlio nella configurazione del multi-target, 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 del target:
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 figlio. Il nome corrisponde a un membro dell'elenco dei target nella proprietà
multiTarget.targetIdsnella definizione del 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 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 file YAML...
CHILD_TARGET1 è il nome di questo target figlio. Il nome corrisponde a un membro dell'elenco dei target nella proprietà
multiTarget.targetIdsnella definizione del 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 è che viene fatto riferimento alla proprietà multiTarget.targetIds nel multi-target.
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 file YAML...
CHILD_TARGET1 è il nome di questo target figlio. Il nome corrisponde a un membro dell'elenco dei target nella proprietà
multiTarget.targetIdsnella definizione del 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 file YAML...
CHILD_TARGET1 è il nome di questo target figlio. Il nome corrisponde a un membro dell'elenco dei target nella proprietà
multiTarget.targetIdsnella definizione del multi-target.CUSTOM_TARGET_TYPE_NAME è il nome del tipo di target personalizzato utilizzato da questo target.
Passare i parametri di deployment ai target
Puoi distinguere i target figlio includendo i parametri nel manifest e i valori nella definizione della pipeline di distribuzione. Questi valori possono essere applicati separatamente ai manifest separati, in base alla corrispondenza delle etichette sui target corrispondenti.
Ad esempio, potresti voler un numero diverso di repliche per ogni target figlio. Per farlo, devi includere i parametri e i valori nella pipeline di distribuzione progressione, insieme alle etichette sui target figlio da abbinare a ogni coppia parametro-valore.
Scopri di più sui parametri di deployment.
Crea la release
Con un multi-target e i target figlio 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 che quando raggiunge la fase con il multi-target, Cloud Deploy crea un'implementazione del controller per il multi-target e un'implementazione figlio per eseguire il deployment dell'applicazione in ogni target figlio.
I messaggi Pub/Sub in risposta alle operazioni di Cloud Deploy distinguono tra implementazioni del controller e implementazioni figlio.
Limitazioni
Un multi-target può avere al massimo 100 target figlio.
Tutti i target figlio di un singolo multi-target devono avere lo stesso runtime di destinazione (ad esempio, tutti GKE o tutti Cloud Run).
All'interno di una pipeline di distribuzione, un target figlio può avere un solo multi-target padre.
Un multi-target non può essere senza figli e non può fare riferimento a se stesso o a un altro multi-target come target figlio.
Non puoi utilizzare un target figlio più di una volta all'interno di una singola pipeline di distribuzione, ma puoi riutilizzarli in pipeline diverse.
Se i target figlio sono target personalizzati, devono fare riferimento allo stesso
CustomTargetType.I pool predefiniti hanno limiti di concorrenza, ma i pool privati no.
Quando esegui il deployment in un multi-target, tutti i deployment figlio vengono eseguiti contemporaneamente, fino al limite di concorrenza di Cloud Build. Se hai più target figlio di questo limite, i job di deployment per alcuni target non verranno eseguiti finché non saranno terminati gli altri, il che significa che in questo caso Cloud Deploy non esegue il deployment in tutti i target figlio contemporaneamente.
Inoltre, se i target includono job di verifica, è possibile che uno o più di questi job di verifica vengano avviati prima che l'applicazione sia stata sottoposta a deployment in tutti i target figlio.
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 simultanee che puoi eseguire.
Configura un pool privato e configura i target in modo che utilizzino questo pool.
Ambienti di esecuzione e deployment parallelo
Ogni target può essere configurato per utilizzare un ambiente di esecuzione non predefinito.
Se il multi-target ha un ambiente di esecuzione non predefinito, tutti i target figlio che utilizzano l'ambiente di esecuzione predefinito ereditano quello non predefinito dal multi-target.
Se il multi-target 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 figlio da un multi-target, in modo da non dover definire o modificare l'ambiente di esecuzione per ogni target figlio, consentendoti comunque di personalizzare l'ambiente di esecuzione per uno o più target figlio, se necessario.
Per ulteriori informazioni sugli ambienti di esecuzione in Cloud Deploy, consulta la sezione Utilizzare gli 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 nella sezione Eseguire il rollback di un target.
Approvazioni per il deployment parallelo
Come per tutti i target, puoi configurare il deployment parallelo in modo che richieda approvazioni. Con il deployment parallelo, tuttavia, puoi configurare l'approvazione solo sul multi-target. L'approvazione o il rifiuto influisce su tutti i target figlio contemporaneamente.
Visualizzare il deployment parallelo nella Google Cloud console
Puoi visualizzare i dettagli del multi-target, dei target figlio, dell'implementazione del controller e delle implementazioni figlio nella Google Cloud console.
Quando visualizzi l'elenco dei target per una determinata pipeline di distribuzione, nei dettagli della pipeline di distribuzione viene visualizzato il multi-target, ma non i target figlio. Tuttavia, quando visualizzi i dettagli della release, puoi vedere l'implementazione del controller e le implementazioni figlio. Puoi anche visualizzare le implementazioni del controller e figlio elencate nella scheda Implementazioni nella pagina dei dettagli della pipeline di distribuzione.
Nell'ispettore delle release, puoi visualizzare e confrontare i manifest sottoposti a rendering 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. Per ulteriori informazioni, consulta la sezione Utilizzare il deployment parallelo con una strategia di deployment canary.
Passaggi successivi
Prova la guida rapida: Eseguire il deployment di un'app in più target contemporaneamente.
Consulta lo schema di configurazione del target.
Leggi l'articolo Architettura del servizio Cloud Deploy.