Einführungen verwalten

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

  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 Roll-outs unter Details zur Bereitstellungspipeline auf den Namen des Roll-outs.

    Die Seite mit den Details zum Roll-out wird angezeigt.

    Details zur Einführung in der Google Cloud Console

    In diesem Beispiel hat das Roll-out eine canary-50-Phase und eine stable-Phase. Ihr Roll-out kann mehr oder andere Phasen haben.

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

  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 Roll-outs unter Details zur Bereitstellungspipeline auf den Namen des Roll-outs.

    Die Seite mit den Details zum Roll-out wird angezeigt.

    Details zur Einführung in der Google Cloud Console

    In diesem Beispiel hat das Roll-out eine canary-50-Phase und eine stable-Phase. Ihr Roll-out kann mehr oder andere Phasen haben.

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

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

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

  1. Öffnen Sie die Seite der Lieferpipelines.

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

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

    Details zur Einführung in der Google Cloud Console

    In diesem Beispiel hat das Roll-out eine canary-50-Phase und eine stable-Phase. Ihr Roll-out kann mehr oder andere Phasen haben.

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

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

Die Tabelle „Phasen“ in der Google Cloud Console mit einem fehlgeschlagenen Joblauf

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

  1. Öffnen Sie die Seite der Lieferpipelines.

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

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

  4. Wählen Sie den fehlgeschlagenen Job aus, den Sie ignorieren möchten.

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

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

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

  1. Öffnen Sie die Seite der Lieferpipelines.

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

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

  4. Klicken Sie unter Phasen und Jobs auf die Phase, die den Job enthält, den Sie noch einmal versuchen möchten.

  5. Wählen Sie den Job aus, den Sie noch einmal ausführen möchten.

  6. Klicken Sie auf Noch einmal versuchen und bestätigen Sie die Auswahl.

    Details zur Einführung in der Google Cloud Console

    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