Ein Cloud Deploy-Roll-out umfasst Phasen. Eine Phase ist eine geordnete, logische Gruppierung von Aufgaben, die bei einem Roll-out ausgeführt werden müssen.
Jede Phase enthält Jobs, also die in der jeweiligen Phase auszuführenden Aktionen (z. B. deploy
oder verify
). Jeder Job kann null oder mehrere Jobausführungen haben.
Ein Joblauf ist eine Instanz eines Jobs. Wenn der Job nicht ausgeführt wurde, gibt es keine Jobausführungen.
In diesem Dokument werden Phasen, Jobs und Jobausführungen beschrieben und wie sie verwaltet werden.
Struktur eines Roll-outs
Ein Roll-out ist eine Cloud Deploy-Ressource, die einem Release ein Ziel zuordnet.
Phasen
Ein Roll-out besteht aus einer oder mehreren Phasen.
Bei einer Standard-Bereitstellungsstrategie gibt es nur eine Phase: stable
.
Bei einer Canary-Bereitstellungsstrategie gibt es für jeden konfigurierten Prozentsatz eine separate Phase. Wenn Sie beispielsweise einen Canary konfigurieren, der 25%, dann 50 % und dann 100 % implementiert, gibt es drei Phasen:
canary-25
canary-50
stable
Diese Phasennamen sind standardmäßig: canary-[PERCENTAGE]
für Canary-Phasen und stable
für die 100 %-Phase. Wenn Sie jedoch einen manuellen oder benutzerdefinierten Canary konfigurieren, können Sie die Phasennamen steuern.
Jobs und Jobausführungen
Jede Einführungsphase umfasst einen oder mehrere Jobs.
Bei einem Roll-out mit einer Standardbereitstellungsstrategie, bei der keine Bereitstellungsbestätigung aktiviert ist, gibt es eine Phase (stable
).
Bei einem Canary-Roll-out gibt es für jeden Teil des Canary eine Phase (z. B. canary-25
, canary-50
, stable
) und für jede Phase einen deploy
-Job. Wenn die Überprüfung aktiviert ist, gibt es für jede Phase auch einen verify
-Job.
Ein Joblauf ist eine Instanz eines Jobs. Beispiel: Ein Job wird für einen deploy
-Job ausgeführt. Wenn er erfolgreich ist, wird kein weiterer Job für diesen Job ausgeführt. Wenn der Vorgang fehlschlägt, kann er als Jobausführung wiederholt werden.
Phasen beim ersten Mal überspringen
Bei einigen Bereitstellungsstrategien (z. B. Canary) wird der Traffic zwischen der alten und der neuen Version aufgeteilt. Wenn Sie ein neues Ziel einrichten, gibt es keine alte Version und wir können den Traffic nicht aufteilen.
Wenn Sie also zum ersten Mal einen Canary bereitstellen, überspringen wir die Canary-Phasen und führen die stable
-Phase aus. Danach wird die Anwendung bereitgestellt und zukünftige Canary-Bereitstellungen umfassen die Canary-Phasen.
In der Praxis führen Sie in der Regel eine Canary-Bereitstellung aus, bei der Ihre Anwendung bereits ausgeführt wird. Daher wird diese Phase selten übersprungen.
Status innerhalb eines Roll-outs
Einführungen, Phasen, Jobs und Jobausführungen haben alle einen Status. In diesem Abschnitt werden die Status für die einzelnen Typen beschrieben.
Roll-out-Status
Ein Roll-out hat einen der folgenden Status:
APPROVAL_REJECTED
Für das Roll-out war eine Genehmigung erforderlich, die jedoch abgelehnt wurde.
CANCELLED
Der Endstatus für Roll-outs, die von einem Nutzer abgebrochen wurden.
CANCELLING
Ein Nutzer hat das Roll-out abgebrochen, die Stornierung wurde aber noch nicht abgeschlossen.
HALTED
Wenn bei einer parallelen Bereitstellung ein oder mehrere untergeordnete Roll-outs fehlschlagen, aber mindestens ein untergeordnetes Roll-out erfolgreich ist, wird das Controller-Roll-out angehalten, wenn nach der aktuellen Phase noch weitere Phasen folgen.
Sie haben folgende Möglichkeiten, ein angehaltenes Controller-Roll-out fortzusetzen:
Roll-out des Controllers abbrechen
Fehlgeschlagene Jobs bei untergeordneten Roll-outs wiederholen oder ignorieren
IN_PROGRESS
Ein Job wird gerade ausgeführt.
FAILED
Ein Job ist fehlgeschlagen und der Nutzer hat nicht die Option Fehler ignorieren ausgewählt.
PENDING
Die Verarbeitung des Roll-outs hat noch nicht begonnen. Dieser Status geht in
IN_PROGRESS
oderCANCELED
über.PENDING_APPROVAL
Für das Roll-out ist eine Genehmigung erforderlich, die noch nicht erteilt wurde.
PENDING_RELEASE
Das Roll-out wartet darauf, dass die Version gerendert wird.
SUCCEEDED
Das Roll-out ist ohne Fehler abgeschlossen.
Phasenstatus
Eine Phase kann einen der folgenden Status haben:
PENDING
In dieser Phase wird auf den Abschluss einer anderen Phase des Roll-outs gewartet.
IN_PROGRESS
Die Phase hat begonnen.
SUCCEEDED
Die Phase wurde erfolgreich abgeschlossen.
FAILED
Ein Job in der Phase ist fehlgeschlagen und der Nutzer hat nicht die Option Fehler ignorieren ausgewählt.
ABORTED
Eine vorherige Phase ist fehlgeschlagen.
SKIPPED
Wenn Sie eine Bereitstellungsstrategie wie Canary ausführen, springt Cloud Deploy zur Phase
stable
, wenn noch keine laufende Version der Anwendung vorhanden ist, mit der der Traffic aufgeteilt werden kann. In diesem Fall ist der Status aufSKIPPED
festgelegt.
Jobstatus
Ein Job kann einen der folgenden Status haben:
ABORTED
Wenn eine Phase fehlschlägt, werden nachfolgende Phasen abgebrochen.
Wenn ein Job fehlschlägt und dieser Fehler nicht ignoriert wird, werden nachfolgende Jobs abgebrochen. Wenn eine Phase beispielsweise einen Bereitstellungsjob und einen Überprüfungsjob enthält und der Bereitstellungsjob fehlschlägt, wird der Überprüfungsjob abgebrochen.
DISABLED
Einige Jobs in einer Phase sind möglicherweise deaktiviert. Phasen enthalten beispielsweise immer Jobs zur Überprüfung, unabhängig davon, ob die Überprüfung aktiviert ist. Wenn die Überprüfung nicht aktiviert ist, wird für den Überprüfungsjob
DISABLED
festgelegt.FAILED
Ein für diesen Job ausgeführter Job ist fehlgeschlagen und der Nutzer hat nicht den Fehler ignoriert.
Der Nutzer hat die Ausführung des Jobs beendet.
IGNORED
Ein Job für diesen Job ist fehlgeschlagen und der Nutzer hat den Fehler ignoriert.
IN_PROGRESS
Für diesen Job wird derzeit ein Job ausgeführt.
PENDING
Der Joblauf für diesen Job kann nicht gestartet werden, da eine andere Phase oder ein anderer Job noch nicht abgeschlossen ist.
SKIPPED
Wenn Sie eine Bereitstellungsstrategie wie Canary ausführen, springt Cloud Deploy zur Phase
stable
, wenn noch keine laufende Version der Anwendung vorhanden ist, mit der der Traffic aufgeteilt werden kann. In diesem Fall wird der Status für Jobs in der übersprungenen Phase oder den übersprungenen Phasen aufSKIPPED
gesetzt.SUCCEEDED
Die Jobausführung ist erfolgreich abgeschlossen und der nächste Job in der Phase wurde gestartet oder die nächste Phase wurde gestartet oder ist bereit zum Starten (ggf. ausstehende Nutzereingaben erforderlich) oder das Roll-out ist abgeschlossen.
Status der Jobausführung
FAILED
Die Jobausführung ist fehlgeschlagen.
IN_PROGRESS
Die Jobausführung hat begonnen, ist aber noch nicht abgeschlossen.
TERMINATED
Der Nutzer hat die Jobausführung beendet.
TERMINATING
Der Nutzer hat die Jobausführung beendet, die Ausführung ist aber noch nicht abgeschlossen.
SUCCEEDED
Wenn eine Jobausführung erfolgreich abgeschlossen wird, ohne dass ein Fehler auftritt oder sie von einem Nutzer beendet wird, erhält sie den Status
SUCCEEDED
.
Einführung verwalten
Mit der Google Cloud Console oder dem Google Cloud SDK können Sie Folgendes mit einem Cloud Deploy-Roll-out tun:
Wenn Sie eine parallele Bereitstellung mit einer Canary-Bereitstellungsstrategie verwenden, finden Sie hier weitere Informationen.
Roll-out fortsetzen
Bei Zielen, für die eine andere Bereitstellungsstrategie als „Standard“ konfiguriert ist, müssen Sie das Roll-out von Phase zu Phase fortsetzen.
Wenn Sie beispielsweise ein Ziel für ein einfaches Canary-Bereitstellen mit den Phasen „50 %“ und „stable
(100%)“ konfiguriert haben, müssen Sie das Roll-out einmal von der Phase „canary-50
“ zur Phase „stable
(100%)“ fortsetzen.
gcloud
gcloud deploy rollouts advance ROLLOUT_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION
Wobei:
ROLLOUT_NAME
ist der Name der aktuellen Einführung, die Sie in die nächste Phase übergehen.
RELEASE_NAME
ist der Name des Release, zu dem dieses Roll-out gehört.
PIPELINE_NAME
ist der Name der Lieferpipeline, die Sie zum Verwalten der Bereitstellung dieses Release verwenden.
REGION
ist der Name der Region, in der die Version erstellt wurde, z. B. us-central1
. Das ist ein Pflichtfeld.
Weitere Informationen zum Befehl gcloud deploy rollouts advance
finden Sie in der Google Cloud SDK-Referenz.
Console
Klicken Sie auf Ihre Pipeline, die in der Liste der Lieferpipelines angezeigt wird.
Die Detailseite der Lieferpipeline zeigt eine grafische Darstellung des Fortschritts der Lieferpipeline.
Klicken Sie auf dem Tab Roll-outs unter Details zur Bereitstellungspipeline auf den Namen des Roll-outs.
Die Seite mit den Details zum Roll-out wird angezeigt.
In diesem Beispiel hat das Roll-out eine
canary-50
-Phase und einestable
-Phase. Ihr Roll-out kann mehr oder andere Phasen haben.Klicken Sie auf Roll-out fortsetzen.
Das Roll-out wird in die nächste Phase fortgesetzt.
Rollout abbrechen
Sie können jedes Roll-out abbrechen, das noch nicht abgeschlossen ist. Sie können ein fehlgeschlagenes Roll-out auch abbrechen, um weitere Aktionen wie Ignorieren oder Wiederholen zu verhindern. Das Roll-out muss sich in einem der folgenden Status befinden:
FAILED
HALTED
IN_PROGRESS
PENDING
PENDING_APPROVAL
PENDING_RELEASE
Nachdem Sie eine Einführung abgebrochen haben, befindet sie sich im Status CANCELLING
, bis alle ausstehenden Jobausführungen abgeschlossen sind. Sie können laufende Jobausführungen, auf die Sie nicht warten möchten, beenden. Sobald das Roll-out CANCELLED
ist, kann es nicht mehr fortgesetzt oder geändert werden.
So brechen Sie ein Roll-out ab:
gcloud
gcloud deploy rollouts cancel ROLLOUT_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION
Wobei:
ROLLOUT_NAME
ist der Name der aktuellen Einführung, die Sie in die nächste Phase übergehen.
RELEASE_NAME
ist der Name des Release, zu dem dieses Roll-out gehört.
PIPELINE_NAME
ist der Name der Lieferpipeline, die Sie zum Verwalten der Bereitstellung dieses Release verwenden.
REGION
ist der Name der Region, in der die Version erstellt wurde, z. B. us-central1
. Das ist ein Pflichtfeld.
Weitere Informationen zum Befehl gcloud deploy rollouts cancel
finden Sie in der Google Cloud SDK-Referenz.
Console
Klicken Sie auf Ihre Pipeline, die in der Liste der Lieferpipelines angezeigt wird.
Die Detailseite der Lieferpipeline zeigt eine grafische Darstellung des Fortschritts der Lieferpipeline.
Klicken Sie auf dem Tab Roll-outs unter Details zur Bereitstellungspipeline auf den Namen des Roll-outs.
Die Seite mit den Details zum Roll-out wird angezeigt.
In diesem Beispiel hat das Roll-out eine
canary-50
-Phase und einestable
-Phase. Ihr Roll-out kann mehr oder andere Phasen haben.Klicken Sie auf Rollout abbrechen.
Das Roll-out wird abgebrochen.
Jobausführung beenden
Sie können eine laufende Jobausführung beenden. Das kann beispielsweise der Fall sein, wenn ein Job zu lange dauert oder nicht wie erwartet funktioniert. Die Jobausführung muss IN_PROGRESS
sein, damit Sie sie beenden können.
gcloud
gcloud deploy job-runs terminate JOB_RUN_ID \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--rollout=ROLLOUT_NAME \
--region=REGION
Wobei:
JOB_RUN_ID
ist die UUID der Jobausführung, die Sie beenden möchten. Sie finden die ID der Jobausführung in der Google Cloud Console auf der Seite „Roll-out“ für Cloud Deploy:
Sie können die ID der Jobausführungen auch mit dem Befehl gcloud deploy rollouts
describe
abrufen.
RELEASE_NAME
ist der Name des Release, zu dem dieser Jobauftrag gehört.
PIPELINE_NAME
ist der Name der Lieferpipeline, die Sie zum Verwalten der Bereitstellung dieses Release verwenden.
ROLLOUT_NAME
ist der Name des Roll-outs, zu dem dieser Job gehört.
REGION
ist der Name der Region, in der die Version erstellt wurde, z. B. us-central1
. Das ist ein Pflichtfeld.
Weitere Informationen zum Befehl gcloud deploy job-runs terminate
finden Sie in der Google Cloud SDK-Referenz.
Console
Klicken Sie auf Ihre Pipeline, die in der Liste der Lieferpipelines angezeigt wird.
Die Seite mit den Details der Lieferpipeline zeigt eine grafische Darstellung des Fortschritts der Lieferpipeline.
Klicken Sie auf dem Tab Roll-outs unter Details zur Bereitstellungspipeline auf den Namen des Roll-outs.
Die Seite mit den Details zum Roll-out wird angezeigt.
In diesem Beispiel hat das Roll-out eine
canary-50
-Phase und einestable
-Phase. Ihr Roll-out kann mehr oder andere Phasen haben.Klicken Sie unter Phasen auf die Phase, die den Job enthält, dessen Ausführung Sie beenden möchten.
Wählen Sie unter Jobausführungen den Job aus, den Sie beenden möchten, und klicken Sie dann auf Beenden.
Die Jobausführung wird beendet und der Jobstatus ist
Failure
, wie in der Tabelle Phasen zu sehen.
Wenn Sie eine Jobausführung beenden, wird der Job als fehlgeschlagen betrachtet. Sie haben dann folgende Möglichkeiten:
- Status beibehalten und fehlgeschlagenes Roll-out ignorieren
- Job noch einmal ausführen
- Job ignorieren und mit dem nächsten Job oder der nächsten Phase des Roll-outs fortfahren
Job ignorieren
Sie können einen fehlgeschlagenen Job ignorieren und sofort mit dem nächsten Job in der Phase fortfahren. Dieser Job ist möglicherweise aus irgendeinem Grund fehlgeschlagen, z. B. weil Sie oder eine andere Person eine Jobausführung für diesen Job abgebrochen haben.
Ein fehlgeschlagener Job bedeutet eine fehlgeschlagene Phase und ein fehlgeschlagenes Roll-out. Wenn Sie den Fehler jedoch ignorieren, können sowohl die Phase als auch das Roll-out fortgesetzt werden und letztendlich SUCCEEDED
-Status haben.
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
Wobei:
ROLLOUT_NAME
ist der Name des Roll-outs, zu dem dieser Job gehört.
RELEASE_NAME
ist der Name des aktuellen Release, der diesen Job enthält.
PIPELINE_NAME
ist der Name der Lieferpipeline, die Sie zum Verwalten der Bereitstellung dieses Release verwenden.
JOB_ID
ist der Name des Jobs, der ignoriert werden soll, z. B. DEPLOY
. Sie finden den Jobnamen in der Tabelle Phasen für das Roll-out in der Google Cloud Console:
PHASE_ID
ist der Name der Phase, die den Job enthält, den Sie ignorieren.
REGION
ist der Name der Region, in der die Version erstellt wurde, z. B. us-central1
.
Weitere Informationen zum Befehl gcloud deploy rollouts ignore-job
finden Sie in der Google Cloud SDK-Referenz.
Console
Klicken Sie auf Ihre Pipeline, die in der Liste der Lieferpipelines angezeigt wird.
Die Seite mit den Details der Lieferpipeline zeigt eine grafische Darstellung des Fortschritts der Lieferpipeline.
Klicken Sie auf dem Tab Roll-outs unter Details zur Bereitstellungspipeline auf den Namen des Roll-outs.
Die Seite mit den Details zum Roll-out wird angezeigt.
Wählen Sie den fehlgeschlagenen Job aus, den Sie ignorieren möchten.
Klicken Sie auf die Schaltfläche Fehler ignorieren.
Der fehlgeschlagene Job wird ignoriert und das Roll-out wird fortgesetzt, als ob der Job erfolgreich gewesen wäre. Das heißt, wenn es andere Jobs in derselben Phase gibt, werden diese ausgeführt. Andernfalls kann mit der nächsten Phase des Roll-outs fortgefahren werden.
Fehlgeschlagenen Job wiederholen
Sie können eine fehlgeschlagene Jobausführung wiederholen. Der Job kann aus einem der folgenden Gründe fehlschlagen:
Eine Jobausführung konnte nicht abgeschlossen werden.
Möglicherweise ist beispielsweise ein Berechtigungsfehler aufgetreten.
Ein Nutzer hat einen Job beendet.
Wenn Sie eine Jobausführung beenden, wird der Job als fehlgeschlagen angezeigt. Sie können ihn dann wiederholen.
Ein Bestätigungstest ist fehlgeschlagen.
Bei einem Bestätigungsjob ist ein Bestätigungstest fehlgeschlagen. Obwohl der Überprüfungsjob korrekt abgeschlossen wurde, ist einer Ihrer Überprüfungstests fehlgeschlagen. Dieser Fehler wird an den Überprüfungsjob zurückgesendet. In diesem Fall würden Sie den Job im Rahmen der Fehlerbehebung für den fehlgeschlagenen Test für Ihre Anwendung noch einmal ausführen.
So wiederholen Sie einen fehlgeschlagenen Job:
gcloud
gcloud deploy rollouts retry-job JOB_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--rollout=ROLLOUT_NAME \
--phase=PHASE_ID \
--region=REGION
Wobei:
JOB_NAME
ist der Name des Jobs, den Sie noch einmal versuchen. Wenn Sie beispielsweise den Bestätigungsjob nach einer fehlgeschlagenen Bestätigung noch einmal ausführen, wäre das verify
.
RELEASE_NAME
ist der Name des Release, zu dem dieser Job gehört.
PIPELINE_NAME
ist der Name der Lieferpipeline, die Sie zum Verwalten der Bereitstellung dieses Release verwenden.
ROLLOUT_NAME
ist der Name des Roll-outs, zu dem dieser Job gehört.
PHASE_ID
ist der Name der Phase, zu der dieser Job gehört. Beispiel: canary-50
oder stable
.
REGION
ist der Name der Region, in der die Version erstellt wurde, z. B. us-central1
. Das ist ein Pflichtfeld.
Weitere Informationen zum Befehl gcloud deploy rollouts retry-job
finden Sie in der Google Cloud SDK-Referenz.
Console
Klicken Sie auf Ihre Pipeline, die in der Liste der Lieferpipelines angezeigt wird.
Die Seite mit den Details der Lieferpipeline zeigt eine grafische Darstellung des Fortschritts der Lieferpipeline.
Klicken Sie auf dem Tab Roll-outs unter Details zur Lieferpipeline auf den Namen des Roll-outs.
Die Seite mit den Details zum Roll-out wird angezeigt.
Klicken Sie unter Phasen und Jobs auf die Phase, die den Job enthält, den Sie noch einmal versuchen möchten.
Wählen Sie den Job aus, den Sie noch einmal ausführen möchten.
Klicken Sie auf Noch einmal versuchen und bestätigen Sie die Auswahl.
Die Jobausführung wird noch einmal ausgeführt und der Jobstatus ist in der Tabelle Phasen als „In Bearbeitung“ zu sehen. Wenn es weitere Jobs in derselben Phase gibt, werden diese ausgeführt. Andernfalls kann mit der nächsten Phase des Roll-outs fortgefahren werden.
Nächste Schritte
Weitere Informationen zur Funktionsweise von Bereitstellungsstrategien in Cloud Deploy
Weitere Informationen dazu, wie sich Roll-outs, Phasen, Jobs und Jobausführungen in den Rest von Cloud Deploy einfügen, finden Sie in der Dokumentation zur Cloud Deploy-Dienstarchitektur.