Un'implementazione di Cloud Deploy include fasi. Una fase è una fase logica e ordinata raggruppamento di job da eseguire in un'implementazione.
Ogni fase include job, ovvero le azioni da intraprendere in ogni fase (ad esempio deploy
o verify
). Ogni job può avere zero o più esecuzioni.
L'esecuzione di un job è l'istanza di un job. Se il job non è stato eseguito, non sono presenti esecuzioni del job.
Questo documento descrive le fasi, i job e le esecuzioni dei job e come gestirli.
Struttura di un'implementazione
Un'implementazione è una risorsa Cloud Deploy che associa una release a un target.
Fasi
Un'implementazione consiste in una o più fasi.
Per una strategia di deployment standard, esiste una sola fase: stable
.
Per una strategia di implementazione canary, esiste una fase distinta per ogni percentuale configurata. Ad esempio, se una versione canary che esegue il deployment del 25%, del 50% e del 100%, saranno fasi:
canary-25
canary-50
stable
Questi nomi di fase sono standard: canary-[PERCENTAGE]
per le fasi Canary e
stable
per la fase del 100%. Tuttavia, se configuri
manual o
canary personalizzato, puoi
controllano i nomi delle fasi.
Job ed esecuzioni di job
Ogni fase di implementazione include uno o più job.
Per un'implementazione in un deployment standard
strategia, senza verifica del deployment abilitata, c'è una fase
(stable
).
Per un'implementazione canary, ci sarà una fase per ogni parte
(ad esempio, canary-25
, canary-50
, stable
) e per ogni fase c'è una
Job deploy
. Se la verifica è attivata, è presente anche un job verify
per ogni fase.
Un'esecuzione di un job è un'istanza di un job. Ad esempio, l'esecuzione di un job deploy
è
e, se ha esito positivo, non verranno eseguiti ulteriori job per quel job. Se non riesce, puoi riprovare con un'altra esecuzione del job.
Saltare le fasi la prima volta
Alcune strategie di deployment (ad esempio canary) suddividono il traffico tra la vecchia e la nuova versione. Se esegui il deployment in un target per la prima volta, non esiste una versione precedente, pertanto non possiamo suddividere il traffico.
Per questo motivo, quando esegui il deployment di una versione canary per la prima volta,
ed eseguire la fase stable
. Dopodiché, l'applicazione viene eseguita e i deployment canary futuri includeranno le fasi canary.
In una situazione reale, in genere esegui un deployment canary in cui la tua applicazione è già in esecuzione, pertanto l'omissione di questa fase sarà rara.
Stati all'interno di un'implementazione
Implementazioni, fasi, job ed esecuzioni job hanno tutti stati. Questa sezione descrive gli stati per ciascuno.
Stati di implementazione
Un'implementazione avrà uno dei seguenti stati:
APPROVAL_REJECTED
L'implementazione richiedeva l'approvazione, ma l'approvazione è stata rifiutata.
CANCELLED
Lo stato finale degli implementamenti annullati da un utente.
CANCELLING
Un utente ha annullato l'implementazione, ma l'annullamento non è stato completato.
HALTED
In un deployment parallelo, se uno o più account secondari le implementazioni non riescono, ma almeno un'implementazione figlio va a buon fine, implementazione di controller viene HALTED se ci sono più fasi dopo quella attuale.
Puoi riprendere l'implementazione di un controller interrotta effettuando una delle seguenti operazioni:
Annulla l'implementazione del controller
Riprova o ignora gli eventuali job non riusciti nelle implementazioni figlio
IN_PROGRESS
È in corso l'elaborazione di un'esecuzione di job.
FAILED
Un job non è riuscito e l'utente non ha scelto di ignorare l'errore.
PENDING
L'elaborazione dell'implementazione non è iniziata. Questo stato viene trasferito a
IN_PROGRESS
oCANCELED
.PENDING_APPROVAL
L'implementazione richiede l'approvazione, ma non è ancora stato approvato.
PENDING_RELEASE
L'implementazione è in attesa del relativo della release.
SUCCEEDED
L'implementazione è terminata, senza errori.
Stati della fase
Una fase avrà uno dei seguenti stati:
PENDING
La fase è in attesa del completamento di un'altra fase dell'implementazione.
IN_PROGRESS
La fase è iniziata.
SUCCEEDED
Fase completata correttamente.
FAILED
Un job nella fase non è riuscito e l'utente non ha scelto di farlo ignorare l'errore.
ABORTED
Una fase precedente non è riuscita.
SKIPPED
Quando esegui una strategia di deployment, ad esempio un deployment canary, Cloud Deploy passa alla fase
stable
nei casi in cui non sia ancora in esecuzione una versione dell'applicazione con cui suddividere il traffico. In questo caso, lo stato è impostato suSKIPPED
.
Stati job
Un job avrà uno dei seguenti stati:
ABORTED
Se una fase non funziona, quelle successive vengono interrotte.
Se un job non riesce e questo errore non viene ignorato, le successive di job vengono interrotti. Ad esempio, se una fase include un job di deployment e un e il job di deployment non riesce, il job di verifica viene interrotto.
DISABLED
Alcuni job in una fase potrebbero essere disabilitati. Ad esempio, le fasi includono sempre i job di verifica, indipendentemente dal fatto che la verifica sia attivata o meno. Se la verifica non è attivata, il job di verifica è impostato su
DISABLED
.FAILED
L'esecuzione di un job per questo job non è riuscita e l'utente non ha scelto di farlo ignorare l'errore.
L'utente ha scelto di interrompere l'esecuzione del job per questo job.
IGNORED
L'esecuzione di un job per questo job non è riuscita e l'utente ha scelto di ignorare l'errore.
IN_PROGRESS
Al momento è in esecuzione un job per questo job.
PENDING
L'esecuzione del job per questo job è in attesa di iniziare perché un'altra fase o un job non è terminato.
SKIPPED
Quando esegui una strategia di deployment, ad esempio canary, Cloud Deploy passa alla fase
stable
nei casi in cui non sia ancora in esecuzione una versione dell'applicazione con cui suddividere il traffico. In questo caso, lo stato viene impostato suSKIPPED
per i job all'interno della fase o delle fasi saltate.SUCCEEDED
L'esecuzione del job è terminata correttamente e il job successivo della fase è iniziato, o la fase successiva è iniziata o è pronta per iniziare (eventualmente in attesa di input dell'utente) oppure l'implementazione è terminata.
Stati di esecuzione job
FAILED
L'esecuzione del job non è riuscita.
IN_PROGRESS
L'esecuzione del job è iniziata, ma non è ancora terminata.
TERMINATED
L'utente ha terminato l'esecuzione del job.
TERMINATING
L'utente ha terminato l'esecuzione del job, ma questo non è stato completato in fase di terminazione.
SUCCEEDED
Quando l'esecuzione di un job viene completata correttamente, senza errori o terminati utente, viene inserito in uno stato
SUCCEEDED
, che
Gestisci l'implementazione
Utilizzando la console Google Cloud o il Google Cloud SDK, puoi eseguire quanto segue con un'implementazione di Cloud Deploy:
Se utilizzi il deployment parallelo con una strategia di deployment canary, consulta questo documento.
Avanzare con un'implementazione
Per le destinazioni configurate per l'uso di una strategia di deployment diversa da "Standard", tu far avanzare l'implementazione da una fase all'altra.
Ad esempio, se hai un target configurato per eseguire un semplice deployment canary con solo le fasi 50% e stable
(100%), devi avanzare l'implementazione una volta, dalla fase canary-50
alla fase stable
(100%).
gcloud
gcloud deploy rollouts advance ROLLOUT_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION
Dove:
ROLLOUT_NAME
è il nome dell'implementazione attuale
che stai percorrendo alla fase successiva.
RELEASE_NAME
è il nome della release di cui fa parte questo rollout.
PIPELINE_NAME
è il nome della pipeline di distribuzione
che stai utilizzando per gestire il deployment di questa release.
REGION
è il nome della regione in cui è stata creata la release, ad esempio us-central1
. Campo obbligatorio.
Per ulteriori informazioni sul comando gcloud deploy rollouts advance
, consulta la documentazione di riferimento di Google Cloud SDK.
Console
Fai clic sulla pipeline visualizzata nell'elenco delle pipeline di distribuzione.
La pagina Dettagli pipeline di distribuzione mostra una rappresentazione grafica l'avanzamento della pipeline di distribuzione.
Nella scheda Implementazioni, fai clic sul nome dell'implementazione in Dettagli della pipeline di importazione.
Viene visualizzata la pagina dei dettagli dell'implementazione.
In questo esempio, l'implementazione ha una fase
canary-50
e unastable
fase. L'implementazione può avere più fasi o diverse diverse.Fai clic su Avanza implementazione.
L'implementazione passa alla fase successiva.
Annullare un'implementazione
Puoi annullare qualsiasi implementazione non ancora terminata. Puoi anche annullare una richiesta un'implementazione per impedire ulteriori azioni (come ignorare o riprovare). Il lancio deve trovarsi in uno dei seguenti stati:
FAILED
HALTED
IN_PROGRESS
PENDING
PENDING_APPROVAL
PENDING_RELEASE
Dopo l'annullamento di un'implementazione, l'implementazione rimane nello stato CANCELLING
fino a quando
le esecuzioni del job in sospeso sono state completate. Puoi chiudere
delle esecuzioni di job in sospeso che non vuoi attendere. Una volta completata la fase di implementazione,CANCELLED
non è più possibile avanzare o modificare la campagna.
Per annullare un'implementazione:
gcloud
gcloud deploy rollouts cancel ROLLOUT_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION
Dove:
ROLLOUT_NAME
è il nome dell'implementazione attuale
che stai percorrendo alla fase successiva.
RELEASE_NAME
è il nome della release di cui fa parte questo rollout.
PIPELINE_NAME
è il nome della pipeline di distribuzione
che stai utilizzando per gestire il deployment di questa release.
REGION
è il nome della regione in cui
è stata creata, ad esempio us-central1
. Campo obbligatorio.
Per ulteriori informazioni sul comando gcloud deploy rollouts cancel
, consulta la documentazione di riferimento di Google Cloud SDK.
Console
Fai clic sulla pipeline indicata nell'elenco delle pipeline di importazione.
La pagina Dettagli pipeline di distribuzione mostra una rappresentazione grafica l'avanzamento della pipeline di distribuzione.
Nella scheda Implementazioni, fai clic sul nome dell'implementazione in Dettagli della pipeline di importazione.
Viene visualizzata la pagina dei dettagli dell'implementazione.
In questo esempio, l'implementazione ha una fase
canary-50
e unastable
fase. L'implementazione potrebbe prevedere più fasi o fasi diverse.Fai clic su Annulla implementazione.
L'implementazione è stata annullata.
Terminare l'esecuzione di un job
Puoi terminare l'esecuzione di un job attualmente in corso. Ad esempio, potresti voler eseguire questa operazione se l'esecuzione di un job sembra richiedere troppo tempo o non funziona come previsto. L'esecuzione del job deve essere IN_PROGRESS
per poterla interrompere.
gcloud
gcloud deploy job-runs terminate JOB_RUN_ID \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--rollout=ROLLOUT_NAME \
--region=REGION
Dove:
JOB_RUN_ID
è l'UUID dell'esecuzione del job che vuoi interrompere. Puoi trovare l'ID esecuzione del job nella console Google Cloud, ad esempio
Cloud Deploy, nella pagina di lancio:
Puoi anche ottenere l'ID delle esecuzioni del job utilizzando il comando gcloud deploy rollouts
describe
.
RELEASE_NAME
è il nome della release di cui fa parte questa esecuzione del job.
PIPELINE_NAME
è il nome della pipeline di distribuzione
che stai utilizzando per gestire il deployment di questa release.
ROLLOUT_NAME
è il nome dell'implementazione di cui fa parte questo job.
REGION
è il nome della regione in cui è stata creata la release, ad esempio us-central1
. Campo obbligatorio.
Per ulteriori informazioni sul comando gcloud deploy job-runs terminate
, consulta la documentazione di riferimento di Google Cloud SDK.
Console
Fai clic sulla pipeline visualizzata nell'elenco delle pipeline di distribuzione.
La pagina Dettagli pipeline di distribuzione mostra una rappresentazione grafica dell'avanzamento della pipeline di distribuzione.
Nella scheda Implementazioni, nella sezione Dettagli pipeline di distribuzione, fai clic su il nome della tua implementazione.
Viene visualizzata la pagina dei dettagli dell'implementazione.
Tieni presente che in questo esempio l'implementazione prevede una fase
canary-50
e una fasestable
. L'implementazione può avere più fasi o diverse diverse.In Fasi, fai clic sulla fase che include il job il cui job viene eseguito. il tuo account è in fase di chiusura.
In Esecuzioni job, seleziona l'esecuzione del job specifica che stai terminando, quindi fai clic su Termina.
L'esecuzione del job è terminata e lo stato del job, come mostrato nella tabella Fasi, è
Failure
.
Dopo aver terminato l'esecuzione di un job, questo viene considerato non riuscito ed è possibile eseguire qualsiasi dei seguenti:
- Lascia così com'è e ignora l'implementazione non riuscita.
- Riprova a eseguire il job
- Ignora il job e continua con il job o la fase successiva del implementazione
Ignorare un job
Puoi ignorare un job non riuscito e passare immediatamente al job successivo nella fase. Il job potrebbe non essere riuscito per qualsiasi motivo, ad esempio perché tu o qualcun altro avete terminato un'esecuzione del job.
Un job non riuscito indica una fase non riuscita e un'implementazione non riuscita. Tuttavia, se ignori
l'errore, sia la fase sia l'implementazione possono essere avanzate e possono finalmente
avere stati SUCCEEDED
.
gcloud
gcloud deploy rollouts ignore-job ROLLOUT_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--job-id=JOB_ID \
--phase-id=PHASE_ID \
--region=REGION
Dove:
ROLLOUT_NAME
è il nome dell'implementazione di cui fa parte questo job.
RELEASE_NAME
è il nome della release corrente che include questo job.
PIPELINE_NAME
è il nome della pipeline di distribuzione
che utilizzi per gestire il deployment di questa release.
JOB_ID
è il nome del job da ignorare, per
esempio DEPLOY
. Puoi trovare il nome del job nella tabella Fasi per il rollout nella console Google Cloud:
PHASE_ID
è il nome della fase che include
lavoro che stai ignorando.
REGION
è il nome della regione in cui
è stata creata, ad esempio us-central1
.
Per ulteriori informazioni su Google Cloud SDK, consulta il riferimento
Comando gcloud deploy rollouts ignore-job
.
Console
Fai clic sulla pipeline visualizzata nell'elenco delle pipeline di distribuzione.
La pagina Dettagli pipeline di distribuzione mostra una rappresentazione grafica dell'avanzamento della pipeline di distribuzione.
Nella scheda Implementazioni, nella sezione Dettagli pipeline di distribuzione, fai clic su il nome della tua implementazione.
Viene visualizzata la pagina dei dettagli dell'implementazione.
Seleziona il job non riuscito da ignorare.
Fai clic sul pulsante Ignora errori.
L'esecuzione del job non riuscita viene ignorata e l'implementazione continua come se il job avesse avuto esito positivo. In altre parole, se ci sono altri job nella stessa fase, vengono eseguiti. In caso contrario, l'implementazione è pronta per passare alla fase successiva.
Riprovare un job non riuscito
Puoi riprovare a eseguire un job non riuscito. Il job può non riuscire per uno dei seguenti motivi:
L'esecuzione di un job non è riuscita a essere completata.
Ad esempio, potrebbe essersi verificato un errore di autorizzazione.
Un utente ha terminato l'esecuzione di un job da quel job.
L'interruzione di un'esecuzione del job comporta un job non riuscito, che puoi riprovare.
Un test di verifica non è riuscito.
Per un job di verifica, un test di verifica non riuscito. Anche se il job di verifica è stato completato correttamente, uno dei test di verifica non è riuscito e lo abbiamo propagato al job di verifica. In questo caso, tenterai di eseguire nuovamente il job come parte del debug del test non riuscito rispetto alla tua applicazione.
Per riprovare un job non riuscito:
gcloud
gcloud deploy rollouts retry-job JOB_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--rollout=ROLLOUT_NAME \
--phase=PHASE_ID \
--region=REGION
Dove:
JOB_NAME
è il nome del lavoro che stai
nuovo tentativo in corso. Ad esempio, se stai riprovando il job di verifica dopo una verifica non riuscita, il valore sarà verify
.
RELEASE_NAME
è il nome della release che questo
dell'esecuzione del job.
PIPELINE_NAME
è il nome della pipeline di distribuzione
che stai utilizzando per gestire il deployment di questa release.
ROLLOUT_NAME
è il nome dell'implementazione di cui fa parte questo job.
PHASE_ID
è il nome della fase in cui si trova questo job
di cui fanno parte. Ad esempio, canary-50
o stable
.
REGION
è il nome della regione in cui
è stata creata, ad esempio us-central1
. Campo obbligatorio.
Per ulteriori informazioni su Google Cloud SDK, consulta il riferimento
Comando gcloud deploy rollouts retry-job
.
Console
Fai clic sulla pipeline visualizzata nell'elenco delle pipeline di distribuzione.
La pagina Dettagli pipeline di distribuzione mostra una rappresentazione grafica l'avanzamento della pipeline di distribuzione.
Nella scheda Implementazioni, fai clic sul nome dell'implementazione in Dettagli pipeline di importazione.
Viene visualizzata la pagina dei dettagli dell'implementazione.
In Fasi e job, fai clic sulla fase che include il job nuovo tentativo in corso.
Seleziona il job per riprovare.
Fai clic su Riprova e conferma.
L'esecuzione del job viene nuovamente eseguita e lo stato del job, come mostrato in Fasi è "in corso". Se ci sono altri job nella stessa fase di sviluppo, vengono eseguite. In caso contrario, l'implementazione è pronta per il passaggio la fase successiva.
Passaggi successivi
Scopri di più su come funzionano le strategie di deployment. in Cloud Deploy.
Consulta la documentazione sull'architettura del servizio Cloud Deploy per maggiori informazioni su come le implementazioni, le fasi, i job e le esecuzioni dei job si inseriscono nel resto di Cloud Deploy.