Roll-outs verwalten

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 oder CANCELED ü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 auf SKIPPED 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) auf SKIPPED 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

  1. Öffnen Sie die Seite der Lieferpipelines.

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

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

    Roll-out-Details in der Google Cloud Console

    Beachten Sie, dass das Roll-out in diesem Beispiel eine canary-50- und eine stable-Phase hat. Die Einführung kann mehrere Phasen oder verschiedene Phasen umfassen.

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

  1. Öffnen Sie die Seite der Lieferpipelines.

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

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

    Roll-out-Details in der Google Cloud Console

    Beachten Sie, dass das Roll-out in diesem Beispiel eine canary-50- und eine stable-Phase hat. Die Einführung kann mehrere Phasen oder verschiedene Phasen umfassen.

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

Jobausführungs-ID in den Roll-out-Details in der Google Cloud Console

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

  1. Öffnen Sie die Seite der Lieferpipelines.

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

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

    Roll-out-Details in der Google Cloud Console

    Beachten Sie, dass das Roll-out in diesem Beispiel eine canary-50- und eine stable-Phase hat. Ihre Einführung kann mehrere Phasen oder verschiedene Phasen umfassen.

  4. Klicken Sie unter Phasen auf die Phase, die den Job enthält, dessen Job Sie beenden möchten.

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

Die Tabelle „Phasen“ in der Google Cloud Console mit einer fehlgeschlagenen Jobausführung

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

  1. Öffnen Sie die Seite der Lieferpipelines.

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

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

  4. Wählen Sie den fehlgeschlagenen Job aus, der ignoriert werden soll.

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

Ein fehlgeschlagener Job, der ignoriert werden kann, in der Google Cloud Console

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

  1. Öffnen Sie die Seite der Lieferpipelines.

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

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

  4. Klicken Sie unter Phasen und Jobs auf die Phase, die den Job enthält, den Sie wiederholen.

  5. Wählen Sie den Job aus, den Sie wiederholen möchten.

  6. Klicken Sie auf Wiederholen und bestätigen Sie die Auswahl.

    Roll-out-Details in der Google Cloud Console

    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