Esegui il deployment in più destinazioni contemporaneamente

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 utilizzando multiTarget.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.

  • Implementazioni secondarie

    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...

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:

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