Un'implementazione di Cloud Deploy include più fasi. Una fase è un raggruppamento ordinato e logico di job da eseguire in un'implementazione.
Ogni fase include job, ovvero le azioni da eseguire in ogni fase (ad esempio, deploy
o verify
). Ogni job può avere zero o più esecuzioni dei job.
Un'esecuzione di un job è un'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 è costituita da una o più fasi.
Per una strategia di deployment standard, esiste una sola fase: stable
.
Per una strategia di deployment canary, esiste una fase separata per ogni percentuale configurata. Ad esempio, se configuri un canary che esegue il deployment al 25%, poi al 50% e infine al 100%, saranno previste tre fasi:
canary-25
canary-50
stable
I nomi di queste fasi sono standard: canary-[PERCENTAGE]
per le fasi canary e stable
per la fase 100%. Tuttavia, se configuri una versione canary manuale o personalizzata, puoi controllare i nomi delle fasi.
Job ed esecuzioni di job
Ogni fase di implementazione include uno o più job.
Per un'implementazione in una strategia di deployment standard, in cui la verifica del deployment non è abilitata, è prevista una fase (stable
).
Per un'implementazione canary, ci sarà una fase per ogni parte della versione canary (ad esempio canary-25
, canary-50
, stable
), mentre per ogni fase è previsto un job deploy
. Se la verifica è abilitata, esiste anche un job verify
per ogni fase.
Un'esecuzione di un job è un'istanza di un job. Ad esempio, viene eseguito un'esecuzione di un job deploy
e, se l'operazione ha esito positivo, non verranno eseguiti ulteriori job per quel job. Se l'operazione non va a buon fine, puoi riprovare come un'altra esecuzione del job.
Saltare le fasi la prima volta
Alcune strategie di deployment, ad esempio canary, distribuiscono il traffico tra la versione precedente e quella nuova. Se esegui il deployment su una destinazione per la prima volta, non esiste una versione precedente, quindi non possiamo distribuire il traffico.
Per questo motivo, quando esegui il deployment di una versione canary per la prima volta, saltiamo la fase o le fasi canary ed eseguiamo la fase stable
. Successivamente, viene eseguito il deployment dell'applicazione e i deployment canary futuri includeranno le fasi canary.
In una situazione reale, di solito esegui un deployment canary dove l'applicazione è già in esecuzione, quindi il salto di questa fase sarà raro.
Stati all'interno di un'implementazione
Le implementazioni, le fasi, i job e le esecuzioni di job hanno tutti degli stati. Questa sezione descrive gli stati di ognuna.
Stati di implementazione
L'implementazione avrà uno dei seguenti stati:
APPROVAL_REJECTED
L'implementazione richiedeva l'approvazione, ma l'approvazione è stata rifiutata.
CANCELLED
Lo stato del terminale per le implementazioni che sono state annullate da un utente.
CANCELLING
Un utente ha annullato l'implementazione, ma l'elaborazione dell'annullamento non è terminata.
HALTED
In un deployment parallelo, se una o più implementazioni secondarie hanno esito negativo, ma almeno un'implementazione figlio ha esito positivo, l'implementazione del controller viene HALTED se sono presenti più fasi dopo quella attuale.
Puoi riprendere un'implementazione interrotta del controller in uno dei seguenti modi:
Annulla l'implementazione del controller
Riprova o ignora eventuali job non riusciti nelle implementazioni secondarie
IN_PROGRESS
È in corso l'elaborazione di un'esecuzione di un 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 passa a
IN_PROGRESS
oCANCELED
.PENDING_APPROVAL
L'implementazione richiede l'approvazione, ma non è stata ancora approvata.
PENDING_RELEASE
L'implementazione è in attesa che venga eseguita il rendering della release.
SUCCEEDED
L'implementazione è terminata e non ha riscontrato errori.
Stati delle fasi
Una fase avrà uno dei seguenti stati:
PENDING
La fase è in attesa che venga completata un'altra fase dell'implementazione.
IN_PROGRESS
La fase è iniziata.
SUCCEEDED
La fase è stata completata correttamente.
FAILED
Un job nella fase non è riuscito e l'utente non ha scelto di ignorare l'errore.
ABORTED
Una fase precedente non è riuscita.
SKIPPED
Quando esegui una strategia di deployment, ad esempio un canary, Cloud Deploy passa alla fase
stable
nei casi in cui non sia ancora in esecuzione una versione dell'applicazione in esecuzione 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 va a buon fine, quelle successive vengono interrotte.
Se un job non riesce e tale errore non viene ignorato, i job successivi vengono interrotti. Ad esempio, se una fase include un job di deployment e un job di verifica 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 abilitata o meno. Se la verifica non è abilitata, il job di verifica è impostato su
DISABLED
.FAILED
Un'esecuzione del job per questo job non è riuscita e l'utente non ha scelto di ignorare l'errore.
L'utente ha scelto di terminare l'esecuzione del job per questo job.
IGNORED
Un'esecuzione del job per questo job non è riuscita e l'utente ha scelto di ignorare l'errore.
IN_PROGRESS
È attualmente in esecuzione un'esecuzione di questo job.
PENDING
L'esecuzione del job per questo job è in attesa di inizio, perché un'altra fase o un altro job non è stato completato.
SKIPPED
Quando esegui una strategia di deployment, ad esempio un canary, Cloud Deploy passa alla fase
stable
nei casi in cui non sia ancora in esecuzione una versione dell'applicazione in esecuzione con cui suddividere il traffico. In questo caso, lo stato è impostato suSKIPPED
per i job all'interno della fase o delle fasi ignorate.SUCCEEDED
Il job è stato completato correttamente e il job successivo della fase è iniziato, la fase successiva è iniziata o è pronta per essere avviata (potrebbe essere in attesa dell'input dell'utente) oppure l'implementazione è terminata.
Stati di esecuzione job
FAILED
L'esecuzione del job non è riuscita durante l'esecuzione.
IN_PROGRESS
L'esecuzione del job è iniziata, ma non è terminata.
TERMINATED
L'utente ha terminato l'esecuzione del job.
TERMINATING
L'utente ha terminato l'esecuzione del job, ma non ne ha ancora terminato l'esecuzione.
SUCCEEDED
Quando l'esecuzione di un job termina correttamente, senza fallire o essere terminata da un utente, viene impostato lo stato
SUCCEEDED
, che
Gestire l'implementazione
Con la console Google Cloud o Google Cloud SDK, puoi eseguire le seguenti operazioni con un'implementazione di Cloud Deploy:
Se utilizzi il deployment parallelo con una strategia di deployment canary, consulta questo documento.
Prosegui con un'implementazione
Per le destinazioni configurate per utilizzare una strategia di deployment diversa da quella "standard", devi avanzare l'implementazione da una fase all'altra.
Ad esempio, se hai una destinazione configurata per eseguire un semplice deployment canary
solo con le fasi del 50% e stable
(100%), devi far 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 corrente
che stai avanzando alla fase successiva.
RELEASE_NAME
è il nome della release
di cui fa parte questa implementazione.
PIPELINE_NAME
è il nome della pipeline di distribuzione
utilizzata 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 il riferimento di Google Cloud SDK.
Console
Fai clic sulla pipeline visualizzata nell'elenco delle pipeline di distribuzione.
La pagina dei dettagli della pipeline di distribuzione mostra una rappresentazione grafica dell'avanzamento della pipeline di distribuzione.
Nella scheda Implementazioni, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.
Viene mostrata la pagina dei dettagli dell'implementazione in questione.
Nota che in questo esempio l'implementazione ha una fase
canary-50
e una fasestable
. L'implementazione potrebbe prevedere più fasi o diverse.Fai clic su Avanzamento dell'implementazione.
L'implementazione passa alla fase successiva.
Annullare un'implementazione
Puoi annullare qualsiasi implementazione che non è ancora terminata. Puoi anche annullare un'implementazione non riuscita per impedire ulteriori azioni, ad esempio ignorarla o riprovare. L'implementazione deve essere in uno dei seguenti stati:
FAILED
HALTED
IN_PROGRESS
PENDING
PENDING_APPROVAL
PENDING_RELEASE
Una volta annullata un'implementazione, quest'ultima sarà nello stato CANCELLING
fino al completamento di tutte
le esecuzioni del job in sospeso. Puoi terminare
le esecuzioni di job in sospeso che non vuoi attendere. Una volta che l'implementazione è pari a CANCELLED
, non può più essere avanzata o modificata.
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 corrente
che stai avanzando alla fase successiva.
RELEASE_NAME
è il nome della release
di cui fa parte questa implementazione.
PIPELINE_NAME
è il nome della pipeline di distribuzione
utilizzata 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 cancel
, consulta il riferimento di Google Cloud SDK.
Console
Fai clic sulla pipeline visualizzata nell'elenco delle pipeline di distribuzione.
La pagina dei dettagli della pipeline di distribuzione mostra una rappresentazione grafica dell'avanzamento della pipeline di distribuzione.
Nella scheda Implementazioni, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.
Viene mostrata la pagina dei dettagli dell'implementazione in questione.
Nota che in questo esempio l'implementazione ha una fase
canary-50
e una fasestable
. L'implementazione potrebbe prevedere più fasi o diverse.Fai clic su Annulla implementazione.
L'implementazione è stata annullata.
Termina un'esecuzione di un job
Puoi terminare un'esecuzione di job attualmente in corso. Potresti voler eseguire questa operazione, ad esempio, se l'esecuzione di un job sembra richiedere troppo tempo o non funzionare come previsto. L'esecuzione del job deve essere IN_PROGRESS
per poter essere terminata.
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 da terminare. Puoi trovare l'ID esecuzione del job nella console Google Cloud, per Cloud Deploy, nella pagina dell'implementazione:
Puoi anche ottenere l'ID di esecuzione del job utilizzando il comando gcloud deploy rollouts
describe
.
RELEASE_NAME
è il nome della release di cui
parte l'esecuzione del job.
PIPELINE_NAME
è il nome della pipeline di distribuzione
utilizzata per gestire il deployment di questa release.
ROLLOUT_NAME
è il nome dell'implementazione di cui fa parte l'esecuzione di 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 il 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, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.
Viene mostrata la pagina dei dettagli dell'implementazione in questione.
Tieni presente che in questo esempio l'implementazione ha una fase
canary-50
e una fasestable
. L'implementazione potrebbe prevedere più fasi o fasi diverse.In Fasi, fai clic sulla fase che include il job di cui stai eseguendo l'esecuzione.
In Esecuzioni job, seleziona l'esecuzione specifica del job che stai terminando, quindi fai clic su Termina.
L'esecuzione del job viene 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 e puoi eseguire una delle seguenti operazioni:
- 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 dell'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 tu o qualcun altro hai terminato un'esecuzione del job per quel job.
Un job non riuscito indica una fase non riuscita e un'implementazione non riuscita. Tuttavia, se ignori l'errore, sia la fase che l'implementazione possono essere portati avanti e alla fine possono 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 l'esecuzione di questo job.
RELEASE_NAME
è il nome della release attuale
che include questo job.
PIPELINE_NAME
è il nome della pipeline di distribuzione
utilizzata per gestire il deployment di questa release.
JOB_ID
è il nome del job da ignorare, ad
esempio DEPLOY
. Puoi trovare il nome del job nella tabella Fasi dell'implementazione, nella console Google Cloud:
PHASE_ID
è il nome della fase che include il job che stai ignorando.
REGION
è il nome della regione in cui è stata creata la release, ad esempio us-central1
.
Per ulteriori informazioni sul comando gcloud deploy rollouts ignore-job
, consulta il 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, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.
Viene mostrata la pagina dei dettagli dell'implementazione in questione.
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 sia riuscito. In altre parole, se ci sono altri job nella stessa fase, vengono eseguiti. In caso contrario, l'implementazione è pronta per passare alla fase successiva.
Riprova un job non riuscito
Puoi riprovare un'esecuzione del job non riuscita. Il job può non riuscire per uno dei seguenti motivi:
Impossibile completare un'esecuzione del job.
Ad esempio, è possibile che si sia verificato un errore di autorizzazione.
Un utente ha terminato un'esecuzione di job da quel job.
Il termine dell'esecuzione di un job genera 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 riproponiamo nel job di verifica. In questo caso, ritenterai il job nell'ambito del debug del test non riuscito sulla 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 job che stai
provando. Ad esempio, se stai ritentando il job di verifica dopo una verifica non riuscita, il valore sarà verify
.
RELEASE_NAME
è il nome della release di cui
parte l'esecuzione del job.
PIPELINE_NAME
è il nome della pipeline di distribuzione
utilizzata per gestire il deployment di questa release.
ROLLOUT_NAME
è il nome dell'implementazione di cui fa parte l'esecuzione di questo job.
PHASE_ID
è il nome della fase di cui fa parte questo job. Ad esempio, canary-50
o stable
.
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 retry-job
, consulta il 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, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.
Viene mostrata la pagina dei dettagli dell'implementazione in questione.
In Fasi e job, fai clic sulla fase che include il job che stai riprovando.
Seleziona il job da riprovare.
Fai clic su Riprova e conferma.
L'esecuzione del job viene eseguita di nuovo e lo stato del job, come mostrato nella tabella Fasi, è "in corso". Se sono presenti altri job nella stessa fase, questi vengono eseguiti. In caso contrario, l'implementazione è pronta per passare alla fase successiva.
Passaggi successivi
Scopri di più su come funzionano le strategie di deployment in Cloud Deploy.
Consulta la documentazione relativa all'architettura del servizio Cloud Deploy per ulteriori informazioni su come le implementazioni, le fasi, i job e le esecuzioni dei job si adattano al resto di Cloud Deploy.