Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
ClusterStagedUpdateRunmitClusterResourcePlacementfür Flotten-Administratoren, die Änderungen auf Infrastrukturebene verwalten. -
Namespace-Bereich: Verwenden Sie
StagedUpdateRunmitResourcePlacementfü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
-
Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
Lesen Sie die konzeptionelle Übersicht über phasenbasierte Rolloutstrategien, um die in diesem Artikel verwendeten Konzepte und Terminologie zu verstehen.
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-2Sie 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
fleetAzure CLI. Sie können das SDK mithilfe des folgenden Befehls installieren:az extension add --name fleetFühren Sie den Befehl
az extension updateaus, um ein Update auf die neueste Version der Erweiterung durchzuführen:az extension update --name fleetWenn 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
Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.
Wählen Sie im Dienstmenü unter "Einstellungen"die Option "Mitgliedercluster" aus.
Wählen Sie in der Mitgliederclusterliste einen Cluster aus. Wählen Sie dann im Aktionsmenü "Bezeichnungen bearbeiten" aus.
Fügen Sie dem Mitgliedscluster die entsprechende Beschriftung hinzu, und wählen Sie dann Übernehmen aus.
Wiederholen Sie diesen Vorgang für jeden Mitgliedscluster.
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.
Rufen Sie die kubeconfig-Datei des Kubernetes Fleet Hub-Clusters mit dem Befehl
az fleet get-credentialsab: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/configNote
Wenn Sie einen Fehler vom Typ
InvalidHubOperationmit der Meldung erhalten, dass die Flotte hublos ist, fügen Sie einen Hubcluster hinzu. Weitere Informationen finden Sie unter Hub-Clustertyp aktualisieren.Erstellen Sie einen Namespace im Fleet Manager-Hubcluster.
kubectl create namespace test-appSpeichern 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: LoadBalancerStellen Sie die Testarbeitslast mithilfe von
kubectlim Fleet Manager-Hubcluster bereit.kubectl apply -f test-workload.yaml
Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.
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.
Wählen Sie im Menü "Namespace" aus, geben Sie einen Namen ein, und wählen Sie dann "Erstellen" aus.
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.
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: 80apiVersion: v1 kind: Service metadata: name: nginx-service namespace: test-app spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancerKopieren Sie die Beispiele und fügen Sie sie ein, und wenden Sie sie einzeln an, wie in der folgenden Abbildung gezeigt.
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.
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: ApprovalWenden Sie das Strategiemanifest auf den Fleet Manager Hub Cluster an.
kubectl apply -f crp-two-stages-strategy.yamlÜberprüfen Sie den Status der Strategieressource.
kubectl get clusterstagedupdatestrategy two-stages-strategyDie 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.
Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.
Wählen Sie im Service-Menü unter Flottenressourcen die Option Ressourcenplatzierungen>Strategien für die gestaffelte Ausrollung und dann Erstellen aus.
Geben Sie einen Namen für den Server ein.
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.
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.
Note
Die maximale Anzahl von Stufen in jeder Strategie beträgt 31.
Wiederholen Sie den Vorgang, bis alle Phasen der Strategie hinzugefügt werden. Wählen Sie "Erstellen" aus, um die Strategie zu erstellen.
Die Seite wird aktualisiert, und die Liste zeigt die neu erstellte Strategie an.
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.
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: ExternalVon Bedeutung
Wenn Sie den Typ
strategynicht aufExternalfestlegen, beginnt die Ressourcenbereitstellung, sobald Sie das Manifest mit einerRollingUpdate-Strategie anwenden.Wenden Sie das Platzierungsmanifest auf den Fleet Manager-Hubcluster an.
kubectl apply -f crp-distribute-workload-ext.yamlÜberprüfen Sie den Status der Ressourcenplatzierung.
kubectl get clusterresourceplacement distribute-test-appDie Ausgabe sollte etwa wie folgt aussehen.
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE distribute-test-app 1 True 1 60s
Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.
Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option >+ Erstellen" aus.
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-appWä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.
Wählen Sie "Weiter" aus, um das resultierende
ClusterResourcePlacementManifest 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.Wählen Sie "Erstellen" aus, um die Rolloutausführung zu erstellen, aber nicht zu starten.
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.
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.
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: InitializeNote
Wenn Sie den Typ
strategynicht aufExternalfestlegen, beginnt die Ressourcenbereitstellung, sobald Sie das Manifest mit einerRollingUpdate-Strategie anwenden.Wenden Sie das mehrstufige Rolloutmanifest auf den Fleet Manager-Hubcluster an.
kubectl apply -f staged-rollout-test-app.yamlÜ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-appDie 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>
Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.
Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option " Mehrstufiges Rollout" aus.
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.
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.
Wenn das Rollout
TimedWaiterreicht, wechselt der Status zu Waiting. Sie können mit der Maus über das Informationssymbol fahren, um zu bestätigen, dass dieser Zustand aufTimedWaitzurückzuführen ist.
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.
Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.
Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option " Mehrstufiges Rollout" aus.
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.
Die Seite wird aktualisiert, und in der Liste "Mehrstufige Rollouts" wird die mehrstufige Rolloutausführung mit dem Status " Beendet" angezeigt.
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.
Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.
Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option " Mehrstufiges Rollout" aus.
Suchen Sie in der Liste die mehrstufige Rolloutausführung mit dem Status " Ausstehende Genehmigung".
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.
Wählen Sie eine Option aus, um das Dialogfeld "Genehmigung " zu öffnen. Geben Sie eine optionale Nachricht ein, und wählen Sie "Genehmigen" aus.
Die Seite wird aktualisiert, und in der Liste "Mehrstufige Rollouts" wird die mehrstufige Rolloutausführung mit dem Status " Progressing" angezeigt.
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.
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
Wechseln Sie im Azure-Portal zu Ihrem Flottenmanager.
Wählen Sie im Menü "Dienst" unter "Flottenressourcen" die Option " Mehrstufiges Rollout" aus.
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.
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.
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:
- Definieren einer Rolloutstrategie für die Ressourcenplatzierung des Fleet Managers
- Statusfelder und Bedingungen für die Ressourcenplatzierung im Fleet Manager verstehen
View-Agent meldet sich in Azure Kubernetes Fleet Manager