Gérer les mises à niveau des clusters dans les environnements de production


Cette page explique comment gérer les mises à niveau des clusters GKE à l'aide du séquençage du déploiement. Pour en savoir plus, consultez la page À propos des mises à niveau des clusters avec le séquençage du déploiement.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI.

Configurer une séquence de déploiement

Ce document explique comment utiliser des parcs et des champs d'application de parc pour organiser des clusters et créer des séquences de déploiement.

Le séquençage du déploiement vous permet de choisir l'ordre et le calendrier de déploiement des versions sur les ensembles de clusters d'une même version disponible. Vous pouvez créer une séquence de trois champs d'application.

Pour créer une séquence de déploiement, vos clusters doivent être organisés en champs d'application. Pour savoir comment organiser vos clusters en champs d'application, consultez cet exemple. Une fois qu'ils sont organisés en champs d'application, vous pouvez créer une séquence de déploiement en définissant les relations de champ d'application en amont et le temps de stabilisation de chaque champ d'application. Pour en savoir plus sur la manière dont cela fonctionne, consultez la page Créer une séquence de déploiement.

Organiser vos clusters en champs d'application

Dans une séquence de déploiement, tous les clusters de tous les champs d'application doivent être enregistrés dans le même canal de publication et dans la même version mineure. Si ces exigences ne sont pas remplies et si les versions présentent des écarts entre les clusters, cela peut entraîner des problèmes lors du déploiement de la version. Pour en savoir plus, consultez la section Éligibilité du déploiement.

Les champs d'application sont des unités organisationnelles au sein d'un parc. Les clusters peuvent être enregistrés dans un parc et dans un champ d'application hébergés dans un projet différent. Vous pouvez créer une séquence de déploiement avec des champs d'application sur plusieurs parcs.

Si vous avez déjà organisé vos clusters en champs d'application, vous pouvez ignorer les étapes suivantes et passer à la section Créer une séquence de déploiement.

  1. Pour chaque cluster de la séquence, enregistrez votre cluster auprès d'un parc. Le cluster doit être enregistré dans le parc du projet dans lequel vous allez créer le champ d'application de ce cluster. Si vous souhaitez enregistrer un cluster dans un parc dans un autre projet hôte, assurez-vous d'avoir défini les autorisations nécessaires pour l'enregistrement multiprojet.
  2. Créez deux ou trois champs d'application pour organiser vos clusters. Exécutez la commande dans le projet hôte du parc correspondant. Une séquence de déploiement peut comporter jusqu'à trois champs d'application. Répétez la commande pour chaque champ d'application que vous souhaitez créer.

    Consultez la documentation de référence sur gcloud alpha container fleet scopes create pour obtenir la liste complète des options. Avec la commande create, vous pouvez utiliser les options des instructions pour créer une séquence de déploiement.

  3. Ajoutez chaque cluster à un champ d'application.

Créer une séquence de déploiement

Une séquence de déploiement est organisée sous la forme d'une liste associée. Pour en savoir plus, consultez la section Créer une séquence de déploiement. Lorsque vous créez une séquence de déploiement, vous définissez les propriétés suivantes pour chaque champ d'application:

  • Champ d'application en amont: chemin d'accès à la ressource du champ d'application en amont au format projects/{project-number}/locations/global/scopes/{scope-name}. Vous ne définissez pas de champ d'application en amont pour le premier champ d'application d'une séquence. Le champ d'application en amont est éligible aux nouvelles versions pour le champ d'application en aval.
  • Temps de stabilisation: le temps de stabilisation d'un champ d'application correspond au délai entre la fin des mises à niveau (ou le déploiement a pris 30 jours) et le début des mises à niveau sur le champ d'application en aval. Pour en savoir plus, consultez la section Fonctionnement de la qualification des versions dans une séquence de déploiement.

Vous pouvez définir ces propriétés lorsque vous créez ou mettez à jour un champ d'application. Les instructions suivantes utilisent la commande update, mais vous pouvez définir les mêmes propriétés lorsque vous créez un champ d'application avec la commande create.

Pour chacune des commandes suivantes, remplacez SOAK_TIME par le temps de stabilisation du champ d'application que vous mettez à jour.

  1. Définissez le temps de stabilisation pour le premier cluster de la séquence:

    gcloud alpha container fleet scopes update FIRST_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=FIRST_SCOPE_PROJECT_ID
    

    Remplacez FIRST_SCOPE par le chemin complet du premier champ d'application et FIRST_SCOPE_PROJECT_ID par l'ID du projet dans lequel le premier champ d'application est hébergé.

  2. Définissez le champ d'application en amont et le temps de stabilisation pour le deuxième champ d'application de la séquence:

    gcloud alpha container fleet scopes update SECOND_SCOPE \
        --upstream-scope=projects/FIRST_SCOPE_PROJECT_NUMBER/locations/global/scopes/FIRST_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=SECOND_SCOPE_PROJECT_ID
    

    Remplacez SECOND_SCOPE par le chemin complet du premier champ d'application et SECOND_SCOPE_PROJECT_ID par l'ID du projet dans lequel le deuxième champ d'application est hébergé.

  3. Facultatif: si vous souhaitez disposer de trois champs d'application dans une séquence de déploiement, définissez le champ d'application en amont du troisième champ d'application dans la séquence:

    gcloud alpha container fleet scopes update THIRD_SCOPE \
        --upstream-scope=projects/SECOND_SCOPE_PROJECT/locations/global/scopes/SECOND_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=THIRD_SCOPE_PROJECT_ID
    

    Remplacez THIRD_SCOPE par le chemin complet du premier champ d'application et THIRD_SCOPE_PROJECT_ID par l'ID du projet dans lequel le troisième champ d'application est hébergé.

Vérifier la séquence de déploiement

Décrivez le premier champ d'application de la séquence pour confirmer les paramètres. Lorsque vous décrivez le champ d'application pour chaque champ d'application, vous pouvez voir le champ d'application en amont et le champ d'application en aval.

Contrôler le processus de déploiement des versions

Les mises à niveau de clusters avec GKE offrent un certain nombre de mécanismes pour contrôler manuellement le processus. Outre ces contrôles, vous disposez de méthodes supplémentaires pour contrôler les mises à niveau de cluster avec le séquençage du déploiement. Dans cette section, découvrez comment, si nécessaire, vous pouvez exercer un contrôle sur les mises à niveau.

Vérifier l'état d'une séquence de déploiement

Vérifiez l'état d'une séquence de déploiement:

gcloud alpha container fleet scopes describe SCOPE_NAME \
    --show-linked-cluster-upgrade
    --project=SCOPE_PROJECT_ID

Remplacez SCOPE_NAME par le nom de n'importe quel champ d'application dans la séquence de déploiement, et SCOPE_PROJECT_ID par l'ID de projet de ce champ d'application. Si la séquence de déploiement comporte des champs d'application multiprojets dans différents parcs, vous devez disposer des autorisations requises pour exécuter cette commande.

Dans le résultat, les attributs clusterUpgrade(s).spec et clusterUpgrade(s).state contiennent des informations supplémentaires sur la mise à niveau du cluster, telles que le temps de stabilisation, les remplacements de mise à niveau du cluster et l'état de la mise à niveau. Pour en savoir plus sur les informations fournies avec cette commande, consultez la section Vérifier l'état du déploiement de la version en séquence.

Si vous n'avez besoin que d'informations sur un champ d'application de la séquence, remplacez l'option --show-linked-cluster-upgrade par --show-cluster-upgrade.

Consultez la documentation de référence sur gcloud alpha container fleet scopes describe pour obtenir la liste complète des options.

Pour afficher l'état des clusters individuels d'un champ d'application, exécutez la commande suivante dans le projet du parc dans lequel se trouve le champ d'application:

gcloud alpha container fleet features describe clusterupgrade

Résoudre les problèmes d'éligibilité au déploiement

Si tous les clusters d'une séquence de déploiement n'ont pas la même cible de mise à niveau, GKE risque de ne pas pouvoir effectuer les mises à niveau des clusters, car les clusters du champ d'application en amont ne valident pas la cible de mise à niveau nécessaire pour les clusters de le champ d'application en aval.

Pour vérifier si votre séquence de déploiement présente des problèmes d'éligibilité, vérifiez l'état de la séquence de déploiement. Si un champ d'application n'est pas éligible, suivez les instructions pour afficher l'état des clusters individuels d'un champ d'application.

Si un cluster n'est pas éligible car il utilise une version antérieure (par exemple, la plupart des clusters du champ d'application sont mis à niveau de la version 1.23 vers la version 1.24 et un cluster se trouve dans la version 1.22), vous pouvez mettre à jour le cluster manuellement vers la version 1.24 pour résoudre l'écart de version.

Si un cluster n'est pas éligible, car il est dans une version ultérieure (par exemple, la plupart des clusters du champ d'application sont mis à niveau de la version 1.23 vers la version 1.24 et un cluster se trouve dans la version 1.25), vous ne pouvez pas mettre à niveau manuellement le cluster pour résoudre l'écart de version.

Pour faire progresser immédiatement les mises à niveau des clusters, supprimez tous les clusters dont l'état est INELIGIBLE en suivant les instructions de la section Faire progresser les déploiements partiellement éligibles.

Modifier le temps de stabilisation

Si vous souhaitez que le temps de stabilisation pour un déploiement de version spécifique soit différent du temps de stabilisation configuré pour la séquence, vous pouvez le modifier à l'aide de l'option --add-upgrade-soaking-override avec la commande suivante:

gcloud alpha container fleet scopes update SCOPE_NAME \
    --add-upgrade-soaking-override=SOAK_TIME \
    --upgrade-selector=name=UPGRADE_NAME,version=VERSION

Remplacez les éléments suivants :

  • SCOPE_NAME: nom du champ d'application pour lequel vous souhaitez ignorer le temps de stabilisation utilisé pour le déploiement d'une version spécifique.
  • SOAK_TIME: temps de stabilisation à utiliser autre que la valeur par défaut (par exemple, "0d" si vous souhaitez ignorer le temps de stabilisation pour un déploiement de version).
  • UPGRADE_NAME: nom de la mise à niveau, qui peut être k8s_control_plane ou k8s_node.
  • VERSION: version de GKE pour laquelle vous souhaitez obtenir le temps de stabilisation après le déploiement sur ce champ d'application, par exemple, 1.25.2-gke.400.

Par exemple, si vous avez déjà qualifié une nouvelle version et que vous souhaitez que les mises à niveau commencent dans le champ d'application suivant, vous pouvez définir le temps de stabilisation sur zéro. Vous pouvez également l'utiliser si vous souhaitez obtenir plus de temps que le temps d'évaluation par défaut pour qualifier une version spécifique.

Modifier l'ordre d'une séquence

Si vous souhaitez modifier l'ordre d'une séquence, suivez les instructions de la section Créer une séquence de déploiement pour mettre à jour les champs d'application en amont.

Retarder l'achèvement du déploiement de la version du champ d'application

Si vous devez empêcher temporairement un champ d'application de terminer le déploiement d'une nouvelle version sur ses clusters, vous pouvez ajouter une exclusion de maintenance à tout cluster qui n'est pas mis à niveau vers la version cible Cela peut suspendre le délai d'évaluation d'un champ d'application ou le laisser en aval pendant 30 jours maximum. Au bout de 30 jours, le champ d'application commence à s'intégrer.

Vous pouvez également modifier le temps de stabilisation pour ce champ d'application sur 30 jours pour maximiser la durée d'attente de la séquence de déploiement avant de passer au champ d'application suivant.

Si vous devez retarder davantage les mises à niveau à venir pour le champ d'application suivant, vous pouvez utiliser les exclusions de maintenance pour les clusters du champ d'application suivant.

Faire progresser les déploiements partiellement éligibles

Si les mises à niveau d'un cluster sur un champ d'application n'ont pas encore atteint la limite de 30 jours et ne se terminent pas en raison de problèmes d'éligibilité du déploiement (par exemple, des écarts de version dans un champ d'application), vous pouvez supprimer un cluster d'un champ d'application pour terminer le déploiement de la version et commencer le temps de stabilisation, ou passer au champ d'application suivant dans la séquence de déploiement. Vous pouvez également supprimer un cluster d'un champ d'application pour d'autres raisons, par exemple si l'utilisation de ce cluster n'est plus liée aux autres clusters du champ d'application.

Suivez les instructions pour supprimer des clusters des champs d'application.

Une fois que vous avez supprimé tous les clusters qui empêchent le déploiement de la version d'un champ d'application, le déploiement de la version du champ d'application est terminé. Pour vérifier cela, suivez les instructions de la section Vérifier l'état d'un déploiement de version.

Supprimer une séquence

Pour supprimer une séquence, utilisez la commande suivante pour supprimer l'association de champ d'application en amont pour le deuxième champ d'application (et le troisième, si cette séquence de déploiement inclut trois champs d'application):

gcloud alpha container fleet scopes update SCOPE_NAME --reset-upstream-scope

Remplacez SCOPE_NAME par le nom du champ d'application que vous souhaitez supprimer.

Effectuer un nettoyage

Pour éviter des frais de facturation inattendus, si vous vous êtes inscrit à un essai gratuit de l'API Anthos pour tester la fonctionnalité de séquençage du déploiement, veillez à la désactiver une fois la fonctionnalité testée dans la version bêta privée. Vous devez désactiver l'API avant que votre projet hôte de parc ne soit supprimé de la liste d'autorisation pour cette fonctionnalité.

Étapes suivantes