Verwenden Sie stufenweise Rollouts zur Steuerung der Azure Kubernetes Fleet Manager-Ressourcenplatzierungen

Gilt für: ✔️ Flottenmanager mit Hubcluster

Azure Kubernetes Fleet Manager-Platzierungsrollouts bieten einen kontrollierten Ansatz für die Bereitstellung von Kubernetes-Workloads in mehreren Mitgliedsclustern mithilfe eines phasenweisen Prozesses. Um das Risiko zu minimieren, wird dieser Ansatz sequenziell für gezielte Cluster bereitgestellt, mit optionalen Wartezeiten und Genehmigungsgaten zwischen Phasen.

In diesem Artikel erfahren Sie, wie Sie schrittweise Aktualisierungsläufe erstellen und ausführen, um Arbeitsauslastungen bei Bedarf schrittweise bereitzustellen und auf frühere Versionen zurückzurollen.

Azure Kubernetes Fleet Manager unterstützt zwei Bereiche für mehrstufige Updates:

  • Clusterbereich: Verwenden Sie ClusterStagedUpdateRun mit ClusterResourcePlacement für Flotten-Administratoren, die Änderungen auf Infrastrukturebene verwalten.
  • Namespace-Bereich: Verwenden Sie StagedUpdateRun mit ResourcePlacement für Anwendungsteams, die Rollouts innerhalb ihrer spezifischen Namespaces verwalten.

Das Beispiel in diesem Artikel veranschaulicht die Verwendung eines Rollouts, das mit clusterbezogenen Ressourcen ausgeführt wird. Auf den Namespace beschränkt verhält es sich bei namespaceinternen Ressourcen genau gleich.

Bevor Sie anfangen

  • Legen Sie die folgenden Umgebungsvariablen fest:

    export SUBSCRIPTION_ID=<subscription>
    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export MEMBER_CLUSTER_1=aks-member-1
    export MEMBER_CLUSTER_2=aks-member-2
    
  • Sie müssen die Azure CLI installiert haben, um die Schritte in diesem Artikel auszuführen. Informationen zum Installieren oder Aktualisieren finden Sie unter Installieren des Azure CLI.

  • Sie benötigen die Erweiterung fleet Azure CLI. Sie können das SDK mithilfe des folgenden Befehls installieren:

    az extension add --name fleet
    

    Führen Sie den Befehl az extension update aus, um ein Update auf die neueste Version der Erweiterung durchzuführen:

    az extension update --name fleet
    
  • Wenn Sie noch keine Kubernetes-CLI (kubectl) besitzen, können Sie sie mithilfe dieses Befehls installieren:

    az aks install-cli
    

Konfigurieren der Umgebung

In diesem Artikel wird ein Flottenmanager mit einem Hubcluster und zwei Mitgliedsclustern verwendet. Wenn Sie keinen Flottenmanager haben, folgen Sie der Schnellstartanleitung , um einen Flottenmanager mit einem Hubcluster zu erstellen. Fügen Sie dann Azure Kubernetes Service (AKS) oder Azure Arc-fähige Kubernetes-Cluster als Mitglieder hinzu.

Stellen Sie sicher, dass die Mitgliedscluster mit den folgenden Bezeichnungen versehen sind, sodass es in jeder Phase des Rollouts ein Cluster gibt.

Mitgliedsname labels
aks-member-1 environment=canary
aks-member-2 environment=staging

Weisen Sie den Member-Clustern mithilfe des folgenden Befehls Labels zu.

az fleet member update \
    --resource-group ${GROUP} \
    --fleet-name ${FLEET} \
    --name ${MEMBER_CLUSTER_1} \
    --labels environment=canary
az fleet member update \
    --resource-group ${GROUP} \
    --fleet-name ${FLEET} \
    --name ${MEMBER_CLUSTER_2} \
    --labels environment=staging
  1. Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.

  2. Wählen Sie im Dienstmenü unter "Einstellungen"die Option "Mitgliedercluster" aus.

  3. Wählen Sie in der Mitgliederclusterliste einen Cluster aus. Wählen Sie dann im Aktionsmenü "Bezeichnungen bearbeiten" aus.

  4. Fügen Sie dem Mitgliedscluster die entsprechende Beschriftung hinzu, und wählen Sie dann Übernehmen aus.

  5. Wiederholen Sie diesen Vorgang für jeden Mitgliedscluster.

    Screenshot des Azure Portals mit einer neuen Bezeichnung, die einem Azure Kubernetes Fleet Manager-Mitgliedercluster hinzugefügt wird.

Kubernetes-Workload für die Bereitstellung vorbereiten

In diesem Schritt stellen Sie eine Kubernetes-Workload auf dem Hub-Cluster von Fleet Manager bereit, damit Sie sie über eine gestaffelte Bereitstellung auf die Member-Cluster verteilen können.

  1. Rufen Sie die kubeconfig-Datei des Kubernetes Fleet Hub-Clusters mit dem Befehl az fleet get-credentials ab:

    az fleet get-credentials \
        --resource-group ${GROUP} \
        --name ${FLEET}
    

    Die Ausgabe sollte etwa wie folgt aussehen.

    Merged "hub" as current context in /home/fleet/.kube/config
    

    Note

    Wenn Sie einen Fehler vom Typ InvalidHubOperation mit der Meldung erhalten, dass die Flotte hublos ist, fügen Sie einen Hubcluster hinzu. Weitere Informationen finden Sie unter Hub-Clustertyp aktualisieren.

  2. Erstellen Sie einen Namespace im Fleet Manager-Hubcluster.

    kubectl create namespace test-app
    
  3. Speichern Sie das folgende YAML als test-workload.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: test-app
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: mcr.microsoft.com/azurelinux/base/nginx:1.28@sha256:3352a36cbcab4708883a3e77b64f64159e11e1aab358c010e1c4e465dbfb4f57
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
      namespace: test-app
    spec:
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
      type: LoadBalancer
    
  4. Stellen Sie die Testarbeitslast mithilfe von kubectl im Fleet Manager-Hubcluster bereit.

    kubectl apply -f test-workload.yaml
    
  1. Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.

  2. Wählen Sie im Dienstmenü unter "Flottenressourcen" die Option "Namespaces>+ Erstellen" aus.

    Note

    Wenn Flottenressourcen nicht angezeigt werden, verfügt Ihr Flottenmanager nicht über einen Hubcluster. Weitere Informationen zum Hinzufügen eines solchen Typs finden Sie unter Hub-Cluster-Typ aktualisieren.

  3. Wählen Sie im Menü "Namespace" aus, geben Sie einen Namen ein, und wählen Sie dann "Erstellen" aus.

    Screenshot des Azure Portals mit einem Namespace namens

    Nach ein paar Momenten wird die Seite aktualisiert, und der Namespace wird in der Liste der Namespaces im Fleet Manager-Hubcluster angezeigt. Es ist jetzt bereit, alle Ressourcen zu hosten, die Sie über Mitgliedercluster verteilen möchten.

  4. Wählen Sie oben in der Namespaceliste +Create>Apply a YAML aus, und verwenden Sie die folgenden Beispiele.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: test-app
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: mcr.microsoft.com/azurelinux/base/nginx:1.28@sha256:3352a36cbcab4708883a3e77b64f64159e11e1aab358c010e1c4e465dbfb4f57
            ports:
            - containerPort: 80
    
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
      namespace: test-app
    spec:
      selector:
        app: nginx
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
      type: LoadBalancer
    

    Kopieren Sie die Beispiele und fügen Sie sie ein, und wenden Sie sie einzeln an, wie in der folgenden Abbildung gezeigt.

    Screenshot des Azure-Portals, der das Dialogfeld „Mit YAML anwenden“ zeigt, das mit einer Bereitstellung ausgefüllt ist, die bereit ist, auf den Fleet Manager-Hubcluster angewendet zu werden.

    Der Namespace und seine Workloads sind nun zur Verteilung auf Mitgliedscluster bereit. Die Bereitstellung und der Dienst werden nicht im Fleet Manager-Hubcluster geplant.

Clusterreihenfolge mithilfe einer Rolloutstrategie definieren

Erstellen Sie eine Rolloutstrategie, um die Reihenfolge zu definieren, in der Cluster die Ressourcen erhalten. Sie können vor oder nach jeder Stufe auch weitere Kontrollen wie Wartezeiten und Genehmigungen hinzufügen. Weitere Informationen finden Sie unter Definieren von wiederverwendbaren Rolloutstrategien für die Ressourcenplatzierung in Azure Kubernetes Fleet Manager.

  1. Speichern Sie das folgende YAML als crp-two-stages-strategy.yaml.

    apiVersion: placement.kubernetes-fleet.io/v1
    kind: ClusterStagedUpdateStrategy
    metadata:
      name: two-stages-strategy
    spec:
      stages:
        - name: staging
          labelSelector:
            matchLabels:
              environment: staging
          afterStageTasks:
            - type: TimedWait
              waitTime: 4m
        - name: canary
          labelSelector:
            matchLabels:
              environment: canary
          beforeStageTasks:
            - type: Approval
    
  2. Wenden Sie das Strategiemanifest auf den Fleet Manager Hub Cluster an.

    kubectl apply -f crp-two-stages-strategy.yaml
    
  3. Überprüfen Sie den Status der Strategieressource.

    kubectl get clusterstagedupdatestrategy two-stages-strategy
    

    Die Ausgabe sollte etwa wie folgt aussehen.

    NAME                  AGE
    two-stages-strategy   47m
    

Verwenden Sie den folgenden Prozess, um eine Strategie zu erstellen, die die beiden Phasen StagingCanary und eine Wartezeit von 4 Minuten und eine Vorabgenehmigung für die Canary Phase enthält.

  1. Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.

  2. Wählen Sie im Service-Menü unter Flottenressourcen die Option Ressourcenplatzierungen>Strategien für die gestaffelte Ausrollung und dann Erstellen aus.

  3. Geben Sie einen Namen für den Server ein.

  4. Wählen Sie den Strategiebereich aus, und wählen Sie entweder " Clusterbereich " oder "Namespacebereich" aus.

    • Wählen Sie für mit Namespace-Bereich den vorhandenen Namespace im Fleet Manager-Hubcluster aus, in dem die zu verteilenden Kubernetes-Ressourcen vorbereitet werden.
  5. Wählen Sie Phase erstellen aus, und geben Sie Folgendes ein:

    • Der Phasenname - die Stufe benennen - muss für alle Phasennamen in der Strategie eindeutig sein.
    • (Optional) Phasengenehmigungen – Wählen Sie diese Option aus, wenn Sie vor dem Start dieser Phase oder nach Abschluss einer Genehmigung auf eine Genehmigung warten möchten.
    • (Optional) Warten Sie nach der Phase – wählen Sie diese Option aus, wenn Sie eine Pause definieren möchten, bevor Sie zur nächsten Phase wechseln.
    • (Optional) Wartezeit – Wählen Sie eine vordefinierte Dauer aus, oder geben Sie einen benutzerdefinierten Wert in Sekunden ein.
    • Cluster-Label-Selektor – Wählen Sie das Label eines vorhandenen Mitgliedsclusters aus, das zur Auswahl von Clustern für diese Phase verwendet werden soll.
    • (Optional) Bezeichnung für die Clusterreihenfolge – Wählen Sie das Label eines vorhandenen Mitgliedsclusters aus, mit der die Cluster innerhalb der Stufe angeordnet werden.
    • (Optional) Gleichzeitigkeit der Phase - legt fest, wie viele Cluster gleichzeitig in der aktuellen Phase aktualisiert werden sollen.

    Screenshot des Azure-Portals mit einer neuen Phase, die zu einer Azure Kubernetes Fleet Manager-Platzierungsstrategie hinzugefügt wird.

    Note

    Die maximale Anzahl von Stufen in jeder Strategie beträgt 31.

  6. Wiederholen Sie den Vorgang, bis alle Phasen der Strategie hinzugefügt werden. Wählen Sie "Erstellen" aus, um die Strategie zu erstellen.

    Ein Screenshot des Azure-Portals, der eine Azure Kubernetes Fleet Manager-Platzierungsstrategie für die stufenweise Einführung mit zwei Phasen zeigt, deren Erstellung noch aussteht.

  7. Die Seite wird aktualisiert, und die Liste zeigt die neu erstellte Strategie an.

    Screenshot des Azure Portals mit einer Liste der Azure Kubernetes Fleet Manager-Platzierungsstrategien.

Cluster mithilfe einer Ressourcenplatzierung auswählen

Verwenden Sie eine Ressourcenplatzierung, um die Ressourcen auszuwählen, die verteilt werden sollen, und definieren Sie die Richtlinie, um auszuwählen, welche Cluster die Ressourcen erhalten.

Wenn Sie ein mehrstufiges Rollout verwenden möchten, legen Sie den Rollouttyp strategy so External fest, dass Sie die Ressourcenverteilung über ein mehrstufiges Rollout steuern können, das Sie später definieren.

  1. Speichern Sie das folgende YAML als crp-distribute-workload-ext.yaml.

    apiVersion: placement.kubernetes-fleet.io/v1
    kind: ClusterResourcePlacement
    metadata:
      name: distribute-test-app
    spec:
      resourceSelectors:
        - group: ""
          kind: Namespace
          version: v1          
          name: test-app
      policy:
        placementType: PickAll
      strategy:
        type: External
    

    Von Bedeutung

    Wenn Sie den Typ strategy nicht auf External festlegen, beginnt die Ressourcenbereitstellung, sobald Sie das Manifest mit einer RollingUpdate-Strategie anwenden.

  2. Wenden Sie das Platzierungsmanifest auf den Fleet Manager-Hubcluster an.

    kubectl apply -f crp-distribute-workload-ext.yaml
    
  3. Überprüfen Sie den Status der Ressourcenplatzierung.

    kubectl get clusterresourceplacement distribute-test-app
    

    Die Ausgabe sollte etwa wie folgt aussehen.

    NAME                  GEN   SCHEDULED   SCHEDULED-GEN   AVAILABLE   AVAILABLE-GEN   AGE
    distribute-test-app   1     True        1                                           60s
    
  1. Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.

  2. Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option >+ Erstellen" aus.

  3. Konfigurieren Sie auf der Registerkarte Grundlegende Einstellungen die folgenden Optionen:

    • Geben Sie unter "Platzierungsdetails" einen Namen für die Platzierung ein.

    • Lassen Sie unter Ressourcendetails den Geltungsbereich auf clusterweit, und geben Sie die Group Version Kind (GVK) und den Namen der zu verteilenden Ressource ein. Verwenden Sie in diesem Beispiel die folgenden Werte.

      group: ""
      kind: Namespace
      version: v1          
      name: test-app
      
    • Wählen Sie in Mitgliedsclusterauswahl für PlatzierungstypAlle Cluster aus.

    • Wählen Sie für "Rollout" die Option "Extern" aus. Verwenden Sie die Strategie für mehrstufige Updates , um die zuvor erstellte Rolloutstrategie auszuwählen.

    • Lassen Sie das Kontrollkästchen " Rollout automatisch starten " deaktiviert.

    Screenshot des Azure-Portals, der die vollständig ausgefüllte Registerkarte „Grundlagen“ für die clusterbezogene Ressourcenplatzierung zeigt, die eine gestaffelte Updatestrategie für den Rollout verwendet.

  4. Wählen Sie "Weiter" aus, um das resultierende ClusterResourcePlacement Manifest zu überprüfen. Sie können das Manifest bei Bedarf ändern, überprüfen, indem Sie die Option " Überprüfen" (Trockenlauf) verwenden, oder " Überprüfen+ erstellen" auswählen, um mit der endgültigen Bestätigung fortzufahren.

    Screenshot des Azure Portals mit der Registerkarte

  5. Wählen Sie "Erstellen" aus, um die Rolloutausführung zu erstellen, aber nicht zu starten.

    Screenshot des Azure Portals mit der Registerkarte

  6. Die Seite wird aktualisiert, und die Liste " Ressourcenplatzierungen" zeigt die neu erstellte Platzierung an. Es zeigt die Anzahl der ausgewählten Cluster und ob der Flottenplaner die Platzierungsrichtlinie erfüllen kann. Beachten Sie, dass der Rollout-Typ auf "Extern" festgelegt ist.

    Screenshot des Azure Portals mit der Ressourcenplatzierungsliste mit einer einzelnen Ressourcenplatzierung namens

Wenn Sie das Azure Portal verwenden, um eine Platzierung mit einer Rolloutstrategie zu erstellen, wird automatisch ein mehrstufiger Rollout für Sie erstellt.

Verwenden Sie eine gestaffelte Einführung, um die Verteilung zu steuern.

In diesem Artikel erstellen Sie den gestaffelten Rollout mit einem state von Initialize, damit Sie den Rollout dann starten können, wann Sie möchten, anstatt dass der Lauf sofort startet, wenn das Manifest angewendet wird. Setzen Sie den Status auf Run, um stattdessen sofort zu starten.

  1. Speichern Sie das folgende YAML als staged-rollout-test-app.yaml.

    apiVersion: placement.kubernetes-fleet.io/v1
    kind: ClusterStagedUpdateRun
    metadata:
      name: staged-rollout-test-app
    spec:
      placementName: distribute-test-app
      stagedRolloutStrategyName: two-stages-strategy
      state: Initialize
    

    Note

    Wenn Sie den Typ strategy nicht auf External festlegen, beginnt die Ressourcenbereitstellung, sobald Sie das Manifest mit einer RollingUpdate-Strategie anwenden.

  2. Wenden Sie das mehrstufige Rolloutmanifest auf den Fleet Manager-Hubcluster an.

    kubectl apply -f staged-rollout-test-app.yaml
    
  3. Überprüfen Sie den Status der Ressource für die Rollout-Ausführung. Es ist initialisiert, kommt aber nicht voran.

    kubectl get clusterstagedupdaterun staged-rollout-test-app
    

    Die Ausgabe sollte etwa wie folgt aussehen.

    NAME                      PLACEMENT             RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
    staged-rollout-test-app   distribute-test-app                             0                       True                                    101s
    

Verwalten des mehrstufigen Rolloutfortschritts

Sobald Sie alle Ressourcen bereit haben, können Sie jetzt den Rollout von Ressourcen über Mitgliedscluster hinweg steuern.

Starten eines mehrstufigen Rollouts

Um ein mehrstufiges Rollout zu starten, patchen Sie das state Feld in der Spezifikation auf Run.

kubectl patch clusterstagedupdaterun staged-rollout-test-app --type merge -p '{"spec":{"state":"Run"}}'

Überprüfen Sie den Status der Ressource für die Rollout-Ausführung. Es ist initialisiert, kommt aber nicht voran.

kubectl get clusterstagedupdaterun staged-rollout-test-app

Ihre Ausgabe sollte in etwa wie die folgende aussehen, wobei „progressing“ jetzt True ist.

NAME                      PLACEMENT             RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
staged-rollout-test-app   distribute-test-app                             0                       True          True                      36m

Note

Wenn der Rollout eine TimedWait- oder Genehmigungsaufgabe erreicht, wechselt der Fortschrittsstatus zu False. Verwenden Sie describe, um den Grund für die Pause zu bestimmen.

Sehen Sie sich den detaillierten Status des Rollouts an, indem Sie ClusterStagedUpdateRun beschreiben.

kubectl describe clusterstagedupdaterun staged-rollout-test-app

Überprüfen Sie in der Antwort das Status, und sehen Sie sich dabei Conditions und Stages Status an, um zu verstehen, welche Phase und welcher Cluster derzeit verarbeitet werden oder ob derzeit eine TimedWait- oder Approval-Aufgabe aktiv ist.

Name:         staged-rollout-test-app
Namespace:
Labels:       <none>
Annotations:  <none>
API Version:  placement.kubernetes-fleet.io/v1
Kind:         ClusterStagedUpdateRun
Metadata:
  Creation Timestamp:  2026-07-27T04:25:14Z
  Finalizers:
    kubernetes-fleet.io/stagedupdaterun-finalizer
  Generation:        3
  Resource Version:  2684410
  UID:               5e20d0a1-515a-4f1c-b566-89676100a968
Spec:
  Placement Name:                distribute-test-app
  Resource Snapshot Index:
  Staged Rollout Strategy Name:  two-stages-strategy
  State:                         Run
Status:
  Applied Strategy:
    Comparison Option:  PartialComparison
    Type:               ClientSideApply
    When To Apply:      Always
    When To Take Over:  Always
  Conditions:
    Last Transition Time:  2026-07-27T04:25:14Z
    Message:               The UpdateRun initialized successfully
    Observed Generation:   3
    Reason:                UpdateRunInitializedSuccessfully
    Status:                True
    Type:                  Initialized
    Last Transition Time:  2026-07-27T05:01:56Z
    Message:               The update run is making progress
    Observed Generation:   3
    Reason:                UpdateRunProgressing
    Status:                True
    Type:                  Progressing
  Deletion Stage Status:
    Clusters:
    Stage Name:                   kubernetes-fleet.io/deleteStage
  Policy Observed Cluster Count:  2
  Policy Snapshot Index Used:     0
  Resource Snapshot Index Used:   0
  Staged Update Strategy Snapshot:
    Stages:
      After Stage Tasks:
        Type:       TimedWait
        Wait Time:  1h0m0s
      Label Selector:
        Match Labels:
          Environment:  staging
      Max Concurrency:  1
      Name:             staging
      Before Stage Tasks:
        Type:  Approval
      Label Selector:
        Match Labels:
          Environment:  canary
      Max Concurrency:  1
      Name:             canary
  Stages Status:
    After Stage Task Status:
      Type:  TimedWait
    Clusters:
      Cluster Name:  aks-place-member-02-fm
      Conditions:
        Last Transition Time:  2026-07-27T05:01:56Z
        Message:               Cluster update started
        Observed Generation:   3
        Reason:                ClusterUpdatingStarted
        Status:                True
        Type:                  Started
    Conditions:
      Last Transition Time:  2026-07-27T05:01:56Z
      Message:               Clusters in the stage started updating
      Observed Generation:   3
      Reason:                StageUpdatingStarted
      Status:                True
      Type:                  Progressing
    Stage Name:              staging
    Start Time:              2026-07-27T05:01:56Z
    Before Stage Task Status:
      Approval Request Name:  staged-rollout-test-app-before-canary
      Type:                   Approval
    Clusters:
      Cluster Name:  aks-place-member-01-fm
    Stage Name:      canary
Events:              <none>
  1. Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.

  2. Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option " Mehrstufiges Rollout" aus.

  3. Wählen Sie in der Liste die schrittweise Rolloutausführung aus, die im vorherigen Schritt automatisch erstellt wurde, und wählen Sie dann im Aktionsmenü " Start" aus.

    Screenshot des Azure-Portals mit der Liste der gestaffelten Rolloutläufe, wobei ein einzelner gestaffelter Rolloutlauf ausgewählt ist.

  4. Die Seite wird aktualisiert, und in der Liste " Mehrstufige Rollouts " wird die mehrstufige Rolloutausführung mit dem Status " Fortschritt" angezeigt, wobei die derzeit ausgeführte Phase angezeigt wird.

    Screenshot des Azure-Portals mit der Liste der Staging-Rolloutdurchläufe mit einem einzelnen Staging-Rolloutdurchlauf, der ausgeführt wird und sich in der Phase „Staging“ befindet.

  5. Wenn das Rollout TimedWait erreicht, wechselt der Status zu Waiting. Sie können mit der Maus über das Informationssymbol fahren, um zu bestätigen, dass dieser Zustand auf TimedWait zurückzuführen ist.

    Screenshot des Azure-Portals mit der Ausführungsliste für Stagingrollouts mit einer einzelnen Stagingrollout-Ausführung, die sich im Wartezustand befindet. Ein Informationspopup bestätigt, dass die Ausführung darauf wartet, dass eine festgelegte Wartezeit abläuft.

Beenden eines mehrstufigen Rollouts

Um ein laufendes mehrstufiges Rollout zu beenden, patchen Sie das state Feld in der Spezifikation auf Stop. Diese Aktion hält den laufenden gestaffelten Rollout kontrolliert an, sodass Cluster, deren Aktualisierung bereits läuft, diese abschließen, bevor der Vorgang stoppt.

kubectl patch clusterstagedupdaterun staged-rollout-test-app --type merge -p '{"spec":{"state":"Stop"}}'

Die mehrstufige Updateausführung wird initialisiert, aber nicht mehr ausgeführt.

kubectl get clusterstagedupdaterun staged-rollout-test-app

Ihre Ausgabe sollte in etwa wie folgt aussehen, wobei zu beachten ist, dass progressing jetzt False ist.

NAME                      PLACEMENT             RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
staged-rollout-test-app   distribute-test-app                             0                       True          False                     46m

Führen Sie die folgenden Schritte aus, um ein ausgeführtes mehrstufiges Rollout zu beenden. Diese Aktion hält das mehrstufige Rollout ordnungsgemäß an, sodass laufende Cluster ihre Aktualisierungen beenden, bevor der Prozess beendet wird.

  1. Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.

  2. Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option " Mehrstufiges Rollout" aus.

  3. Wählen Sie in der Liste die mehrstufige Rolloutausführung aus, die Sie beenden möchten. Wählen Sie dann "Beenden " aus dem Aktionsmenü aus.

    Screenshot des Azure-Portals mit der Liste der Ausführungen gestaffelter Rollouts mit einer einzelnen Ausführung eines gestaffelten Rollouts, die fortschreitet.

  4. Die Seite wird aktualisiert, und in der Liste "Mehrstufige Rollouts" wird die mehrstufige Rolloutausführung mit dem Status " Beendet" angezeigt.

    Screenshot des Azure-Portals mit der Liste der gestaffelten Rolloutläufe mit einem einzelnen gestaffelten Rolloutlauf, der den Status „Gestoppt“ anzeigt.

Sie können das Rollout neu starten, indem Sie die Anweisungen unter "Schrittweises Starten eines rollouts" befolgen.

Note

Sie können ein Rollout jederzeit beenden. Cluster in Bearbeitung werden weiterhin abgeschlossen. Ausstehende Genehmigungen bleiben unberührt.

Löschen einer ausstehenden Phasengenehmigung

Fügen Sie Genehmigungsaufgaben vor oder nach einer Phase hinzu. Diese Aufgaben erfordern eine explizite Aktion, um bereinigt zu werden.

Wenn eine mehrstufige Rolloutausführung eine Genehmigung erreicht, erstellt sie eine Genehmigungsanforderung (ClusterApprovalRequest oder ApprovalRequest). Sie müssen diese Anforderung patchen. Nach dem Patchen wird die Rolloutausführung fortgesetzt.

Überprüfen Sie mit den folgenden Befehlen, ob ausstehende Genehmigungen vorliegen.

kubectl get clusterapprovalrequest

Achten Sie beim Prüfen auf ausstehende ApprovalRequest-Ressourcen darauf, den Namespace anzugeben, in dem sich die Ressourcen befinden.

kubectl get clusterapprovalrequest -n test-app

Wenn Sie eine Antwort von No resources found erhalten, stehen derzeit keine clusterbezogenen Genehmigungen aus.

Wenn ausstehende Genehmigungen vorhanden sind, sollte die Antwort ähnlich wie im folgenden Beispiel aussehen.

NAME                                    UPDATE-RUN                STAGE    APPROVED   AGE
staged-rollout-test-app-before-canary   staged-rollout-test-app   canary              4m13s

Note

Das System generiert Ressourcennamen für Genehmigungsanfragen nach dem Format {update-run-name}-{before|after}-{stage-name}.

Sie können die ClusterApprovalRequest Datei genehmigen, indem Sie eine JSON-Patchdatei erstellen und anwenden.

cat << EOF > approval.json
"status": {
    "conditions": [
        {
            "lastTransitionTime": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
            "message": "lgtm",
            "observedGeneration": 1,
            "reason": "testPassed",
            "status": "True",
            "type": "Approved"
        }
    ]
}
EOF

Note

Stellen Sie sicher, dass observedGeneration mit der Generation des Genehmigungsobjekts übereinstimmt. Dieser Wert ist in der Regel 1.

Senden Sie eine Patchanforderung, um die Anforderung mithilfe der von Ihnen erstellten JSON-Datei zu genehmigen.

kubectl patch clusterapprovalrequests staged-rollout-test-app-before-canary --type='merge' --subresource=status --patch-file approval.json

Überprüfen Sie, ob die Genehmigung auf die Anforderung angewendet wurde.

kubectl get clusterapprovalrequest staged-rollout-test-app-before-canary

Die Ausgabe sollte etwa wie folgt aussehen. Beachten Sie, dass APPROVED auf True eingestellt ist.

NAME                                    UPDATE-RUN                STAGE    APPROVED   AGE
staged-rollout-test-app-before-canary   staged-rollout-test-app   canary   True       6m

Der Rollout läuft weiter.

kubectl get clusterstagedupdaterun staged-rollout-test-app

Die Ausgabe sollte in etwa wie folgt aussehen und einen abgeschlossenen Durchlauf zeigen, wobei SUCCEEDED auf True gesetzt ist.

NAME                      PLACEMENT             RESOURCE-SNAPSHOT-INDEX   POLICY-SNAPSHOT-INDEX   INITIALIZED   PROGRESSING   SUCCEEDED   AGE
staged-rollout-test-app   distribute-test-app                             0                       True          False         True        9m

Wenn eine mehrstufige Rolloutausführung eine Genehmigung erreicht, verwenden Sie den folgenden Prozess, um die Genehmigung zu löschen, damit die Ausführung fortgesetzt wird.

  1. Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.

  2. Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option " Mehrstufiges Rollout" aus.

  3. Suchen Sie in der Liste die mehrstufige Rolloutausführung mit dem Status " Ausstehende Genehmigung".

    Screenshot des Azure-Portals mit der Liste der Durchläufe der stufenweisen Bereitstellung mit einem einzelnen Durchlauf einer stufenweisen Bereitstellung, für den eine Genehmigung aussteht.

  4. Sie können den Genehmigungsdialog von drei Stellen aus öffnen:

    • Inline in der mehrstufigen Rollout-Ausführungslistenansicht (siehe vorherige Darstellung).
    • Aus der Detailansicht für die mehrstufige Rolloutausführung:
      • Aus dem Feld "Bundesland " im Abschnitt "Essentials".
      • Inline in der Bühnenansicht.

    Screenshot des Azure Portals mit der Detailansicht für die mehrstufige Rolloutausführung mit zwei ausstehenden Genehmigungslinks.

  5. Wählen Sie eine Option aus, um das Dialogfeld "Genehmigung " zu öffnen. Geben Sie eine optionale Nachricht ein, und wählen Sie "Genehmigen" aus.

    Screenshot des Azure Portals, in dem das Dialogfeld

  6. Die Seite wird aktualisiert, und in der Liste "Mehrstufige Rollouts" wird die mehrstufige Rolloutausführung mit dem Status " Progressing" angezeigt.

    Screenshot des Azure Portals, in dem die mehrstufige Rollout-Ausführung nach der Genehmigung in der Canaryphase ausgeführt wird.

  7. Die Ausführung der gestaffelten Bereitstellung läuft weiter, bis sie abgeschlossen ist, wobei in der Liste Ausführungen gestaffelter Bereitstellungen die Ausführung der gestaffelten Bereitstellung mit dem Status Erfolgreich angezeigt wird.

    Screenshot des Azure Portals, in dem die mehrstufige Rolloutausführung angezeigt wird, die erfolgreich abgeschlossen wurde.

Rollout-Ausführung löschen

Entfernen Sie ein mehrstufiges Rollout, indem Sie die Kubernetes-Ressource im Fleet Manager-Hubcluster löschen.

kubectl delete clusterstagedupdaterun staged-rollout-test-app
  1. Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.

  2. Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option " Mehrstufiges Rollout" aus.

  3. Wählen Sie in der Liste die gestaffelte Rolloutausführung aus, die gelöscht werden soll, und wählen Sie dann im Aktionsmenü Löschen aus.

  4. Bestätigen Sie im Dialogfeld "Löschen ", ob die Ressource korrekt ist, und wählen Sie dann " Löschen bestätigen" aus. Wählen Sie schließlich "Löschen" aus.

    Screenshot des Azure Portals mit dem Dialogfeld

  5. Die Seite wird aktualisiert, und die gelöschte mehrstufige Rolloutausführung ist nicht mehr vorhanden.

Note

Durch das Löschen einer abgeschlossenen mehrstufigen Rolloutausführung werden keine platzierten Ressourcen entfernt. Um die platzierten Ressourcen zu entfernen, müssen Sie die Ressourcenplatzierung löschen.

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie Sie schrittweise Rolloutläufe verwenden, um die Verteilung von Ressourcen über Mitgliedscluster hinweg mithilfe der Ressourcenplatzierung zu steuern.

Weitere Informationen zu Mehrstufigen Rolloutläufen und verwandten Konzepten finden Sie in den folgenden Ressourcen: