Utiliser des déploiements progressifs pour contrôler les placements de ressources d’Azure Kubernetes Fleet Manager

S’applique à : ✔️ Fleet Manager avec cluster hub

Les exécutions de déploiement progressif du placement dans Azure Kubernetes Fleet Manager offrent une approche contrôlée pour déployer des charges de travail Kubernetes sur plusieurs clusters membres grâce à un processus par étapes. Pour réduire le risque, cette approche se déploie sur des clusters ciblés de manière séquentielle, avec des délais d’attente facultatifs et des portes d’approbation entre les étapes.

Cet article explique comment créer et exécuter des exécutions de mises à jour intermédiaires pour déployer progressivement des charges de travail et revenir aux versions précédentes si nécessaire.

Azure Kubernetes Fleet Manager prend en charge deux étendues pour les mises à jour intermédiaires :

  • Étendue limitée au cluster : utilisez ClusterStagedUpdateRun avec ClusterResourcePlacement pour les administrateurs de flotte qui gèrent les modifications au niveau de l’infrastructure.
  • Étendue limitée à l’espace de noms: utilisez StagedUpdateRun avec ResourcePlacement pour les équipes d’application qui gèrent les déploiements au sein de leurs espaces de noms spécifiques.

L’exemple de cet article montre comment utiliser une exécution de rollout avec des ressources de portée cluster. La portée d’espace de noms fonctionne exactement de la même manière avec les ressources du même espace de noms.

Avant de commencer

  • Définissez les variables d’environnement suivantes :

    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
    
  • Vous devez avoir installé Azure CLI pour suivre cet article. Pour installer ou mettre à niveau, consultez Installer le Azure CLI.

  • Vous avez besoin de l’extension fleet Azure CLI. Vous pouvez l’installer en exécutant la commande suivante :

    az extension add --name fleet
    

    Exécutez la commande az extension update pour effectuer une mise à jour vers la dernière version de l’extension :

    az extension update --name fleet
    
  • Si vous n'avez pas déjà le CLI Kubernetes (kubectl), vous pouvez l'installer à l’aide de cette commande :

    az aks install-cli
    

Configurer l’environnement

Cet article utilise un Gestionnaire de flotte avec un cluster hub et deux clusters membres. Si vous n’avez pas de Gestionnaire de flotte, suivez le guide de démarrage rapide pour créer un Fleet Manager avec un cluster hub. Ensuite, ajoutez les clusters Azure Kubernetes Service (AKS) ou les clusters Kubernetes avec Azure Arc en tant que membres.

Assurez-vous que les clusters membres ont les étiquettes suivantes pour qu’il y ait un cluster à chaque étape du déploiement.

nom du membre labels
aks-member-1 environnement=canary
aks-member-2 environnement = transfert

Appliquez des étiquettes aux clusters membres à l’aide de la commande suivante.

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. Dans le portail Azure, accédez à votre Fleet Manager.

  2. Dans le menu du service, sous Paramètres, sélectionnez Clusters membres.

  3. Dans la liste des clusters membres, sélectionnez un cluster. Ensuite, choisissez Modifier les étiquettes dans le menu action.

  4. Ajoutez l’étiquette appropriée au cluster membre, puis sélectionnez Appliquer.

  5. Répétez cette opération pour chaque cluster membre.

    Capture d’écran du portail Azure montrant une nouvelle étiquette ajoutée à un cluster membre Kubernetes Fleet Manager Azure.

Préparer la charge de travail Kubernetes en vue de son placement

Dans cette étape, vous mettez en scène une charge de travail Kubernetes sur le cluster Hub Fleet Manager afin de pouvoir la distribuer via un déploiement intermédiaire sur des clusters membres.

  1. Obtenez le fichier kubeconfig du cluster hub Kubernetes Fleet à l’aide de la commande az fleet get-credentials :

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

    Votre sortie doit ressembler à ce qui suit.

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

    Note

    Si vous recevez une erreur de type InvalidHubOperation avec le message indiquant que la flotte est sans hub, ajoutez un cluster hub. Pour plus d’informations, consultez le type de cluster hub de mise à niveau.

  2. Créez un espace de noms sur le cluster hub Fleet Manager.

    kubectl create namespace test-app
    
  3. Enregistrez le yaML suivant sous 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. Déployez la charge de travail de test sur le cluster hub Fleet Manager en utilisant kubectl.

    kubectl apply -f test-workload.yaml
    
  1. Dans le portail Azure, accédez à votre Fleet Manager.

  2. Dans le menu du service, sous Ressources de flotte, sélectionnez Espaces de noms>+ Créer.

    Note

    Si vous ne voyez pas les ressources de flotte, votre Fleet Manager n’a pas de cluster hub. Pour plus d’informations sur la façon d’en ajouter un, consultez mettre à niveau le type de cluster hub.

  3. Dans le menu, sélectionnez Espace de noms, entrez un nom, puis sélectionnez Créer.

    Capture d’écran du portail Azure montrant un espace de noms appelé application de test en cours de création sur le cluster Hub Fleet Manager.

    Après quelques instants, la page s’actualise et l’espace de noms apparaît dans la liste des espaces de noms sur le cluster Hub Fleet Manager. Il est maintenant prêt à héberger toutes les ressources que vous souhaitez distribuer entre les clusters membres.

  4. En haut de la liste d’espaces de noms, sélectionnez + Créer>un YAML et utilisez les exemples suivants.

    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
    

    Copiez et collez les exemples et appliquez-les un par un, comme illustré dans l’image suivante.

    Capture d’écran du portail Azure montrant la boîte de dialogue Appliquer avec YAML remplie avec un déploiement prêt à être appliqué au cluster Hub Fleet Manager.

    L’espace de noms et ses charges de travail sont désormais prêts à être distribués aux clusters membres. Le déploiement et le service ne sont pas planifiés sur le cluster Hub Fleet Manager.

Définir l’ordre des clusters à l’aide d’une stratégie de déploiement

Créez une stratégie de déploiement pour définir l’ordre dans lequel les clusters reçoivent les ressources. Vous pouvez également ajouter d’autres contrôles tels que les heures d’imbibulation et les approbations avant ou après chaque étape. Pour plus d’informations, consultez Définir des stratégies réutilisables de déploiement progressif pour le placement des ressources dans Azure Kubernetes Fleet Manager.

  1. Enregistrez le yaML suivant sous 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. Appliquez le manifeste de stratégie au cluster Hub Fleet Manager.

    kubectl apply -f crp-two-stages-strategy.yaml
    
  3. Vérifiez l’état de la ressource de stratégie.

    kubectl get clusterstagedupdatestrategy two-stages-strategy
    

    Votre sortie doit ressembler à ce qui suit.

    NAME                  AGE
    two-stages-strategy   47m
    

Utilisez le processus suivant pour créer une stratégie contenant les deux phases Staging et Canary avec un temps d’attente de 4 minutes et une approbation préalable pour l’étape Canary.

  1. Dans le portail Azure, accédez à votre Fleet Manager.

  2. Dans le menu Services, sous Ressources de flotte, sélectionnez Emplacements des ressources>Stratégies de déploiement progressif, puis Créer.

  3. Entrez un nom pour la stratégie.

  4. Sélectionnez la portée de la stratégie, en choisissant Portée du cluster ou Portée de l’espace de noms.

    • Pour l’étendue de l’espace de noms, sélectionnez l’espace de noms existant sur le cluster hub Fleet Manager où les ressources Kubernetes à distribuer sont intermédiaires.
  5. Sélectionnez Créer une étape et entrez :

    • Nom de l'étape - nommez l'étape - il doit être unique parmi tous les noms d’étape de la stratégie.
    • (Facultatif) Approbations intermédiaires : sélectionnez cette option si vous souhaitez attendre une approbation avant que cette étape commence ou une fois terminée.
    • (Facultatif) Patientez après l’étape : sélectionnez cette option si vous souhaitez définir une pause avant de passer à l’étape suivante.
    • (Facultatif) Durée d’attente : sélectionnez une durée prédéfinie ou entrez une valeur personnalisée en secondes.
    • Sélecteur d’étiquette de cluster : choisissez une étiquette de cluster membre existante à utiliser pour sélectionner des clusters pour cette étape.
    • (Facultatif) Étiquette de classement de cluster : choisissez une étiquette de cluster membre existante à utiliser pour classer les clusters au sein de la phase.
    • (Facultatif) Concurrence de l’étape - définissez le nombre de clusters à mettre à jour en parallèle dans l’étape actuelle.

    Capture d’écran du portail Azure montrant une nouvelle étape ajoutée à une stratégie de déploiement intermédiaire de Azure Kubernetes Fleet Manager.

    Note

    Le nombre maximal d’étapes de chaque stratégie est de 31.

  6. Répétez jusqu’à ce que toutes les étapes soient ajoutées à la stratégie. Sélectionnez Créer pour créer la stratégie.

    Capture d’écran du portail Azure montrant une stratégie de déploiement intermédiaire de Azure Kubernetes Fleet Manager avec deux étapes en attente de création.

  7. La page s’actualise et la liste affiche la stratégie nouvellement créée.

    Capture d’écran du portail Azure affichant une liste de stratégies de déploiement progressif du placement d’Azure Kubernetes Fleet Manager.

Choisir des clusters à l’aide d’un placement de ressources

Utilisez un placement de ressources pour sélectionner les ressources à distribuer et définir la stratégie pour choisir les clusters qui reçoivent les ressources.

Pour utiliser un déploiement progressif, définissez le type de déploiement strategy sur External afin de pouvoir contrôler la distribution des ressources à l’aide d’un déploiement progressif que vous définirez ultérieurement.

  1. Enregistrez le yaML suivant sous 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
    

    Important

    Si vous ne définissez pas le type strategy sur External, le déploiement de la ressource démarre dès que vous appliquez le manifeste en utilisant une stratégie RollingUpdate.

  2. Appliquez le manifeste de placement au cluster Hub Fleet Manager.

    kubectl apply -f crp-distribute-workload-ext.yaml
    
  3. Vérifiez l’état du placement des ressources.

    kubectl get clusterresourceplacement distribute-test-app
    

    Votre sortie doit ressembler à ce qui suit.

    NAME                  GEN   SCHEDULED   SCHEDULED-GEN   AVAILABLE   AVAILABLE-GEN   AGE
    distribute-test-app   1     True        1                                           60s
    
  1. Dans le portail Azure, accédez à votre Fleet Manager.

  2. Dans le menu de service, sous Ressources de flotte, sélectionnez Placements des ressources>+ Créer.

  3. Sous l’onglet Informations de base, configurez les options suivantes :

    • Dans les détails de placement, entrez un nom pour le placement.

    • Sous Détails de la ressource, laissez Portée sur Portée du cluster et saisissez le Group Version Kind (GVK) ainsi que le nom de la ressource à distribuer. Dans cet exemple, utilisez les valeurs suivantes.

      group: ""
      kind: Namespace
      version: v1          
      name: test-app
      
    • Dans la sélection du cluster membre, pour le type de placement , choisissez Tous les clusters.

    • Pour le déploiement, sélectionnez Externe. Utilisez la stratégie de mise à jour intermédiaire pour sélectionner la stratégie de déploiement que vous avez créée précédemment.

    • Laissez la case Démarrer automatiquement le déploiement décochée.

    Capture d’écran du portail Azure montrant l’onglet Informations de base terminée pour le placement des ressources au niveau du cluster qui utilise une stratégie de mise à jour intermédiaire pour le déploiement.

  4. Sélectionnez Suivant pour passer en revue le manifeste obtenu ClusterResourcePlacement . Vous pouvez modifier le manifeste si nécessaire, valider à l’aide de l’option Valider (exécution sèche) ou sélectionner Vérifier + créer pour passer à la confirmation finale.

    Capture d’écran du portail Azure montrant l’onglet Vérifier YAML avec une validation d’exécution sèche réussie pour le placement des ressources au niveau du cluster à l’aide d’une stratégie externe pour un espace de noms appelé test-app.

  5. Sélectionnez Créer pour créer l’exécution du déploiement, mais ne la démarrez pas.

    Capture d’écran du portail Azure montrant l’onglet Vérifier + créer pour un placement de ressources à portée de cluster utilisant un déploiement progressif pour un espace de noms appelé test-app.

  6. La page s’actualise et la liste Placements de ressources affiche le placement nouvellement créé. Il indique le nombre de clusters sélectionnés et indique si le planificateur de flotte peut respecter la stratégie de placement. Notez que le type de déploiement est défini sur Externe.

    Capture d’écran du portail Azure montrant la liste des placements de ressources avec un emplacement de ressource unique appelé distribution-test-app qui a un type de déploiement externe.

Lorsque vous utilisez le portail Azure pour créer un placement avec une stratégie de déploiement, il crée automatiquement une exécution de déploiement intermédiaire pour vous.

Utiliser le déploiement intermédiaire pour contrôler la distribution

Dans cet article, vous créez le déploiement progressif avec un state de Initialize afin de pouvoir démarrer le déploiement lorsque vous le souhaitez, au lieu que l’exécution démarre immédiatement lorsque le manifeste est appliqué. Définissez l’état sur Run pour démarrer immédiatement à la place.

  1. Enregistrez le yaML suivant sous 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

    Si vous ne définissez pas le type strategy sur External, le déploiement de la ressource démarre dès que vous appliquez le manifeste en utilisant une stratégie RollingUpdate.

  2. Appliquez le manifeste de déploiement progressif sur le cluster hub Fleet Manager.

    kubectl apply -f staged-rollout-test-app.yaml
    
  3. Vérifiez l’état de la ressource d’exécution du déploiement. Il est initialisé, mais ne progresse pas.

    kubectl get clusterstagedupdaterun staged-rollout-test-app
    

    Votre sortie doit ressembler à ce qui suit.

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

Gestion de la progression du déploiement progressif

Une fois toutes les ressources prêtes, vous pouvez maintenant contrôler le déploiement des ressources sur les clusters membres.

Démarrer un déploiement intermédiaire

Pour lancer un déploiement progressif, modifiez le champ state dans la spécification pour le définir sur Run.

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

Vérifiez l’état de la ressource d’exécution du déploiement. Il est initialisé, mais ne progresse pas.

kubectl get clusterstagedupdaterun staged-rollout-test-app

Votre résultat doit ressembler à ce qui suit ; notez que l’indicateur de progression est désormais True.

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

Note

Lorsque le déploiement atteint une tâche TimedWait ou une tâche d’approbation, le statut de progression passe à False. Permet describe de déterminer la raison de la pause.

Affichez l’état détaillé du déploiement en décrivant le ClusterStagedUpdateRun.

kubectl describe clusterstagedupdaterun staged-rollout-test-app

Dans la réponse, examinez le Status, en consultant les Conditions et Stages Status pour comprendre quelle étape et quel cluster sont actuellement en cours de traitement, ou si une tâche TimedWait ou Approval est actuellement active.

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. Dans le portail Azure, accédez à votre Fleet Manager.

  2. Dans le menu du service, sous Ressources de flotte, sélectionnez Exécutions de déploiement intermédiaires.

  3. Dans la liste, sélectionnez l’exécution de déploiement intermédiaire créée automatiquement à l’étape précédente, puis sélectionnez Démarrer dans le menu d’action.

    Capture d’écran du portail Azure montrant la liste des exécutions de déploiement intermédiaire avec une seule exécution intermédiaire sélectionnée.

  4. La page se rafraîchit et la liste des exécutions de déploiement progressif affiche l’exécution de déploiement progressif avec l’état En cours, l’étape en cours étant affichée.

    Capture d’écran du portail Azure montrant la liste des exécutions de déploiement intermédiaire avec une exécution de déploiement intermédiaire unique qui progresse et se trouve à l’étape nommée préproduction.

  5. Lorsque le déploiement atteint un TimedWait, l’état passe à l’attente. Vous pouvez pointer sur l’icône d’informations pour confirmer que cet état est dû à un TimedWait.

    Capture d’écran du portail Azure montrant la liste des exécutions de déploiement intermédiaire avec une seule exécution intermédiaire en attente. Il existe une fenêtre contextuelle d’informations confirmant que l’exécution attend l’expiration d’une attente prolongée.

Arrêter un déploiement intermédiaire

Pour arrêter un déploiement progressif en cours, modifiez le champ state dans la spec en Stop. Cette action arrête proprement l’exécution du déploiement progressif, de sorte que les clusters en cours de mise à jour terminent leurs mises à jour avant que le processus ne s’arrête.

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

L’exécution de la mise à jour intermédiaire est initialisée, mais n’est plus en cours d’exécution.

kubectl get clusterstagedupdaterun staged-rollout-test-app

Votre sortie doit ressembler à ce qui suit, en notant que c’est progressing maintenant False.

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

Pour arrêter un déploiement intermédiaire en cours d’exécution, procédez comme suit. Cette action interrompt correctement le déploiement intermédiaire, de sorte que les clusters en cours terminent leurs mises à jour avant l’arrêt du processus.

  1. Dans le portail Azure, accédez à votre Fleet Manager.

  2. Dans le menu du service, sous Ressources de flotte, sélectionnez Exécutions de déploiement intermédiaires.

  3. Dans la liste, sélectionnez l’instance de déploiement progressif que vous souhaitez arrêter. Ensuite, choisissez Arrêter dans le menu d’action.

    Capture d’écran du portail Azure montrant la liste des exécutions de déploiement intermédiaire avec une seule exécution intermédiaire qui progresse.

  4. La page s’actualise et la liste Exécutions du déploiement progressif affiche l’exécution du déploiement progressif avec l’état Arrêté.

    Capture d’écran du portail Azure montrant la liste d’exécutions de déploiement intermédiaire avec une seule exécution intermédiaire qui affiche un état d’arrêt.

Vous pouvez redémarrer le déploiement en suivant les instructions de démarrage d’un déploiement intermédiaire.

Note

Vous pouvez arrêter un déploiement à tout moment. Les clusters en cours se poursuivent jusqu’à leur achèvement. Les approbations en attente restent inchangées.

Effacer une approbation d’étape en attente

Ajoutez des tâches d’approbation avant ou après une phase. Ces tâches nécessitent une action explicite pour être effacées.

Lorsqu’une exécution de déploiement intermédiaire atteint une approbation, elle crée une demande d’approbation (ClusterApprovalRequest ou ApprovalRequest). Vous devez corriger cette demande. Après avoir appliqué le correctif, le processus de déploiement se poursuit.

Recherchez les approbations en attente à l’aide des commandes suivantes.

kubectl get clusterapprovalrequest

Lors de la vérification des ressources en attente ApprovalRequest , veillez à fournir l’espace de noms dans lequel résident les ressources.

kubectl get clusterapprovalrequest -n test-app

Si vous recevez une réponse No resources found, il n’existe actuellement aucune approbation étendue au cluster en attente.

S’il existe des approbations en attente, la réponse doit ressembler à l’exemple suivant.

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

Note

Le système génère des noms de ressources de demandes d’approbation en utilisant le format {update-run-name}-{before|after}-{stage-name}.

Vous pouvez approuver ce ClusterApprovalRequest fichier en créant un fichier de correctif JSON et en l’appliquant.

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

Assurez-vous que le observedGeneration correspond à la génération de l’objet d’approbation. Cette valeur est généralement 1.

Envoyez une demande de correctif pour approuver la demande à l’aide du fichier JSON que vous avez créé.

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

Vérifiez que l’approbation a été appliquée à la demande.

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

Votre sortie doit ressembler à ce qui suit. Notez que APPROVED est défini sur True.

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

Le déploiement se poursuit.

kubectl get clusterstagedupdaterun staged-rollout-test-app

Le résultat devrait ressembler à ce qui suit, qui montre une exécution terminée avec SUCCEEDED défini sur True.

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

Lorsqu’une exécution de déploiement intermédiaire atteint une approbation, utilisez le processus suivant pour effacer l’approbation afin que l’exécution continue.

  1. Dans le portail Azure, accédez à votre Fleet Manager.

  2. Dans le menu du service, sous Ressources de flotte, sélectionnez Exécutions de déploiement intermédiaires.

  3. Dans la liste, recherchez l’exécution de déploiement progressif dont l’état est En attente d’approbation.

    Capture d’écran du portail Azure montrant la liste des exécutions de déploiement intermédiaire avec une seule exécution intermédiaire qui est en attente d’approbation.

  4. Vous pouvez ouvrir la boîte de dialogue d’approbation à partir de l’un des trois emplacements suivants :

    • Directement dans la vue de liste des exécutions du déploiement progressif (présentée précédemment).
    • Depuis la vue détaillée de l’exécution du déploiement progressif :
      • Dans le champ État de la section Essentials.
      • En ligne dans la vue Stage.

    Capture d’écran du portail Azure montrant la vue détaillée de l’exécution d’un déploiement progressif avec deux liens d’approbation en attente.

  5. Sélectionnez une option pour ouvrir la boîte de dialogue Approbation . Entrez un message facultatif et choisissez Approuver.

    Capture d’écran du portail Azure montrant la boîte de dialogue d’approbation de lancement intermédiaire avec un champ de message terminé.

  6. La page s’actualise et la liste des exécutions de déploiement progressif affiche l’exécution de déploiement progressif avec l’état Progressing.

    Capture d’écran du portail Azure montrant l’exécution du déploiement progressif avançant dans la phase canari après son approbation.

  7. L’exécution de déploiement intermédiaire se poursuit jusqu’à ce qu’elle se termine, avec la liste des exécutions de déploiement intermédiaire affichant l’exécution intermédiaire avec l’état Réussi.

    Capture d’écran du portail Azure montrant l’exécution intermédiaire du déploiement qui s’est terminée avec succès.

Supprimer une exécution de déploiement

Supprimez une exécution intermédiaire de déploiement en supprimant la ressource Kubernetes sur le cluster Hub Fleet Manager.

kubectl delete clusterstagedupdaterun staged-rollout-test-app
  1. Dans le portail Azure, accédez à votre Fleet Manager.

  2. Dans le menu du service, sous Ressources de flotte, sélectionnez Exécutions de déploiement intermédiaires.

  3. Dans la liste, sélectionnez l’exécution de déploiement intermédiaire à supprimer, puis choisissez Supprimer dans le menu d’action.

  4. Dans la boîte de dialogue Supprimer , vérifiez que la ressource est correcte, puis sélectionnez Confirmer la suppression. Enfin, choisissez Supprimer.

    Capture d’écran du portail Azure montrant la boîte de dialogue Supprimer pour une exécution de déploiement intermédiaire sélectionnée.

  5. La page s’actualise et l’exécution du déploiement progressif supprimée n’apparaît plus.

Note

La suppression d’une exécution de déploiement intermédiaire terminée ne supprime pas les ressources placées. Pour supprimer les ressources placées, vous devez supprimer le placement des ressources.

Étapes suivantes

Dans cet article, vous avez appris à utiliser des exécutions de déploiement intermédiaires pour contrôler la distribution des ressources entre les clusters membres à l’aide du placement des ressources.

Pour en savoir plus sur les exécutions de déploiement intermédiaires et les concepts connexes, consultez les ressources suivantes :