Gestisci le implementazioni

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

  • 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 su SKIPPED.

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 su SKIPPED 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

  1. Apri la pagina Pipeline di pubblicazione.

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

  3. Nella scheda Implementazioni, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.

    Viene mostrata la pagina dei dettagli dell'implementazione in questione.

    dettagli dell'implementazione nella console Google Cloud

    Nota che in questo esempio l'implementazione ha una fase canary-50 e una fase stable. L'implementazione potrebbe prevedere più fasi o diverse.

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

  1. Apri la pagina Pipeline di pubblicazione.

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

  3. Nella scheda Implementazioni, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.

    Viene mostrata la pagina dei dettagli dell'implementazione in questione.

    dettagli dell'implementazione nella console Google Cloud

    Nota che in questo esempio l'implementazione ha una fase canary-50 e una fase stable. L'implementazione potrebbe prevedere più fasi o diverse.

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

ID esecuzione job nei dettagli dell'implementazione nella console Google Cloud

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

  1. Apri la pagina Pipeline di pubblicazione.

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

  3. Nella scheda Implementazioni, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.

    Viene mostrata la pagina dei dettagli dell'implementazione in questione.

    dettagli dell'implementazione nella console Google Cloud

    Tieni presente che in questo esempio l'implementazione ha una fase canary-50 e una fase stable. L'implementazione potrebbe prevedere più fasi o fasi diverse.

  4. In Fasi, fai clic sulla fase che include il job di cui stai eseguendo l'esecuzione.

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

La tabella delle fasi, nella console Google Cloud, con un'esecuzione del job non riuscita

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

  1. Apri la pagina Pipeline di pubblicazione.

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

  3. Nella scheda Implementazioni, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.

    Viene mostrata la pagina dei dettagli dell'implementazione in questione.

  4. Seleziona il job non riuscito da ignorare.

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

Un job non riuscito, pronto per essere ignorato, nella console Google Cloud

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

  1. Apri la pagina Pipeline di pubblicazione.

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

  3. Nella scheda Implementazioni, in Dettagli pipeline di distribuzione, fai clic sul nome dell'implementazione.

    Viene mostrata la pagina dei dettagli dell'implementazione in questione.

  4. In Fasi e job, fai clic sulla fase che include il job che stai riprovando.

  5. Seleziona il job da riprovare.

  6. Fai clic su Riprova e conferma.

    dettagli dell'implementazione nella console Google Cloud

    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