Ein Cloud Deploy-Rollout umfasst Phasen. Eine Phase ist eine geordnete, logische Gruppierung von Jobs, die in einem Rollout ausgeführt werden sollen.
Jede Phase enthält Jobs, also die Aktionen, die in jeder Phase ausgeführt werden sollen (z. B. deploy
oder verify
). Jeder Job kann null oder mehr Jobausführungen haben.
Eine Jobausführung ist eine Instanz eines Jobs. Wenn der Job nicht ausgeführt wurde, wird er auch nicht ausgeführt.
In diesem Dokument werden Phasen, Jobs und Jobausführungen und deren Verwaltung beschrieben.
Struktur eines Roll-outs
Ein Roll-out ist eine Cloud Deploy-Ressource, die einen Release mit einem Ziel verknüpft.
Phasen
Ein Roll-out umfasst eine oder mehrere Phasen.
Bei einer Standardbereitstellungsstrategie gibt es nur eine Phase: stable
.
Bei einer Canary-Bereitstellungsstrategie gibt es eine separate Phase für jeden konfigurierten Prozentsatz. Wenn Sie beispielsweise eine Canary-Version konfigurieren, bei der 25%, dann 50 % und dann 100 % bereitgestellt werden, gibt es drei Phasen:
canary-25
canary-50
stable
Diese Phasennamen sind Standardnamen: canary-[PERCENTAGE]
für Canary-Phasen und stable
für die 100 %-Phase. Wenn Sie jedoch eine manuelle oder benutzerdefinierte Canary-Version konfigurieren, können Sie die Phasennamen steuern.
Jobs und Jobausführungen
Jede Roll-out-Phase umfasst einen oder mehrere Jobs.
Für einen Roll-out im Rahmen einer Standardbereitstellungsstrategie ohne aktivierte Bereitstellungsüberprüfung gibt es eine Phase (stable
).
Ein Canary-Roll-out gibt es jeweils eine Phase für jeden Teil des Canary-Tests (z. B. canary-25
, canary-50
, stable
) und für jede Phase gibt es einen deploy
-Job. Wenn die Überprüfung aktiviert ist, gibt es auch einen verify
-Job für jede Phase.
Eine Jobausführung ist eine Instanz eines Jobs. Beispielsweise wird ein Job, der für einen deploy
-Job ausgeführt wird, ausgeführt. Ist er erfolgreich, wird für diesen Job kein weiterer Job ausgeführt. Wenn er fehlschlägt, kann ein neuer Job ausgeführt werden.
Phasen beim ersten Mal überspringen
Einige Bereitstellungsstrategien (z. B. Canary-Strategien) teilen den Traffic zwischen der alten und der neuen Version auf. Wenn Sie die Bereitstellung zum ersten Mal für ein Ziel vornehmen, gibt es keine alte Version, sodass wir den Traffic nicht zuordnen können.
Daher überspringen wir bei der ersten Bereitstellung einer Canary-Phase die Canary-Phase(n) und führen die stable
-Phase aus. Danach wird die Anwendung bereitgestellt. Zukünftige Canary-Deployments umfassen diese Canary-Phasen.
In der Praxis führen Sie normalerweise eine Canary-Bereitstellung aus, in der Ihre Anwendung bereits ausgeführt wird. Daher wird diese Phase nur selten übersprungen.
Status innerhalb eines Roll-outs
Rollouts, Phasen, Jobs und Jobausführungen haben alle Status. In diesem Abschnitt werden die einzelnen Bundesstaaten beschrieben.
Roll-out-Status
Ein Roll-out hat einen der folgenden Status:
APPROVAL_REJECTED
Das Roll-out muss genehmigt werden, wurde aber abgelehnt.
CANCELLED
Der Terminalstatus für Roll-outs, die von einem Nutzer abgebrochen wurden.
CANCELLING
Ein Nutzer hat das Roll-out abgebrochen, aber der Abbruch ist noch nicht abgeschlossen.
HALTED
Wenn bei einer parallelen Bereitstellung ein oder mehrere untergeordnete Rollouts fehlschlagen, aber mindestens ein untergeordnetes Rollout erfolgreich ist, wird das Controller-Rollout ANGEHALTEN, wenn nach dem aktuellen Rollout weitere Phasen vorhanden sind.
Sie haben folgende Möglichkeiten, ein angehaltenes Controller-Roll-out fortzusetzen:
Controller-Roll-out abbrechen
Fehlgeschlagene Jobs bei untergeordneten Roll-outs wiederholen oder ignorieren
IN_PROGRESS
Eine Jobausführung wird verarbeitet.
FAILED
Ein Job ist fehlgeschlagen und der Nutzer hat nicht angegeben, den Fehler zu ignorieren.
PENDING
Die Verarbeitung des Roll-outs hat noch nicht begonnen. Dieser Status geht in
IN_PROGRESS
oderCANCELED
über.PENDING_APPROVAL
Das Roll-out muss genehmigt werden, ist jedoch noch nicht genehmigt worden.
PENDING_RELEASE
Das Roll-out wartet auf das Rendering des Release.
SUCCEEDED
Das Roll-out ist ohne Fehler abgeschlossen.
Phasenzustände
Eine Phase hat einen der folgenden Status:
PENDING
Die Phase wartet auf das Ende einer weiteren Phase des Roll-outs.
IN_PROGRESS
Die Phase hat begonnen.
SUCCEEDED
Die Phase wurde erfolgreich abgeschlossen.
FAILED
Ein Job in dieser Phase ist fehlgeschlagen und der Nutzer hat den Fehler nicht ignoriert.
ABORTED
Eine vorherige Phase ist fehlgeschlagen.
SKIPPED
Wenn Sie eine Bereitstellungsstrategie ausführen, z. B. Canary, springt Cloud Deploy in die Phase
stable
über, falls noch keine ausgeführte Version der Anwendung vorhanden ist, in die der Traffic aufgeteilt werden kann. In diesem Fall ist der Status aufSKIPPED
gesetzt.
Jobstatus
Ein Job hat einen der folgenden Status:
ABORTED
Wenn eine Phase fehlschlägt, werden die nachfolgenden 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 Prüfjob enthält und der Bereitstellungsjob fehlschlägt, wird er abgebrochen.
DISABLED
Einige Jobs in einer Phase sind möglicherweise deaktiviert. Beispielsweise umfassen die Phasen immer Überprüfungsjobs, unabhängig davon, ob die Überprüfung aktiviert ist oder nicht. Wenn die Überprüfung nicht aktiviert ist, ist der Überprüfungsjob auf
DISABLED
gesetzt.FAILED
Eine Jobausführung für diesen Job ist fehlgeschlagen und der Nutzer hat den Fehler nicht ignoriert.
Der Nutzer hat sich entschieden, die Jobausführung für diesen Job zu beenden.
IGNORED
Eine Jobausführung für diesen Job ist fehlgeschlagen und der Nutzer hat entschieden, den Fehler zu ignorieren.
IN_PROGRESS
Derzeit wird ein Job für diesen Job ausgeführt.
PENDING
Die Jobausführung für diesen Job wartet auf den Beginn, da eine andere Phase oder ein anderer Job noch nicht abgeschlossen ist.
SKIPPED
Wenn Sie eine Bereitstellungsstrategie ausführen, z. B. Canary, springt Cloud Deploy in die Phase
stable
über, falls noch keine ausgeführte Version der Anwendung vorhanden ist, in die der Traffic aufgeteilt werden kann. In diesem Fall wird der Status für Jobs innerhalb der übersprungenen Phase(n) aufSKIPPED
gesetzt.SUCCEEDED
Die Jobausführung wurde erfolgreich abgeschlossen und der nächste Job in der Phase wurde gestartet, die nächste Phase hat begonnen oder ist bereit zum Start (möglicherweise ausstehende Nutzereingaben) oder das Roll-out ist abgeschlossen.
Jobausführungsstatus
FAILED
Die Jobausführung ist während der Ausführung 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, aber noch nicht beendet.
SUCCEEDED
Wenn die Ausführung eines Jobs erfolgreich abgeschlossen wird, ohne dass er fehlschlägt oder von einem Nutzer beendet wird, wird er in den Status
SUCCEEDED
versetzt.
Einführung verwalten
Mit der Google Cloud Console oder dem Google Cloud SDK können Sie bei einem Cloud Deploy-Rollout Folgendes tun:
Wenn Sie eine parallele Bereitstellung mit einer Canary-Bereitstellungsstrategie verwenden, lesen Sie dieses Dokument.
Roll-out fortsetzen
Bei Zielen, die für die Verwendung einer anderen Bereitstellungsstrategie als „Standard“ konfiguriert sind, müssen Sie das Roll-out von Phase zu Phase durchführen.
Wenn Sie beispielsweise ein Ziel für eine einfache Canary-Bereitstellung mit den Phasen „50 %“ und „stable
“ (100%) konfiguriert haben, müssen Sie den Roll-out einmalig von der Phase canary-50
in die 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 des aktuellen Roll-outs, mit dem Sie in der nächsten Phase fortfahren.
RELEASE_NAME
ist der Name des Release, zu dem dieser Rollout 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 der Release 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 Rollouts unter Details zur Bereitstellungspipeline auf den Namen Ihres Roll-outs.
Die Seite mit den Roll-out-Details für dieses Roll-out wird angezeigt.
Beachten Sie, dass das Roll-out in diesem Beispiel eine
canary-50
- und einestable
-Phase hat. Die Einführung kann mehrere Phasen oder verschiedene Phasen umfassen.Klicken Sie auf Roll-out fortsetzen.
Die Einführung geht in die nächste Phase über.
Rollout abbrechen
Sie können jedes Roll-out abbrechen, das noch nicht abgeschlossen ist. Sie können ein fehlgeschlagenes Rollout auch abbrechen, um weitere Aktionen dafür zu verhindern (z. B. Ignorieren oder Wiederholen). Das Roll-out muss einen der folgenden Status haben:
FAILED
HALTED
IN_PROGRESS
PENDING
PENDING_APPROVAL
PENDING_RELEASE
Nachdem Sie ein Roll-out abgebrochen haben, befindet sich dieses Roll-out im Status CANCELLING
, bis alle ausstehenden Jobausführungen abgeschlossen sind. Sie können ausstehende Jobausführungen beenden, auf die Sie nicht warten möchten. Sobald der Roll-out CANCELLED
lautet, kann er nicht mehr erweitert 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 des aktuellen Roll-outs, mit dem Sie in der nächsten Phase fortfahren.
RELEASE_NAME
ist der Name des Release, zu dem dieser Rollout 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 der Release 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 Rollouts unter Details zur Bereitstellungspipeline auf den Namen Ihres Roll-outs.
Die Seite mit den Roll-out-Details für dieses Roll-out wird angezeigt.
Beachten Sie, dass das Roll-out in diesem Beispiel eine
canary-50
- und einestable
-Phase hat. Die Einführung kann mehrere Phasen oder verschiedene Phasen umfassen.Klicken Sie auf Rollout abbrechen.
Das Roll-out wurde abgebrochen.
Jobausführung beenden
Sie können eine laufende Jobausführung beenden. Das ist z. B. sinnvoll, wenn die Ausführung eines Jobs 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 (UUID) der Jobausführung, die Sie beenden möchten. Sie finden die Jobausführungs-ID für Cloud Deploy in der Google Cloud Console auf der Roll-out-Seite:
Sie können die ID der Jobausführung auch mit dem Befehl gcloud deploy rollouts
describe
abrufen.
RELEASE_NAME
ist der Name des Release, zu dem diese Jobausführung 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 diese Jobausführung gehört.
REGION
ist der Name der Region, in der der Release 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.
Auf der Detailseite der Bereitstellungspipeline wird der Fortschritt der Bereitstellungspipeline grafisch dargestellt.
Klicken Sie auf dem Tab Rollouts unter Details zur Bereitstellungspipeline auf den Namen Ihres Roll-outs.
Die Seite mit den Roll-out-Details für dieses Roll-out wird angezeigt.
Beachten Sie, dass das Roll-out in diesem Beispiel eine
canary-50
- und einestable
-Phase hat. Ihre Einführung kann mehrere Phasen oder verschiedene Phasen umfassen.Klicken Sie unter Phasen auf die Phase, die den Job enthält, dessen Job Sie beenden möchten.
Wählen Sie unter Jobausführungen die spezifische Jobausführung aus, die Sie beenden möchten, und klicken Sie dann auf Beenden.
Die Jobausführung wird beendet und der Jobstatus ist, wie in der Tabelle Phasen angegeben,
Failure
.
Nachdem Sie eine Jobausführung beendet haben, gilt der Job als fehlgeschlagen. Sie haben dann folgende Möglichkeiten:
- So lassen Sie es und ignorieren Sie das fehlgeschlagene Roll-out.
- Job wiederholen
- Job ignorieren und mit dem nächsten Job oder der nächsten Phase im Roll-out 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. durch Sie oder eine andere Person, die den Job für diesen Job beendet hat.
Ein fehlgeschlagener Job bedeutet, dass die Phase fehlgeschlagen ist und das Roll-out fehlgeschlagen ist. Wenn Sie den Fehler jedoch ignorieren, können sowohl die Phase als auch das Roll-out fortgesetzt werden und letztendlich den Status SUCCEEDED
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 diese Jobausführung 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 Google Cloud Console in der Tabelle Phases für das Rollout:
PHASE_ID
ist der Name der Phase, die den Job enthält, den Sie ignorieren.
REGION
ist der Name der Region, in der der Release 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.
Auf der Detailseite der Bereitstellungspipeline wird der Fortschritt der Bereitstellungspipeline grafisch dargestellt.
Klicken Sie auf dem Tab Rollouts unter Details zur Bereitstellungspipeline auf den Namen Ihres Roll-outs.
Die Seite mit den Roll-out-Details für dieses Roll-out wird angezeigt.
Wählen Sie den fehlgeschlagenen Job aus, der ignoriert werden soll.
Klicken Sie auf die Schaltfläche Fehler ignorieren.
Die fehlgeschlagene Jobausführung wird ignoriert und das Roll-out wird fortgesetzt, als ob der Job erfolgreich wäre. Das heißt, wenn sich andere Jobs in derselben Phase befinden, werden diese ausgeführt. Andernfalls kann mit dem Roll-out mit der nächsten Phase begonnen werden.
Fehlgeschlagenen Job wiederholen
Sie können eine fehlgeschlagene Jobausführung wiederholen. Der Job kann aus folgenden Gründen fehlschlagen:
Eine Jobausführung konnte nicht abgeschlossen werden.
Beispielsweise könnte ein Berechtigungsfehler aufgetreten sein.
Ein Nutzer hat eine Jobausführung in diesem Job beendet.
Das Beenden einer Jobausführung führt zu einem fehlgeschlagenen Job, den Sie wiederholen können.
Ein Bestätigungstest ist fehlgeschlagen.
Bei einem Überprüfungsjob ist ein Verifizierungstest fehlgeschlagen. Obwohl der Verifizierungsjob korrekt abgeschlossen wurde, ist einer Ihrer Verifizierungstests fehlgeschlagen. Wir leiten dies an den Verifizierungsjob weiter. 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 wiederholen. Wenn Sie den Überprüfungsjob beispielsweise nach einer fehlgeschlagenen Überprüfung noch einmal ausführen, lautet der Wert verify
.
RELEASE_NAME
ist der Name des Release, zu dem diese Jobausführung 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 diese Jobausführung 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 der Release 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.
Auf der Detailseite der Bereitstellungspipeline wird der Fortschritt der Bereitstellungspipeline grafisch dargestellt.
Klicken Sie auf dem Tab Rollouts unter Details zur Bereitstellungspipeline auf den Namen Ihres Roll-outs.
Die Seite mit den Roll-out-Details für dieses Roll-out wird angezeigt.
Klicken Sie unter Phasen und Jobs auf die Phase, die den Job enthält, den Sie wiederholen.
Wählen Sie den Job aus, den Sie wiederholen möchten.
Klicken Sie auf Wiederholen und bestätigen Sie die Auswahl.
Der Job wird noch einmal ausgeführt und der Jobstatus, wie in der Tabelle Phases angegeben, lautet „In Bearbeitung“. Wenn sich in derselben Phase weitere Jobs befinden, werden diese ausgeführt. Andernfalls kann mit der Einführung in die nächste Phase übergegangen werden.
Nächste Schritte
Weitere Informationen zur Funktionsweise von Bereitstellungsstrategien in Cloud Deploy
Weitere Informationen dazu, wie Roll-outs, Phasen, Jobs und Jobausführungen mit dem Rest von Cloud Deploy zusammenhängen, finden Sie in der Dokumentation zur Cloud Deploy-Dienstarchitektur.