Roll-out von Clusterupgrades mit benutzerdefinierten Phasen sequenzieren

In diesem Dokument wird beschrieben, wie Sie GKE-Clusterupgrades (Google Kubernetes Engine) verwalten, bei denen die Bereitstellungssequenzierung mit benutzerdefinierten Phasen verwendet wird. Sie erstellen eine Roll-out-Sequenz mit Gruppen von Clustern, die in Flotten und optional in Teilmengen von Clustern aus diesen Flotten organisiert sind. Sie können auswählen, wie viel Betriebstestzeit nach Abschluss von Clusterupgrades in einer Gruppe gewünscht ist (maximal 30 Tage). Sie können sowohl Autopilot- als auch Standard-Cluster verwenden. Weitere Informationen zur Funktionsweise dieses Features finden Sie unter Roll-out-Sequenzierung mit benutzerdefinierten Phasen.

Wenn Sie Roll-outs für mehrere Flotten verwalten, empfehlen wir, ein separates Projekt zum Hosten Ihrer RolloutSequence-Objekte zu verwenden. Dieses Projekt fungiert als übergeordnetes Element und Koordinator für die Rollouts in der Sequenz. Dieses Projekt ist in der Regel nicht Teil der Sequenz. Das heißt, das Projekt enthält keine Flotten oder Cluster, die Teil der Sequenz sind.

Hinweis

Erforderliche Rollen

Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Informationen zum Zuweisen von Rollen

Zum Erstellen oder Ändern einer Roll-out-Sequenz benötigen Sie die IAM-Rolle „Flottenbearbeiter“ (roles/gkehub.editor) für jedes Flotten-Hostprojekt in der Roll-out-Sequenz und für Ihr Roll-out-Sequenz-Hostprojekt. Diese Rolle bietet die folgenden Berechtigungen:

  • gkehub.rolloutsequences.create
  • gkehub.rolloutsequences.get
  • gkehub.rolloutsequences.list
  • gkehub.rolloutsequences.update
  • gkehub.rolloutsequences.delete
  • gkehub.fleet.update

Mit diesen Berechtigungen können Sie RolloutSequence-Objekte erstellen, darauf zugreifen und sie ändern sowie Flotten in der Einführungssequenz verwenden.

Wenn Sie Cluster in einer Flotte registrieren oder die Registrierung aufheben möchten, benötigen Sie alle folgenden Berechtigungen:

Sie können Roll-out-Sequenzen mit Flotten erstellen, die in Projekten in einer oder mehreren Organisationen gehostet werden, sofern Sie die erforderlichen Berechtigungen für diese Projekte haben.

Weitere Informationen zu den IAM-Rollen mit der geringsten Berechtigung, die für verschiedene Aufgaben erforderlich sind, finden Sie unter Vorschläge für vordefinierte Rollen mit Gemini-Unterstützung erhalten.

Roll-out-Sequenz konfigurieren

Zum Erstellen einer Roll-out-Sequenz müssen Ihre Cluster in Gruppen von Flotten organisiert sein. Sie können auch detaillierte Phasen erstellen, die mithilfe von Kubernetes-Labels auf bestimmte Teilmengen von Clustern in einer Flotte ausgerichtet werden können. Eine Anleitung zum Organisieren Ihrer Cluster finden Sie im Beispiel für eine Community-Bank. Nachdem Sie die Cluster in Gruppen organisiert und optional mit Labels versehen haben, erstellen Sie eine Roll-out-Sequenz, indem Sie die geordnete Liste der Phasen und die Betriebszeit für jede Gruppe definieren.

Cluster in Flotten organisieren

Bei einer Roll-out-Sequenz empfehlen wir, alle Cluster in derselben Release-Version zu registrieren. Wenn die Cluster nicht im selben Channel registriert sind, wählt GKE eine Version aus dem konservativsten Channel in der Sequenz aus. Wenn Cluster beispielsweise sowohl im Stable- als auch im Regular-Channel registriert sind, wählt GKE die Version aus dem Stable Channel aus. Außerdem empfehlen wir, dass alle Cluster dieselbe Nebenversion ausführen, damit sie für dieselbe Zielversion für automatische Upgrades infrage kommen.

Wenn Sie Ihre Cluster bereits in Flotten organisiert haben, können Sie die folgenden Schritte überspringen und mit dem Abschnitt Teilmengen von Clustern erstellen fortfahren.

  1. Gruppieren Sie Ihre Cluster in Flotten. Sie können Ihre Cluster nach Bereitstellungsumgebungen wie Test, Staging und Produktion organisieren (empfohlen).
  2. Registrieren Sie jeden Cluster anhand der ausgewählten Gruppierung bei einer Flotte.

Teilmengen von Clustern erstellen (optional)

Damit eine Phase in Ihrer Roll-out-Sequenz auf bestimmte Cluster ausgerichtet ist, müssen Sie diese Cluster kennzeichnen.

Wenn Sie beispielsweise eine neue Version auf einer kleinen Teilmenge von Clustern testen möchten, bevor Sie sie vollständig einführen, können Sie diesen Clustern das Label canary zuweisen. Führen Sie den folgenden Befehl aus, um das Label canary mit dem Wert true einem Cluster mit der Google Cloud CLI hinzuzufügen:

gcloud container clusters update CLUSTER_NAME \
    --location=CLUSTER_LOCATION\
    --update-labels=canary=true

Ersetzen Sie Folgendes:

Das Flag --update-labels=canary=true weist GKE an, das Label canary auf den Cluster anzuwenden .

Weitere Informationen zum Hinzufügen eines Labels zu einem Cluster finden Sie unter Labels nachträglich Clustern hinzufügen oder aktualisieren.

Roll-out-Sequenz mit benutzerdefinierten Phasen erstellen

Eine Roll-out-Sequenz mit benutzerdefinierten Phasen definiert die Reihenfolge der Upgrades durch deklarative Definition der Phasen. Mit der gcloud CLI verwenden Sie eine YAML-Datei und mit Terraform fügen Sie Ihrer Konfiguration einen Ressourcenblock hinzu. Wenn Sie die in diesem Abschnitt beschriebenen Schritte ausführen, erstellen Sie eine RolloutSequence.

Damit die Sequenz alle Cluster erfasst, muss jede Flotte eine Auffangphase enthalten (eine Phase ohne Labelselektor). In dieser Auffangphase werden alle verbleibenden Cluster erfasst, die in früheren Phasen nicht von GKE ausgewählt wurden. Wenn Sie einem einzelnen Cluster mehrere Phasen innerhalb eines RolloutSequence zuweisen, weist GKE den Cluster zur Konfliktlösung implizit nur der frühesten Phase zu.

In den folgenden Beispielkonfigurationen werden drei Phasen erstellt:

  • Die erste Phase ist auf alle Cluster in der Flotte dev ausgerichtet. Nach Abschluss des Upgrades gibt es eine Soak-Zeit von 7 Tagen (7d).
  • Die zweite Phase bezieht sich auf Cluster in der Flotte prod, die das Label canary=true haben. Nach Abschluss des Upgrades gibt es eine Soak-Zeit von 7 Tagen (7d).
  • In der dritten Phase werden die verbleibenden Cluster in der prod-Flotte aktualisiert. Nach Abschluss des Upgrades gibt es eine Betriebszeit von 7 Tagen (7d).

gcloud

  1. Speichern Sie das folgende Manifest als rollout-sequence.yaml:

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 7d
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
      label-selector: resource.labels.canary=='true'
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
    

    Wichtige Hinweise:

    • stage: umfasst eine Flotte oder eine Teilmenge von Clustern in einer Flotte. Cluster in früheren Phasen müssen vollständig aktualisiert und getestet werden, bevor die Sequenz in die nächste Phase übergeht. Wenn ein Cluster jedoch 30 Tage nach Beginn des Upgrades noch nicht vollständig aktualisiert wurde, beginnt GKE mit dem Betriebszeitraum.
    • fleet-projects: Eine Liste von Flotten, aus denen Cluster für diese Phase ausgewählt werden können. Pro Phase kann maximal auf eine Flotte verwiesen werden. Eine Flotte wird durch das Projekt identifiziert, in dem sie gehostet wird. Dieses Projekt kann sich von dem Projekt unterscheiden, in dem sich die Cluster befinden, wenn die Flotte projektübergreifende Mitgliedschaften enthält. Das Format für die Angabe eines Flottenprojekts ist projects/PROJECT_ID.
    • label-selector (optional): Wählt eine Teilmenge von Clustern aus den angegebenen Flotten aus. In diesem Feld wird die Common Expression Language (CEL)-Syntax verwendet und es muss mit resource.labels beginnen.
    • soak-duration: Die Wartezeit nach dem Upgrade aller Cluster in einer vorherigen Phase, bevor mit der nächsten Phase fortgefahren wird. Angegebene Zeit in Sekunden, Minuten, Stunden und Tagen.
  2. Führen Sie den folgenden Befehl aus, um die im Manifest rollout-sequence.yaml definierte Rollout-Sequenz zu erstellen:

    gcloud container fleet rolloutsequences create ROLLOUT_SEQUENCE_NAME \
        --display-name=DISPLAY_NAME \
        --stage-config=rollout-sequence.yaml
    

    Ersetzen Sie Folgendes:

    • ROLLOUT_SEQUENCE_NAME: Eine unveränderliche ID, die den RFC-1034-Spezifikationen entspricht, z. B. test-rollout-sequence.
    • DISPLAY_NAME: Ein für Nutzer lesbarer String für Ihre Bereitstellungssequenz.

Terraform

In diesem Abschnitt erfahren Sie, wie Sie mit Terraform eine Rollout-Sequenz mit benutzerdefinierten Phasen erstellen. Sie können diese Ressource auch verwenden, um die Sequenz zu aktualisieren. Weitere Informationen finden Sie in der Referenzdokumentation zu google_gke_hub_rollout_sequence.

  1. Fügen Sie Ihrer Terraform-Konfiguration den folgenden Block hinzu, um eine Ressource für die Bereitstellungssequenz zu erstellen:

    resource "google_gke_hub_rollout_sequence" "rollout_sequence" {
      rollout_sequence_id = "ROLLOUT_SEQUENCE_NAME"
      display_name        = "DISPLAY_NAME"
      stages {
        fleet_projects = ["projects/dev"]
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        cluster_selector {
          label_selector = "resource.labels.canary=='true'"
        }
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        soak_duration  = "7d"
      }
    }
    

    Ersetzen Sie Folgendes:

    • ROLLOUT_SEQUENCE_NAME: Eine unveränderliche ID, die den RFC-1034-Spezifikationen entspricht, z. B. test-rollout-sequence.
    • DISPLAY_NAME: Ein für Nutzer lesbarer String für Ihre Bereitstellungssequenz.

Bestimmte Version bereitstellen

Sie können eine bestimmte Version in Ihrer Roll-out-Sequenz bereitstellen. Weitere Informationen finden Sie unter Bestimmte Version bereitstellen.

Sie können eine Version entweder für die Steuerungsebenen oder die Knoten der Cluster in Ihrer Roll-out-Sequenz bereitstellen. Sie können unabhängig voneinander auswählen, welche Versionen für die Steuerungsebenen oder Knoten bereitgestellt werden sollen.

GKE kann jeweils nur eine Version in einer Phase für die Steuerungsebene oder die Knoten bereitstellen. Wenn Sie einen vorhandenen Rollout haben, der in der ersten Phase der Rollout-Sequenz ausgeführt wird, führt GKE je nachdem, ob Sie Ihre Rollout-Sequenz mit der gcloud CLI oder Terraform verwalten, Folgendes aus:

  • gcloud CLI: Wenn Sie den Befehl ausführen, werden Sie in einer interaktiven Eingabeaufforderung gefragt, ob Sie den vorhandenen Roll-out abbrechen möchten, um den Roll-out für die von Ihnen angegebene Version zu erstellen. Wenn Sie mit „Ja“ antworten, GKE die vorhandene Einführung abgebrochen und eine neue erstellt. Andernfalls behält GKE den vorhandenen Rollout bei und erstellt keinen neuen, wie Sie ursprünglich im Befehl angefordert haben.
  • Terraform: Wenn Sie Ihre Terraform-Konfiguration wie im nächsten Abschnitt beschrieben aktualisieren, wird der vorhandene Rollout von GKE abgebrochen, wenn er sich in der ersten Phase befindet.

Version für die Steuerungsebenen in einer Roll-out-Sequenz bereitstellen

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME \
    --control-plane-version="CONTROL_PLANE_VERSION"

Ersetzen Sie Folgendes:

  • ROLLOUT_SEQUENCE_NAME: Der Name der Rollout-Sequenz.
  • CONTROL_PLANE_VERSION: Die Version, die eingeführt werden soll. Sie können eine bestimmte Version auswählen, z. B. 1.34.7-gke.1055000, oder einen Versionsalias verwenden. Weitere Informationen finden Sie unter Clusterversion angeben.

Terraform

Wenn Sie Terraform zum Verwalten Ihrer Roll-out-Sequenz verwenden, können Sie eine bestimmte Version bereitstellen, indem Sie den Block ergänzen, den Sie zum Erstellen der Roll-out-Sequenz verwendet haben.

Fügen Sie dem Block das folgende Feld hinzu. Sie können das Feld an einer beliebigen Stelle einfügen, außer zwischen den stages-Blöcken, die aufeinanderfolgen müssen:

min_control_plane_version = "CONTROL_PLANE_VERSION"

Ersetzen Sie CONTROL_PLANE_VERSION durch die Version, die eingeführt werden soll. Sie können eine bestimmte Version auswählen, z. B. 1.34.7-gke.1055000, oder einen Versionsalias verwenden. Weitere Informationen finden Sie unter Clusterversion angeben.

Wenn Sie dieses Feld bereits zum Einführen einer Steuerungsebenenversion verwendet haben, bleibt es im Block. Ersetzen Sie die zuvor eingeführte Version durch die CONTROL_PLANE_VERSION, die Sie dieses Mal einführen möchten.

Version auf den Knoten in einer Roll-out-Sequenz bereitstellen

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME \
    --node-version="NODE_VERSION"

Ersetzen Sie Folgendes:

  • ROLLOUT_SEQUENCE_NAME: Der Name der Rollout-Sequenz.
  • NODE_VERSION: die Version, die eingeführt werden soll, z. B. 1.34.7-gke.1055000.

Terraform

Wenn Sie Terraform zum Verwalten Ihrer Roll-out-Sequenz verwenden, können Sie eine bestimmte Version bereitstellen, indem Sie den Block ergänzen, den Sie zum Erstellen der Roll-out-Sequenz verwendet haben.

Fügen Sie dem Block das folgende Feld hinzu. Sie können das Feld an einer beliebigen Stelle einfügen, außer zwischen den stages-Blöcken, die aufeinanderfolgen müssen:

min_node_version = "NODE_VERSION"

Ersetzen Sie NODE_VERSION durch die Version, die bereitgestellt werden soll, z. B. 1.34.7-gke.1055000. Wenn Sie dieses Feld bereits zum Einführen einer Knotenversion verwendet haben, bleibt es im Block. Ersetzen Sie die zuvor bereitgestellte Version durch die NODE_VERSION, die Sie dieses Mal bereitstellen möchten.

Status eines Roll-outs prüfen

Nachdem Sie eine Roll-out-Sequenz konfiguriert haben, erstellt das System automatisch Rollout-Objekte, um Upgrades zu verwalten. Sie können den Fortschritt dieser Objekte mit Google Cloud CLI-Befehlen beobachten und verfolgen.

Einführungen auflisten

Führen Sie den folgenden Befehl aus, um alle aktiven und vergangenen Roll-outs in Ihrem Hostprojekt für die Roll-out-Sequenz aufzulisten:

gcloud container fleet rollouts list --project=HOST_PROJECT_ID

Ersetzen Sie HOST_PROJECT_ID durch die ID des Hostprojekts für die Einführungssequenz.

Sie können das Flag --project=HOST_PROJECT_ID weglassen, wenn Sie sich bereits in dem Projekt befinden, in dem Ihre Roll-out-Sequenz gehostet wird.

Die Ausgabe sieht etwa so aus:

NAME                                              STATE      CREATE_TIME
05eb251e4f19269e23-node-1-33-5-gke-1201000-t7mqd  COMPLETED  2025-10-30T20:07:46
05eb251e4f19269e23-kcp-1-33-5-gke-1201000-djwst   COMPLETED  2025-10-30T18:07:06
05eb251e4f19269e23-node-1-33-5-gke-1125000-6bxvu  COMPLETED  2025-10-23T17:46:54
05eb251e4f19269e23-kcp-1-33-5-gke-1125000-2f6ct   RUNNING    2025-10-23T16:41:33

In der vorherigen Ausgabe beziehen sich Rollout-Namen, die kcp enthalten, auf Upgrades der Steuerungsebene und Namen, die node enthalten, auf Knotenupgrades. Das Segment des Roll-out-Namens nach kcp oder node wird aus der GKE-Version abgeleitet.

Roll-out beschreiben

Wenn Sie detaillierte Informationen zu einem bestimmten Roll-out abrufen möchten, einschließlich der Zielversion, des Status und der Cluster, die aktualisiert wurden, verwenden Sie den Befehl describe mit der Roll-out-ID, die Sie mit dem vorherigen Befehl abgerufen haben:

gcloud container fleet rollouts describe ROLLOUT_ID \
  --project=HOST_PROJECT_ID

Ersetzen Sie Folgendes:

  • ROLLOUT_ID: Die Rollout-ID, die Sie beim Auflisten der Rollouts erhalten haben.
  • HOST_PROJECT_ID: die Projekt-ID, unter der Ihre Rollout-Sequenz gehostet wird.

Beispiel:

gcloud container fleet rollouts describe 927e9a989930cf3b55-kcp-1-32-4-gke-1106006 \
  --project=my-hostfleet

Die Ausgabe sieht etwa so aus:

createTime: '2025-05-26T11:47:29.909959672Z'
membershipStates:
  projects/dev-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T12:20:55.601542481Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-1234567890-abcdefg-hijklm-nopqrst
      state: SUCCEEDED
    stageAssignment: 1
  projects/dev-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T12:22:57.151203493Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-2
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-987654321-ghijkl-mno-pqr-stu-vwxyz
      state: SUCCEEDED
    stageAssignment: 1
  projects/prod-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T13:03:34.134308942Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-567891234-efghij-klm-nopq-rstu-vwxyz
      state: SUCCEEDED
    stageAssignment: 2
  projects/prod-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T13:06:34.025261641Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-765432198-01a7b896-67c2-523-6fjjh4-icmdydh
      state: SUCCEEDED
    stageAssignment: 2
name: projects/user-hostfleet/locations/global/rollouts/05eb251e4f19269e23-kcp-1-32-4-gke-1106006
rolloutSequence: projects/project-id/locations/global/rolloutSequences/my-sequence
state: COMPLETED
updateTime: '2025-07-22T07:36:51.052691989Z'
versionUpgrade:
  desiredVersion: 1.32.4-gke.1106006
  type: TYPE_CONTROL_PLANE
stages:
- state: COMPLETED
  endTime: '2025-05-26T12:22:28.828506491Z'
  stageNumber: 1
  startTime: '2025-05-26T11:48:28.772658427Z'
  soakDuration: 600s
- state: COMPLETED
  endTime: '2025-05-26T13:06:20.026390832Z'
  stageNumber: 2
  startTime: '2025-05-26T12:32:38.419372153Z'
  soakDuration: 600s

Statusinformationen für einen Rollout

Wenn Sie einen Roll-out beschreiben, geben die Felder stages und membershipStates der Ausgabe den Fortschrittsstatus der einzelnen Phasen bzw. der einzelnen Cluster innerhalb dieser Phase an.

In der folgenden Tabelle sind die möglichen Status einer Phase aufgeführt:

Status Beschreibung
PENDING Das Upgrade hat für diese Phase noch nicht begonnen.
RUNNING Das Upgrade für diese Phase wird ausgeführt. Wenn Sie ein Wartungsfenster für die Cluster in der Phase konfiguriert haben, wartet GKE, bis das Fenster geöffnet wird, bevor die Cluster aktualisiert werden.
SOAKING Auf allen Clustern in dieser Phase wurde das Upgrade abgeschlossen und die Phase befindet sich im konfigurierten Betriebszeitraum.
FORCED_SOAKING Das Upgrade dauerte länger als die maximale Upgrade-Zeit (30 Tage) und wurde daher von GKE in die Betriebsphase übertragen. Das Upgrade wird auf allen verbleibenden Clustern fortgesetzt.
COMPLETED Die Phase ist abgeschlossen und der Roll-out wird in der nächsten Phase fortgesetzt.

In der folgenden Tabelle sind die möglichen Status eines Clusters in einer Sequenz aufgeführt:

Status Beschreibung
PENDING Das Upgrade steht für diesen Cluster aus.
INELIGIBLE Dieser Cluster ist für das Upgrade nicht berechtigt, möglicherweise aufgrund einer Versionsabweichung. Der Grund für die fehlende Berechtigung wird in der Ausgabe angegeben.
RUNNING Das Upgrade wird auf diesem Cluster ausgeführt.
SUCCEEDED Das Upgrade wurde auf diesem Cluster abgeschlossen.
FAILED Das Upgrade für diesen Cluster ist fehlgeschlagen. Bei fehlgeschlagenen Zielen wird die Ausführung unbegrenzt oft wiederholt, solange sich die Phase im Status RUNNING oder FORCED_SOAKING befindet.

Roll-out verwalten

In den folgenden Abschnitten finden Sie eine Anleitung zum Verwalten eines einzelnen Roll-outs. Weitere Informationen zum Verwalten eines Roll-outs und zu den entsprechenden Aktionen, die Sie ausführen können, finden Sie unter Roll-out verwalten.

Wenn Sie eine gesamte Roll-out-Sequenz und nicht nur einen bestimmten Roll-out verwalten möchten, lesen Sie den folgenden Abschnitt Roll-out-Sequenz verwalten.

Roll-out pausieren

Sie können ein aktives Rollout pausieren. Weitere Informationen zu dieser Aktion finden Sie unter Rollout pausieren.

Führen Sie den folgenden Befehl aus, um ein Rollout zu pausieren:

gcloud container fleet rollouts pause ROLLOUT_ID

Ersetzen Sie ROLLOUT_ID durch die ID des Roll-outs, den Sie pausieren möchten. Informationen zum Abrufen der Rollout-IDs für die Rollouts in Ihrer Rollout-Sequenz finden Sie unter Rollouts auflisten.

Roll‑out fortsetzen

Sie können einen pausierten Roll-out fortsetzen, der seit weniger als 90 Tagen pausiert ist. Weitere Informationen zu dieser Aktion finden Sie unter Rollout fortsetzen.

Führen Sie den folgenden Befehl aus, um ein pausiertes Rollout fortzusetzen:

gcloud container fleet rollouts resume ROLLOUT_ID

Ersetzen Sie ROLLOUT_ID durch die ID des Roll-outs, den Sie fortsetzen möchten. Informationen zum Abrufen der Rollout-IDs für die Rollouts in Ihrer Rollout-Sequenz finden Sie unter Rollouts auflisten.

Rollout abbrechen

Sie können einen Roll-out abbrechen, auch wenn er aktiv oder pausiert ist. Rollouts für obligatorische automatische Upgrades können nicht abgebrochen werden. Weitere Informationen zum Abbrechen von Rollouts finden Sie unter Rollout abbrechen.

Führen Sie den folgenden Befehl aus, um ein Rollout abzubrechen:

gcloud container fleet rollouts cancel ROLLOUT_ID

Ersetzen Sie ROLLOUT_ID durch die ID des Roll-outs, den Sie abbrechen möchten. Informationen zum Abrufen der Rollout-IDs für die Rollouts in Ihrer Rollout-Sequenz finden Sie unter Rollouts auflisten.

Roll-out-Phase abschließen

Sie können eine Roll-out-Phase abschließen, wenn Sie bereit sind, mit Upgrades in der nächsten Phase fortzufahren. Weitere Informationen zu dieser Aktion finden Sie unter Rollout-Phase abschließen.

Führen Sie den folgenden Befehl aus, um eine Rollout-Phase abzuschließen:

gcloud container fleet rollouts force-complete-stage ROLLOUT_ID \
    --stage=STAGE

Ersetzen Sie Folgendes:

  • ROLLOUT_ID: die ID des Roll-outs, bei dem Sie eine Phase abschließen möchten. Informationen zum Abrufen der Rollout-IDs für die Rollouts in Ihrer Rollout-Sequenz finden Sie unter Rollouts auflisten.
  • STAGE: die Phase, die Sie jetzt abschließen möchten. Wenn Sie beispielsweise die zweite Phase abschließen möchten, geben Sie 2 ein. Die Phase muss laufen oder sich im Soak-Modus befinden, damit dieser Befehl verwendet werden kann.

Cluster in einer Roll-out-Sequenz für ein bestimmtes Roll-out ignorieren

Sie können GKE anweisen, einen Cluster in einer Roll-out-Sequenz zu ignorieren, wenn Sie nicht möchten, dass der Cluster im Rahmen eines aktiven Roll-outs aktualisiert wird. Durch diese Aktion wird der Cluster jedoch nicht nur aus aktiven, sondern auch aus zukünftigen Roll-out-Sequenzen entfernt.

Informationen dazu, wie Sie diese Aktion ausführen, um zu verhindern, dass ein Cluster bei einem aktiven Roll-out aktualisiert wird, finden Sie unter Cluster in einer Roll-out-Sequenz ignorieren.

Roll-out-Sequenz verwalten

Sie können automatische Clusterupgrades mit Roll-out-Sequenzierung auf verschiedene Arten steuern, die in den folgenden Abschnitten erläutert werden.

Wenn Sie nur einen Roll-out aus einer Roll-out-Sequenz verwalten möchten, anstatt die gesamte Roll-out-Sequenz und alle zugehörigen Roll-outs, lesen Sie den Abschnitt Roll-out verwalten.

Roll‑out-Sequenzen auflisten

Führen Sie den folgenden Befehl aus, um alle Rollout-Sequenzen in Ihrem Hostprojekt aufzulisten:

gcloud container fleet rolloutsequences list --project=HOST_PROJECT_ID

Ersetzen Sie HOST_PROJECT_ID durch die ID des Hostprojekts für die Einführungssequenz.

Roll-out-Sequenz beschreiben

Führen Sie den folgenden Befehl aus, um die Details einer bestimmten Rollout-Sequenz aufzurufen:

gcloud container fleet rolloutsequences describe ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

Ersetzen Sie Folgendes:

  • ROLLOUT_SEQUENCE_NAME: Der Name der Rollout-Sequenz.
  • HOST_PROJECT_ID: die ID Ihres Hostprojekts für die Einführungssequenz.

Die Ausgabe sieht etwa so aus:

createTime: '2025-10-23T16:40:16.403871189Z'
displayName: my-display-name
name: projects/HOST_PROJECT_ID/locations/global/rolloutSequences/ROLLOUT_SEQUENCE_NAME
stages:
- clusterSelector:
    labelSelector: resource.labels.canary=='true'
  fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 600s
- fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 300s
uid: 5c5b2ac8-9d76-45f9-92ca-5e6bd3fbcaef
updateTime: '2025-10-23T17:11:57.285678399Z'

Auswählen, welche Arten von Upgrades GKE in einer Roll-out-Sequenz durchführt

Standardmäßig führt GKE alle Arten von Cluster-Upgrades in einer Roll-out-Sequenz durch. Sie können den Umfang von Cluster-Upgrades in einer Rollout-Sequenz einschränken, um nur bestimmte Arten von Upgrades durchzuführen. Weitere Informationen finden Sie unter Auswählen der Arten von Upgrades, die GKE in einer Rollout-Sequenz ausführt.

So legen Sie fest, welche Arten von Upgrades GKE in einer Roll-out-Sequenz ausführen soll:

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --auto-rollout-scope=TYPES_OF_UPGRADES

Ersetzen Sie Folgendes:

  • ROLLOUT_SEQUENCE_NAME: Der Name der Rollout-Sequenz.
  • TYPES_OF_UPGRADES: Die Liste der durchzuführenden Upgrades. Folgende Werte sind möglich:

    Wenn Sie beispielsweise nur Patch-Versionen in der Rollout-Sequenz bereitstellen möchten, geben Sie die Konfiguration control-plane-patch,nodes-patch an.

Terraform

Wenn Sie Terraform zum Verwalten Ihrer Roll-out-Sequenz verwenden, können Sie festlegen, welche Arten von Upgrades GKE in dieser Roll-out-Sequenz ausführen soll. Dazu fügen Sie dem Block, den Sie zum Erstellen der Roll-out-Sequenz verwendet haben, Folgendes hinzu:

Fügen Sie dem Block das folgende Feld hinzu. Sie können das Feld an einer beliebigen Stelle einfügen, außer zwischen den stages-Blöcken, die aufeinanderfolgen müssen:

auto_upgrade_config {
  rollout_creation_scope {
    upgrade_types = [
      UPGRADE_TYPES
    ]
  }
}

Ersetzen Sie UPGRADE_TYPES durch die Liste der durchzuführenden Upgrades. Das kann eine oder mehrere der folgenden Optionen sein (jeweils in Anführungszeichen):

Wenn Sie beispielsweise nur Patch-Versionen in der Rollout-Sequenz bereitstellen möchten, geben Sie die Konfiguration upgrade_types = ["CONTROL_PLANE_PATCH", "NODE_PATCH"] an.

Wenn Sie upgrade_types = [] festlegen, führt GKE in der Roll-out-Sequenz keine Clusterupgrades aus, mit Ausnahme von Roll-outs für obligatorische automatische Upgrades.

Wenn Sie zum Standardverhalten zurückkehren möchten, bei dem GKE alle Arten von Cluster-Upgrades in der Roll-out-Sequenz ausführt, geben Sie die upgrade_types = ["CONTROL_PLANE_PATCH", "CONTROL_PLANE_MINOR", "NODE_PATCH", "NODE_MINOR"]-Konfiguration an. Alternativ können Sie den auto_upgrade_config-Block aus Ihrer Terraform-Konfiguration entfernen.

Roll-out-Sequenz ändern

Sie können eine vorhandene Einführungssequenz nach der Erstellung ändern. Ändern Sie Ihre Roll-out-Sequenz entsprechend der folgenden Anleitung, je nachdem, wie Sie sie verwalten.

gcloud

Wenn Sie die gcloud CLI zum Verwalten der Rollout-Sequenz verwenden, können Sie die YAML-Konfigurationsdatei bearbeiten, in der Sie die Sequenz definiert haben. Sie können beispielsweise die Betriebszeit für eine Phase aktualisieren oder die Phase aktualisieren, um die Reihenfolge der Upgrades zu ändern. Nachdem Sie die Datei bearbeitet haben, wenden Sie die Änderungen an.

Wenn Sie die ursprüngliche Rollout-Sequenz beispielsweise in einer Datei mit dem Namen rollout-sequence.yaml definiert haben, bearbeiten Sie die Datei nach Bedarf. Führen Sie dann den folgenden Befehl aus:

gcloud container fleet rolloutsequences update test-rollout-sequence \
  --display-name="My Updated Rollout Sequence" \
  --stage-config=rollout-sequence.yaml

Terraform

Wenn Sie Terraform zum Verwalten Ihrer Roll-out-Sequenz verwenden, ändern Sie die Roll-out-Sequenz, indem Sie den Block ändern, den Sie zum Erstellen der Roll-out-Sequenz verwendet haben.

Cluster in einer Roll-out-Sequenz ignorieren

Sie können GKE anweisen, einen Cluster in einer Roll-out-Sequenz zu ignorieren. Sie können einen oder mehrere Cluster in einer Bereitstellungssequenz ignorieren. Weitere Informationen finden Sie unter Cluster in einer Rollout-Sequenz ignorieren.

So weisen Sie GKE an, einen Cluster in einer Roll-out-Sequenz zu ignorieren:

  1. Fügen Sie dem Cluster, der von GKE ignoriert werden soll, ein Label hinzu oder verwenden Sie ein vorhandenes Label. Sie können beispielsweise festlegen, dass GKE entweder ein Label wie status oder ein Label mit einem bestimmten Wert wie status=quarantine ignoriert.
  2. Legen Sie die Roll-out-Reihenfolge so fest, dass Cluster mit diesem Label ignoriert werden. Führen Sie dazu die folgenden Schritte aus, je nachdem, wie Sie Ihre Rollout-Sequenz verwalten:

    gcloud

    Führen Sie dazu diesen Befehl aus:

    gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
        --ignored-clusters-selector="resource.labels.LABEL_TO_IGNORE"
    

    Ersetzen Sie Folgendes:

    • ROLLOUT_SEQUENCE_NAME: Der Name der Rollout-Sequenz.
    • LABEL_TO_IGNORE: Der Name des Labels für Cluster, die GKE bei der Bereitstellungssequenz ignorieren soll.

    Terraform

    Wenn Sie Terraform zum Verwalten der Roll-out-Sequenz verwenden, fügen Sie dem Block, mit dem Sie die Roll-out-Sequenz erstellt haben, das folgende Feld hinzu. Sie können das Feld an einer beliebigen Stelle einfügen, außer zwischen den stages-Blöcken, die aufeinanderfolgen müssen:

    ignored_clusters_selector {
      label_selector = "resource.labels.LABEL_TO_IGNORE"
    }
    

    Ersetzen Sie LABEL_TO_IGNORE durch den Namen des Labels für Cluster, die GKE bei der Rollout-Sequenz ignorieren soll.

In dieser Anleitung wird GKE so konfiguriert, dass ein Labeltyp in der Roll-out-Sequenz ignoriert wird. Wenn Sie mehrere Labels ignorieren oder komplexere Ausdrücke dafür erstellen möchten, wie Cluster mit bestimmten Labels ignoriert werden sollen, können Sie Werte für dieses Feld mit der CEL-Ausdruckssyntax übergeben. Alle Labels müssen das Präfix resource.labels. verwenden.

Cluster wieder einer Roll-out-Sequenz hinzufügen

Wenn Sie der Anleitung im vorherigen Abschnitt für GKE gefolgt sind, um einen Cluster in einer Roll-out-Sequenz zu ignorieren, können Sie diese Aktion rückgängig machen. Wenn Sie möchten, dass GKE Cluster nicht mehr ignoriert, entfernen Sie den Ignore-Selektor. Folgen Sie dazu der Anleitung für die Verwaltung Ihrer Roll-out-Sequenz:

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --clear-ignored-clusters-selector

Ersetzen Sie ROLLOUT_SEQUENCE_NAME durch den Namen der Rollout-Sequenz.

Mit diesem Befehl wird der Ignore-Selektor zurückgesetzt, sodass GKE keine Cluster in der Sequenz ignoriert.

Terraform

Wenn Sie Terraform zum Verwalten der Bereitstellungssequenz verwenden, entfernen Sie den ignored_clusters_selector-Block aus dem Block, mit dem Sie die Bereitstellungssequenz erstellt haben.

Wenn Sie möchten, dass GKE einen bestimmten Cluster nicht ignoriert, entfernen Sie die Labels aus dem Cluster.

Roll-out-Sequenz löschen

Führen Sie den folgenden Befehl aus, um eine Rollout-Sequenz zu löschen:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

Ersetzen Sie Folgendes:

  • ROLLOUT_SEQUENCE_NAME durch den Namen der Rollout-Sequenz.
  • HOST_PROJECT_ID durch die ID des Hostprojekts für die Bereitstellungssequenz.

Wenn Sie eine Roll-out-Sequenz löschen, werden alle laufenden Roll-outs für diese Sequenz abgebrochen. Die Cluster, die Teil der Sequenz waren, kehren zum standardmäßigen automatischen Upgradeverhalten für die registrierte Release-Version zurück.

Vorhandene Roll-out-Sequenz zur Verwendung benutzerdefinierter Phasen migrieren

Wenn Sie die flottenbasierte Version der Roll-out-Sequenzierung verwenden, können Sie zu einer Sequenz mit benutzerdefinierten Phasen migrieren, indem Sie eine neue RolloutSequence erstellen, die auf Ihre vorhandenen Flotten verweist. Diese Version der Bereitstellungssequenzierung wird nicht in der Cloud de Confiance unterstützt.

So migrieren Sie Ihre Einführungssequenz:

  1. Optional können Sie vor der Migration der Sequenz eine Kopie der aktuellen Konfiguration der Rollout-Sequenz erstellen. So erstellen Sie eine Kopie der Konfiguration:

    Wir empfehlen, die sequenzielle Einführung auf Flottenbasis nicht zu löschen, damit Sie bei Bedarf einfacher zur vorherigen Version der sequenziellen Einführung zurückkehren können. Sie müssen die flottenbasierte Roll-out-Sequenz nicht löschen, damit die Roll-out-Sequenz mit benutzerdefinierten Phasen funktioniert, da GKE nur die Roll-out-Sequenz mit benutzerdefinierten Phasen berücksichtigt, wenn beide vorhanden sind.

  2. Erstellen Sie ein dediziertes Cloud de Confiance by S3NS -Projekt zum Hosten Ihrer Roll-out-Sequenz. Dieses Projekt ist in der Regel nicht Teil der Sequenz. Das heißt, das Projekt enthält keine Flotten oder Cluster, die Teil der Sequenz sind.

  3. Wenn die Rollout-Sequenz bestimmte Cluster in einer Flotte umfassen soll, fügen Sie diesen Clustern Labels hinzu. Dieser Schritt ist optional.

  4. Folgen Sie der Anleitung unter Rollout-Sequenz mit benutzerdefinierten Phasen erstellen.

    Im folgenden Manifest mit dem Namen rollout-sequence-migrate.yaml wird beispielsweise auf die vorhandenen Flotten in einer vorherigen Rollout-Sequenz verwiesen. Dieses Manifest beschreibt drei Phasen, darunter eine canary-Phase in der prod-Flotte:

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 604800s
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
      label-selector: canary=true
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
    

Unmittelbar nachdem Sie eine neue RolloutSequence für Ihre Flotten definiert haben, beginnt GKE mit dem Upgrade der Flotten gemäß der neuen Reihenfolge und entfernt die vorherige Konfiguration.

Roll-out-Sequenz mit benutzerdefinierten Phasen zur vorherigen Roll-out-Sequenz migrieren

In diesem Abschnitt wird beschrieben, wie Sie von der Roll-out-Sequenzierung mit benutzerdefinierten Phasen zur flottenbasierten Roll-out-Sequenzierung zurückkehren. Dazu müssen Sie die neue RolloutSequence löschen und Ihre ursprüngliche flottenbasierte Konfiguration wiederherstellen.

Upgrade in falscher Reihenfolge während der Migration verhindern

Um unbeabsichtigte oder ungeordnete Upgrades zu vermeiden, während Sie die Sequenz neu konfigurieren, wenden Sie einen Wartungsausschluss auf Ihre Produktionscluster an. Durch diesen Schritt werden alle automatischen Upgrades für diese Cluster vorübergehend pausiert. Sie können beispielsweise einen Wartungsausschluss vom Typ no upgrades für Ihre Produktionscluster konfigurieren.

Roll-out-Sequenz löschen

Löschen Sie das RolloutSequence-Objekt, mit dem Ihre Cluster verwaltet werden. Durch das Löschen wird die Funktion für benutzerdefinierte Phasen deaktiviert.

Führen Sie den folgenden Befehl aus, um RolloutSequence zu löschen:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME

Ersetzen Sie ROLLOUT_SEQUENCE_NAME durch den Namen der Rollout-Sequenz.

Frühere Konfiguration der Rollout-Sequenz wiederherstellen (ohne benutzerdefinierte Phasen)

Nachdem Sie die RolloutSequence gelöscht haben, können Sie Ihre ursprüngliche flottenbasierte Konfiguration wiederherstellen. Dazu müssen Sie die clusterupgrade-Funktionen mit ihren ursprünglichen Parametern neu erstellen, einschließlich der upstreamFleet-Links und der Einwirkzeiten für jede Flotte in Ihrer Sequenz. Weitere Informationen finden Sie unter Roll-out-Sequenz erstellen.

Wartungsausschlüsse entfernen

Nachdem Sie die ursprüngliche Konfiguration für die Roll-out-Sequenzierung auf Flottenbasis wiederhergestellt haben, entfernen Sie den Wartungsausschluss, den Sie im ersten Schritt dieses Abschnitts angewendet haben. GKE setzt die automatischen Upgrades fort, die jetzt durch Ihre wiederhergestellte flottenbasierte Sequenz gesteuert werden.

Weitere Informationen