Définir des stratégies de mise à jour réutilisables à l’aide d’Azure Kubernetes Fleet Manager

S’applique à : ✔️ Gestionnaire de flotte ✔️ Gestionnaire de flotte avec cluster hub

Les administrateurs peuvent contrôler la séquence de mises à jour des clusters gérés par la flotte en définissant une série d’étapes et de groupes. Ils peuvent configurer quand les approbations et les pauses doivent se produire dans ces phases et groupes. L’intégralité de la configuration peut être enregistrée sous la forme d’une stratégie de mise à jour qui peut être gérée indépendamment des exécutions de mises à jour ou des mises à niveau automatiques, ce qui permet de réutiliser les stratégies en fonction des besoins.

Cet article explique comment définir des stratégies de mise à jour à l’aide de groupes et d’étapes.

Diagramme montrant un exemple de stratégie de mise à jour contenant deux phases de mise à jour. Chaque étape de mise à jour contient deux groupes de mises à jour. Chaque groupe de mises à jour contient deux clusters membres.

Prérequis

  • Lisez la vue d’ensemble conceptuelle des mises à jour de la flotte, qui fournit une explication des exécutions de mises à jour, des phases, des groupes et des stratégies référencées dans ce guide.

  • Vous devez avoir une ressource Fleet avec un ou plusieurs clusters membres. Si ce n’est pas le cas, suivez le guide de démarrage rapide pour créer une ressource Fleet et rejoindre des clusters Azure Kubernetes Service (AKS) en tant que membres.

  • Définissez les variables d’environnement suivantes :

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export CLUSTERID=<aks-cluster-resource-id>
    export STRATEGY=<strategy-name>
    
  • Si vous suivez les instructions Azure CLI de cet article, installez la dernière version du Azure CLI. Pour installer ou mettre à niveau Azure CLI, consultez Installer l’interface de ligne de commande Microsoft Azure.

  • Vous avez également besoin de l’extension fleet Azure CLI. Pour l’installer, exécutez 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 publiée :

    az extension update --name fleet
    

Sélectionner des clusters pour votre stratégie

Il existe deux façons de sélectionner les clusters inclus dans chaque étape et groupe de votre stratégie de mise à jour pour contrôler la séquence de mises à jour :

  • Étiquettes de membre (recommandé) : affectez des étiquettes à chaque membre de la flotte et utilisez memberSelector pour sélectionner des membres selon ces étiquettes. Chaque membre peut avoir plusieurs étiquettes.
  • Groupes de mises à jour : attribuez un groupe de mises à jour à chaque membre de la flotte, puis définissez des groupes dans votre stratégie qui correspondent à ces noms de groupe. Chaque membre ne peut appartenir qu’à un seul groupe.

Créer une stratégie de mise à jour à l’aide de sélecteurs de membres (aperçu)

Utilisez des étiquettes de membre pour sélectionner des clusters dans vos stratégies de mise à jour. Ils offrent une plus grande flexibilité. Pour des détails conceptuels, consultez Regroupement des clusters à l'aide des étiquettes de membres.

Important

Les fonctionnalités en préversion de Azure Kubernetes Fleet Manager sont disponibles en libre-service, sur une base d'adhésion volontaire. Les versions préliminaires sont fournies « en l’état » et « selon leur disponibilité » et ne sont pas couvertes par les accords de niveau de service ni par la garantie limitée. Les versions préliminaires d'Azure Kubernetes Fleet Manager sont partiellement couvertes par le support client sur la base du meilleur effort. Par conséquent, ces fonctionnalités ne sont pas destinées à une utilisation en production.

Appliquer des étiquettes sur des clusters membres

Appliquer des étiquettes lors de l’ajout d’un cluster membre à la flotte

Utilisez la az fleet member create commande pour appliquer des étiquettes à vos membres de la flotte. L’exemple suivant applique deux étiquettes au cluster membre : env=staging et tier=frontend:

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --labels "env=staging tier=frontend"

Appliquer des étiquettes à un membre de flotte existant

Utilisez la az fleet member update commande pour appliquer des étiquettes à vos membres de la flotte.

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --labels "env=staging tier=frontend"

Créer une stratégie de mise à jour

Une stratégie de mise à jour se compose d’une ou plusieurs phases, où une étape peut contenir un ou plusieurs groupes de mises à jour.

Remarque

Une expérience du portail Azure sera disponible avant la disponibilité générale de cette fonctionnalité.

  1. Créez un fichier JSON pour définir les phases et les groupes pour l’exécution de mises à jour. Les étapes s’exécutent de manière séquentielle dans l’ordre dans lequel elles apparaissent dans le fichier JSON. Les groupes s’exécutent en parallèle dans chaque étape. L’exemple de fichier suivant (example-labels-strategy.json) définit une stratégie avec deux étapes à l’aide memberSelector de la sélection de clusters par leurs étiquettes et inclut des paramètres facultatifs maxConcurrency :

    • L’étape staging utilise un niveau memberSelector intermédiaire pour sélectionner tous les clusters avec l’étiquette env=staging et créer un groupe implicite.
    • L’étape production utilise un niveau memberSelector intermédiaire pour préfiltrer tous les clusters avec l’étiquette env=production, puis définit deux groupes, chacun avec son propre memberSelector pour sélectionner des clusters par l’étiquette tier .

    Lorsqu'on définit memberSelector sur un groupe, le champ name du groupe est utilisé uniquement comme identificateur d’affichage pour la création de rapports d’état et la journalisation, et n’est plus utilisé pour la sélection des membres de la flotte basée sur la mise à jour du groupe.

    {
        "stages": [
            {
                "name": "staging",
                "memberSelector": { "byLabel": "env=staging" },
                "maxConcurrency": "1",
                "afterStageWaitInSeconds": 600
            },
            {
                "name": "production",
                "memberSelector": { "byLabel": "env=production" },
                "maxConcurrency": "4",
                "groups": [
                    {
                        "name": "frontend",
                        "memberSelector": { "byLabel": "tier=frontend" },
                        "maxConcurrency": "3"
                    },
                    {
                        "name": "backend",
                        "memberSelector": { "byLabel": "tier=backend" },
                        "maxConcurrency": "3"
                    }
                ]
            }
        ]
    }
    

Remarque

Le maxConcurrency champ est facultatif et contrôle le nombre de clusters pouvant être mis à niveau simultanément à l’étape ou au niveau du groupe. Utilisez une plus grande valeur pour mettre à niveau les clusters plus rapidement dans votre flotte, ou une valeur plus petite pour un déploiement plus contrôlé qui limite le rayon d’explosion si des problèmes se produisent.

Lorsqu’une étape utilise memberSelector sans groupes (par exemple staging), tous les membres correspondants forment un seul groupe implicite et l’étape contrôle directement la concurrence avec maxConcurrency. Lorsque des groupes sont définis (comme production), le niveau maxConcurrency intermédiaire agit comme un plafond global sur tous les groupes.

Dans cet exemple, l’étape staging définit maxConcurrency sur "1", de sorte que les clusters de mise en scène se mettent à niveau un par un. La production phase autorise jusqu'à "4" clusters simultanément, avec les groupes frontend et backend chacun limités à "3".

Les valeurs peuvent être un entier fixe (par exemple, "3") ou un pourcentage (par exemple). "50%" S’il est omis, le système applique les valeurs par défaut. Pour plus d’informations sur la façon dont ces valeurs sont résolues et leurs limites supérieures, consultez Concurrence maximale (préversion).

  1. Créez une stratégie de mise à jour à l’aide de la commande az fleet updatestrategy create avec l’indicateur --stages défini sur le nom de votre fichier JSON.

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-labels-strategy.json
    

Créer une stratégie de mise à jour à l’aide de groupes de mises à jour

Vous pouvez sélectionner des clusters dans les stratégies de mise à jour en les affectant à un seul groupe de mises à jour. Définissez une stratégie de mise à jour qui attribue ces groupes de mises à jour à des phases. Dans une phase de mise à jour, les mises à jour sont appliquées à chaque groupe de mises à jour en parallèle. Dans un groupe de mises à jour, les clusters membres sont mis à jour de manière séquentielle.

Remarque

Un membre de flotte ne peut être qu’une partie d’un groupe de mises à jour, tandis qu’un groupe de mises à jour peut avoir plusieurs membres de flotte qui lui sont affectés. Un groupe de mises à jour lui-même n’est pas un type de ressource distinct. Les groupes de mises à jour sont simplement des chaînes représentant des références des membres de la flotte. Par conséquent, si tous les membres de flotte ayant des références à un groupe de mise à jour commun sont supprimés, ce groupe de mises à jour spécifique cesse également d’exister.

Affecter des clusters à des groupes de mise à jour

Affecter au groupe lors de l’ajout d’un cluster membre à la flotte

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

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

    Capture d’écran de la page du Portail Azure pour l’ajout des clusters membres Azure Kubernetes Fleet Manager.

  3. Sélectionnez le cluster que vous souhaitez ajouter, puis sélectionnez Suivant : Vérifier + ajouter.

  4. Entrez le nom du groupe de mises à jour auquel vous souhaitez affecter le cluster, puis sélectionnez Ajouter.

    Capture d’écran de la page du Portail Azure pour l’évaluation et l’ajout des étapes pour les clusters membres Azure Kubernetes Fleet Manager.

Affectez un cluster membre à un groupe de mises à jour lors de l’ajout du cluster membre à la flotte à l’aide de la commande az fleet member create avec le paramètre --update-group défini sur le nom du groupe de mises à jour.

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --update-group group-1a

Affecter un membre de flotte existant à un groupe de mises à jour

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

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

  3. Sélectionnez les clusters que vous souhaitez affecter à un groupe de mises à jour, puis sélectionnez Affecter un groupe de mises à jour

    Capture d’écran de la page du Portail Azure permettant d’attribuer des clusters membres existants à un groupe.

  4. Entrez le nom du groupe de mises à jour auquel vous souhaitez affecter le cluster, puis sélectionnez Affecter.

    Capture d’écran de la page du Portail Azure pour des clusters membres qui montre le formulaire de mise à jour du groupe d’un cluster membre.

Affectez un membre de flotte existant à un groupe de mises à jour à l’aide de la commande az fleet member update avec l’indicateur --update-group défini sur le nom du groupe de mises à jour.

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --update-group group-1

Créer une stratégie de mise à jour

Une stratégie de mise à jour se compose d’une ou plusieurs phases, où une étape peut contenir un ou plusieurs groupes de mises à jour.

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

  2. Dans le menu du service, sous Paramètres, sélectionnez Mise à jour multi-cluster>Stratégies, puis Créer.

  3. Entrez un nom pour la stratégie.

  4. La première fois que vous affichez la page, un diagramme d’explication de stratégie de mise à jour s’affiche pour vous aider à visualiser la façon dont les stratégies fonctionnent.

    Capture d’écran du portail Azure illustrant la création d’une stratégie de mise à jour.

  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. Pour plus d’informations, consultez Ajouter des approbations pour mettre à jour des groupes et des phases.
    • (Facultatif) Suspendre après l’étape : sélectionnez cette option si vous souhaitez définir une pause avant de passer à l’étape suivante.
    • (Facultatif) Durée de pause : sélectionnez une durée prédéfinie ou entrez une valeur personnalisée en secondes.

    Capture d’écran du portail Azure montrant la création de la phase de stratégie de mise à jour d’Azure Kubernetes Fleet Manager.

  6. Affectez un ou plusieurs groupes de mises à jour à l’étape, puis sélectionnez Créer.

    Remarque

    Le nombre maximal de groupes de mises à jour dans chaque phase de mise à jour est de 50.

    Capture d’écran du portail Azure montrant la création de la phase de stratégie de mise à jour d’Azure Kubernetes Fleet Manager, en sélectionnant les groupes de mises à jour à inclure.

Pour ce scénario, nous créons des phases et des groupes pour qu’ils correspondent aux détails utilisés pour le processus du portail Azure.

  1. Créez un fichier JSON pour définir les phases et les groupes pour l’exécution de mises à jour. Les étapes s’exécutent de manière séquentielle dans l’ordre dans lequel elles apparaissent dans le fichier JSON. Les groupes s’exécutent en parallèle à chaque étape, de sorte que l’ordre n’est pas important. Le fichier d’exemple suivant (example-stages.json) définit une stratégie avec deux étapes et inclut des paramètres maxConcurrency et maxAllowedFailures facultatifs :

    {
        "stages": [
            {
                "name": "stage-1",
                "maxConcurrency": "7",
                "maxAllowedFailures": "2",
                "groups": [
                    {
                        "name": "group-1",
                        "maxConcurrency": "3",
                        "maxAllowedFailures": "1"
                    },
                    {
                        "name": "group-2",
                        "maxConcurrency": "50%",
                        "maxAllowedFailures": "25%"
                    }
                ],
                "afterStageWaitInSeconds": 300
            },
            {
                "name": "stage-2",
                "maxConcurrency": "100%",
                "maxAllowedFailures": "0",
                "groups": [
                    {
                        "name": "group-3",
                        "maxConcurrency": "2",
                        "maxAllowedFailures": "0"
                    }
                ]
            }
        ]
    }
    

    maxConcurrency

    Le maxConcurrency champ est facultatif et contrôle le nombre de clusters pouvant être mis à niveau simultanément à l’étape ou au niveau du groupe. Utilisez une plus grande valeur pour mettre à niveau les clusters plus rapidement sur votre flotte, ou une valeur plus petite pour un déploiement plus contrôlé qui limite le rayon d’explosion si des problèmes se produisent.

    Dans cet exemple, stage-1 définit maxConcurrency à "7", ce qui permet à un maximum de "7" clusters de cette étape à être mis à niveau simultanément. Dans stage-1, group-1 limite la concurrence aux "3" clusters, ce qui signifie que jusqu'à "3" dans ce groupe peuvent être mis à niveau en même temps. group-2 autorise la mise à "50%" niveau simultanée de ses clusters (par exemple, si le groupe contient 4 clusters, jusqu’à 2 peuvent être mis à niveau en même temps).

    Les valeurs peuvent être un entier fixe (par exemple, "3") ou un pourcentage (par exemple). "100%" S’il est omis, le système applique les valeurs par défaut. Pour plus d’informations sur la façon dont ces valeurs sont résolues et leurs limites supérieures, consultez Concurrence maximale (préversion).

    maxAllowedFailures

    Le champ maxAllowedFailures est facultatif et détermine le nombre d’échecs de mise à niveau des clusters membres tolérés avant que le groupe ou l’étape ne soit marqué comme ayant échoué. Par défaut (lorsqu’il n’est pas défini ou "0"), une seule défaillance arrête l’exécution de la mise à jour entière.

    Ce paramètre évalue uniquement le nombre d’échecs. Elle n’applique pas un taux de réussite minimal. Un groupe ou une étape peut donc se terminer Completed même si certains ou tous les membres ont échoué, tant que le seuil d’échec n’a pas été dépassé lorsque la flotte a pris ses décisions de planification.

    Dans cet exemple, stage-1 définit maxAllowedFailures sur "2", en tolérant jusqu’à deux défaillances de membres sur l’ensemble de l’étape. Dans stage-1, group-1 tolère l’échec "1" et group-2 tolère l’échec "25%" de ses membres (par exemple, si le groupe contient 4 clusters, jusqu’à 1 échec est toléré). stage-2 définit maxAllowedFailures sur "0", ce qui signifie que toute défaillance arrête immédiatement l’exécution et est souvent utile pour les phases de production.

    Pour la plupart des déploiements, préférez les valeurs basées sur des pourcentages, car elles s’étendent mieux sur différentes tailles de groupe. Évitez de définir la valeur sur le nombre total de membres, sauf si vous souhaitez intentionnellement obtenir, pour ce segment, un comportement équivalant en pratique à « ne jamais échouer ».

    Les valeurs peuvent être un entier fixe (par exemple, "3") ou un pourcentage (par exemple). "25%" Pour plus d’informations sur la façon dont ces valeurs sont résolues, consultez Nombre maximal d’échecs autorisés (préversion).

  2. Créez une stratégie de mise à jour à l’aide de la commande az fleet updatestrategy create avec l’indicateur --stages défini sur le nom de votre fichier JSON.

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-stages.json
    

Étapes suivantes

Vous pouvez utiliser une stratégie de mise à jour dans le cadre d’une exécution manuelle de mise à jour ou d’un profil de mise à niveau automatique. Consultez l'article :