Esegui il deployment su più destinazioni contemporaneamente

Con Cloud Deploy, puoi eseguire il deployment in una destinazione configurata rappresentano più target e viene eseguito il deployment dell'applicazione in queste destinazioni parallelo (contemporaneamente). Il target che identifichi come fase nella pipeline è chiamata multi-target e i target che include più target sono chiamati target secondari.

Puoi usare il deployment parallelo con qualsiasi tipo di destinazione Cloud Deploy supporta, tra cui Google Kubernetes Engine, Cloud Run e GKE Enterprise.

Perché eseguire il deployment parallelo

Puoi usare il deployment parallelo, ad esempio per eseguire il deployment dell'applicazione più target di produzione. In questo caso, non è necessario eseguire il deployment i target in successione, perché non c'è avanzamento (ad esempio, da dev a dalla gestione temporanea alla produzione).

Questo deployment parallelo può far parte di una normale pipeline di distribuzione progressione:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].

Risorse Cloud Deploy utilizzate per il deployment parallelo

Il deployment parallelo utilizza le seguenti risorse specializzate in Cloud Deploy di risorse:

  • più target

    Un target multiplo è un target configurato con la proprietà multiTarget. al livello superiore del file YAML della configurazione di destinazione, anziché fare riferimento per il cluster di runtime o per il servizio, fa riferimento a una o più altre destinazioni, utilizzando multiTarget.targetIds.

  • Target figlio

    Per target secondario si intende qualsiasi target a cui fa riferimento un target multiplo come multiTarget.targetIds. L'asset secondario deve inoltre fare riferimento a un tipo di destinazione supportato (Google Kubernetes Engine, GKE Enterprise o Cloud Run.

  • Implementazioni del controller

    L'implementazione del controller è un'implementazione che corrisponde a un target multiplo.

    Consulta la sezione Limitazioni per ulteriori informazioni su cosa puoi o non puoi fare con l'implementazione di un controller.

  • Implementazioni secondarie

    Consulta la sezione Limitazioni per ulteriori informazioni sulle azioni che puoi o meno eseguire con un'implementazione figlio.

Configura un deployment parallelo

La configurazione di un deployment parallelo consiste nella definizione di un target multiplo e numero di target secondari necessari (fino al limite). Destinazione Le definizioni sono uguali a quelle di 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 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 secondari possono includere ambiente di esecuzione configurazioni. Se un target figlio non specifica un ambiente di esecuzione, eredita quella definita nella definizione di target multipli o quella predefinita. Consulta Ambienti di esecuzione e deployment parallelo per ulteriori dettagli.

Configura il target multiplo

Un target multiplo è un singolo target identificato come fase della pubblicazione pipeline, ma punta a una o più destinazioni figlio.

La configurazione di più target include la proprietà multiTarget. R il target multiplo non può avere le proprietà gke, run o anthosCluster. La configurazione per un target multiplo è la stessa indipendentemente dal runtime in cui eseguire il deployment.

Nel file YAML della pipeline di distribuzione o in un file YAML separato, crea la definizione di destinazione di base, 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 questo target multiplo, utilizzata nella definizione della pipeline di distribuzione, stages.targetId proprietà.

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn sono i nomi dell'elemento figlio per il deployment di questo multi-target. Ogni nome corrisponde alla proprietà name nella definizione del target secondario.

La presenza della proprietà multiTarget.targetIds rende questo target un multi-target.

Configurare i target figlio

Per ogni target identificato come bambino nei tuoi configurazione multi-target, configura un altro target come target secondario:

Nella pipeline di distribuzione YAML o in un YAML, 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. La corrisponde a un membro nell'elenco dei target della multiTarget.targetIds nella definizione di target multipli.

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

Questa destinazione è configurata come una destinazione GKE standard. L'unico aspetto che lo rende un target secondario è che viene fatto riferimento 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. La corrisponde a un membro nell'elenco dei target della multiTarget.targetIds nella definizione di target multipli.

  • Il valore della proprietà run.location è il nome della risorsa Servizio Cloud Run a cui fa riferimento questo target, tra cui tra l'ID progetto e la regione.

Questa destinazione è configurata come un Cloud Run standard target. L'unico aspetto che rende questo target secondario è 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 YAML...

Questa destinazione è configurata come GKE Enterprise standard target. L'unico aspetto che rende questo target secondario è che viene fatto riferimento dalla proprietà multiTarget.targetIds nel target multiplo.

Passa i parametri di deployment ai target

Puoi differenziare i target secondari includendo i parametri nel tuo e i valori nella definizione della pipeline di distribuzione. Questi valori possono essere applicate separatamente al in manifest separati, in base alla corrispondenza delle etichette nei target corrispondenti.

Ad esempio, potresti volere un numero diverso di repliche per ogni target. Per farlo, devi includere i parametri e i valori nel modulo di pubblicazione progression della pipeline, insieme a sulle etichette sui target secondari in modo che corrispondano a ogni coppia parametro-valore.

Scopri di più sui parametri di deployment.

Crea la release

Con target multipli e secondari configurati, creare la pipeline di distribuzione e le risorse di destinazione, e quindi creare una release, come di consueto.

Il ciclo di vita della pipeline di distribuzione è lo stesso di qualsiasi Pipeline e target di Cloud Deploy, ma quando si arriva fase multi-target, Cloud Deploy crea un controller per il target multiplo e un'implementazione figlio per eseguire il deployment dell'applicazione per ciascun target secondario.

Messaggi Pub/Sub in risposta alle operazioni di Cloud Deploy le implementazioni del controller e le implementazioni figlio.

Limitazioni

  • Un target multiplo non può avere più di 50 target secondari.

  • Tutti i target figlio di un singolo target multiplo devono avere lo stesso runtime di destinazione (ad esempio tutti i GKE o tutti GKE Enterprise).

  • All'interno di una pipeline di distribuzione, un target secondario può avere un solo elemento padre multi-target.

  • Un target multiplo non può essere senza figlio e non può fare riferimento a se stesso o a un altro come target secondari.

  • Non puoi utilizzare un target figlio più di una volta in una singola pipeline di distribuzione, ma puoi riutilizzarli in altre pipeline.

  • I pool predefiniti hanno limiti di contemporaneità, contrariamente ai pool privati.

    Quando esegui il deployment su più target, il deployment di tutte le implementazioni secondarie viene eseguito con fino al limite di contemporaneità di Cloud Build. Se hai più target secondari limitato, i job di deployment per alcune destinazioni non verranno eseguiti fino al termine di altre, significa che Cloud Deploy non esegue il deployment in tutte le destinazioni figlio nello stesso momento, in questo caso.

    Inoltre, se i target includono la funzionalità Verifica offerte di lavoro, è possibile che uno o più job di verifica vengano avviati prima del deployment dell'applicazione in tutte le destinazioni secondarie.

    Se devi poter eseguire il deployment contemporaneamente a più destinazioni rispetto al limite specificato nella documentazione di Cloud Build, hai due opzioni:

Ambienti di esecuzione e deployment parallelo

Ogni destinazione può essere configurata in modo da utilizzare un ambiente di esecuzione non predefinito.

  • Se il target multiplo ha un ambiente di esecuzione non predefinito, tutti i target figlio utilizzando l'ambiente di esecuzione predefinito, eredita quello non predefinito più target

  • Se il target multiplo utilizza l'ambiente di esecuzione predefinito, qualsiasi target secondario configurato con un ambiente di esecuzione non predefinito utilizza quella non predefinito.

Queste regole semplificano la propagazione degli ambienti di esecuzione alle destinazioni figlio da un target multiplo, senza dover definire o modificare per ogni target secondario, consentendoti comunque di personalizzare ambiente di esecuzione per una o più destinazioni figlio, se necessario.

Consulta Utilizzo degli ambienti di esecuzione di Google Cloud Deploy per ulteriori informazioni sugli ambienti di esecuzione in Cloud Deploy.

Esegui il rollback di un deployment parallelo

Se devi eseguire il rollback di un deployment da più destinazioni parallele, Esegui il rollback del target multiplo, come descritto in Esegui il rollback di una destinazione.

Approvazioni per il deployment parallelo

Come per qualsiasi destinazione, puoi configurare il deployment parallelo per richiedere approvazioni. Con il deployment parallelo, tuttavia, puoi configurare l'approvazione solo multi-target. L'approvazione o il rifiuto influisce su tutti i target secondari insieme.

Visualizza il deployment parallelo nella console Google Cloud

Puoi visualizzare i dettagli dei target secondari, multi-target, e le implementazioni secondarie nella console Google Cloud.

Quando visualizzi l'elenco dei target per una determinata pipeline di distribuzione, nella sezione Dettagli pipeline, viene elencato il target multiplo, ma non i target figlio. Tuttavia, quando visualizzi i dettagli della release, puoi vedere l'implementazione del controller e il deployment secondario. Puoi anche vedere le implementazioni dei controller e dei file secondari elencate nella Scheda Implementazioni nella pagina dei dettagli della pipeline di distribuzione.

Nella funzione di controllo delle release, puoi visualizzare e confrontare visualizzati per le implementazioni figlio.

Usa il deployment parallelo con una strategia di deployment

Puoi eseguire il deployment in parallelo quando utilizzi una strategia di deployment canary. Consulta Usa il deployment parallelo con una strategia di deployment canary per ulteriori informazioni.

Passaggi successivi