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.
- Assurez-vous d'avoir activé l'API Anthos dans vos projets hôtes de parc. Si l'API Anthos n'est pas activée pour vos projets hôtes de parc, vous pouvez demander à l'équipe de gestion de votre compte de vous inscrire à un essai gratuit d'Anthos pour tester la fonctionnalité de séquençage du déploiement. Si vous vous inscrivez à l'essai gratuit pour tester cette fonctionnalité, assurez-vous d'effectuer un nettoyage une fois que vous l'avez utilisée dans la version bêta privée.
- Assurez-vous d'avoir activé les API requises pour les parcs. Ces API doivent être activées dans vos projets hôtes de parc.
- Assurez-vous de disposer des autorisations IAM requises pour l'enregistrement de cluster. Vous devez accorder les autorisations suivantes :
- Des autorisations d'enregistrement de cluster, dans vos projets hôtes de parc.
- Autorisations d'administrateur de cluster pour tous les clusters GKE à enregistrer.
- Autorisations d'enregistrement de cluster multiprojets pour tous les clusters GKE à enregistrer dans un parc d'un autre projet.
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.
- 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.
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 commandecreate
, vous pouvez utiliser les options des instructions pour créer une séquence de déploiement.
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.
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 etFIRST_SCOPE_PROJECT_ID
par l'ID du projet dans lequel le premier champ d'application est hébergé.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 etSECOND_SCOPE_PROJECT_ID
par l'ID du projet dans lequel le deuxième champ d'application est hébergé.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 etTHIRD_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 êtrek8s_control_plane
ouk8s_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é.