Ce document explique comment gérer les mises à niveau de clusters Google Kubernetes Engine (GKE) qui utilisent le séquençage du déploiement avec des étapes personnalisées. Pour créer une séquence de déploiement, vous devez utiliser des groupes de clusters organisés en parcs et, éventuellement, des sous-ensembles de clusters de ces parcs. Vous pouvez choisir le temps de stabilisation des tests souhaité une fois les mises à niveau des clusters terminées dans un groupe (30 jours maximum). Vous pouvez inclure à la fois des clusters Autopilot et Standard. Pour en savoir plus sur le fonctionnement de cette fonctionnalité, consultez À propos du séquençage du déploiement avec des étapes personnalisées.
Si vous gérez des déploiements sur plusieurs parcs, nous vous recommandons d'utiliser un projet dédié pour héberger vos objets RolloutSequence. Ce projet sert de parent et de coordinateur pour les déploiements de la séquence. Ce projet ne fait généralement pas partie de la séquence, c'est-à-dire qu'il ne contient pas de flottes ni de clusters qui en font partie.
Avant de commencer
-
Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :
gcloud initSi vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
- Assurez-vous de disposer de clusters Autopilot ou Standard existants. Pour créer un cluster, consultez la page Créer un cluster Autopilot.
(Facultatif) Si vous n'avez pas encore de projet Google Cloud dédié pour héberger votre configuration
RolloutSequence, créez-en un à l'aide de la console Google Cloud ou d'une autre méthode.Assurez-vous d'avoir activé les API requises pour les parcs. Ces API doivent être activées dans vos projets hôtes de parc pour permettre la création de n'importe quel type de séquence de déploiement. Pour votre projet hôte de séquence de déploiement, activez l'API
gkehub.googleapis.com.
Rôles requis
Pour créer un projet, vous devez disposer du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
Pour créer ou modifier une séquence de déploiement, vous devez disposer du rôle IAM Éditeur de parc (roles/gkehub.editor) dans chaque projet hôte de parc de la séquence de déploiement et dans votre projet hôte de séquence de déploiement. Ce rôle fournit les autorisations suivantes :
gkehub.rolloutsequences.creategkehub.rolloutsequences.getgkehub.rolloutsequences.listgkehub.rolloutsequences.updategkehub.rolloutsequences.deletegkehub.fleet.get
Ces autorisations vous permettent de créer, d'accéder et de modifier des objets RolloutSequence, et d'utiliser des flottes dans la séquence de déploiement.
Si vous devez enregistrer ou annuler l'enregistrement de clusters dans un parc, vous devez disposer de toutes 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.
Pour en savoir plus sur les rôles IAM avec le moins de privilèges requis pour différentes tâches, consultez Obtenir des suggestions de rôles prédéfinis avec l'assistance Gemini.
Configurer une séquence de déploiement
Pour créer une séquence de déploiement, vos clusters doivent être organisés en groupes de parcs. Vous pouvez également créer des étapes précises qui peuvent cibler des sous-ensembles spécifiques de clusters au sein d'un parc à l'aide d'étiquettes Kubernetes. Pour savoir comment organiser vos clusters, consultez l'exemple de banque communautaire. Après avoir organisé les clusters en groupes et les avoir éventuellement libellés, vous créez une séquence de déploiement en définissant la liste ordonnée des étapes et la durée de stabilisation pour chaque groupe.
Organiser les clusters en parcs
Dans une séquence de déploiement, nous vous recommandons d'enregistrer tous les clusters dans le même version disponible. Si les clusters ne sont pas enregistrés dans le même canal, GKE sélectionne une version du canal le plus conservateur de la séquence. Par exemple, si des clusters sont enregistrés dans les canaux Stable et Standard, GKE choisit la version du canal Stable. Nous vous recommandons également que tous les clusters exécutent la même version mineure pour pouvoir bénéficier de la même version cible de mise à niveau automatique.
Si vous avez déjà organisé vos clusters en parcs, vous pouvez ignorer les étapes suivantes et passer à la section Créer des sous-ensembles de clusters.
- Regroupez vos clusters dans des parcs. Vous pouvez organiser vos clusters par environnements de déploiement tels que "Test", "Préproduction" et "Production" (recommandé).
- Enregistrez chaque cluster dans un parc en fonction du regroupement choisi.
Créer des sous-ensembles de clusters (facultatif)
Pour qu'une étape de votre séquence de déploiement cible des clusters spécifiques, vous devez les étiqueter.
Par exemple, pour tester une nouvelle version sur un petit sous-ensemble de clusters avant un déploiement complet, vous pouvez appliquer un libellé canary à ces clusters. Pour ajouter le libellé canary avec la valeur true à un cluster à l'aide de Google Cloud CLI, exécutez la commande suivante :
gcloud container clusters update CLUSTER_NAME \
--location=CLUSTER_LOCATION\
--update-labels=canary=true
Remplacez les éléments suivants :
CLUSTER_NAME: nom du cluster existant.CLUSTER_LOCATION: région ou zone Compute Engine du cluster.
L'option --update-labels=canary=true demande à GKE d'appliquer le libellé canary au cluster .
Pour savoir comment ajouter un libellé à un cluster, consultez Ajouter ou mettre à jour des libellés pour des clusters existants.
Créer une séquence de déploiement avec des étapes personnalisées
Une séquence de déploiement définit l'ordre des mises à niveau à l'aide d'étapes. Pour créer une séquence de déploiement, vous devez d'abord créer un fichier YAML qui définit les étapes, puis créer un RolloutSequence.
Pour s'assurer que la séquence capture tous les clusters, chaque parc doit inclure une étape générique (une étape sans sélecteur de libellé). Cette étape générique capture tous les clusters restants que GKE n'a pas sélectionnés lors des étapes précédentes. Si vous attribuez un même cluster à plusieurs étapes d'un même RolloutSequence, pour résoudre les conflits, GKE attribue implicitement le cluster uniquement à l'étape la plus ancienne.
L'exemple de configuration suivant crée trois étapes :
- La première étape cible tous les clusters du parc
dev. Une fois la mise à niveau terminée, une période de stabilisation de sept jours (valeur de604800secondes) est appliquée. - La deuxième étape cible les clusters du parc
prodqui portent le libellécanary=true. Une fois la mise à niveau terminée, un temps de stabilisation de sept jours est nécessaire. - La troisième étape cible les clusters restants du parc
prod. Une fois la mise à niveau terminée, une période de stabilisation de sept jours est nécessaire.
Enregistrez le manifeste suivant sous le nom
rollout-sequence.yaml:- stage: fleet-projects: - projects/dev soak-duration: 604800s - stage: fleet-projects: - projects/prod soak-duration: 604800s label-selector: resource.labels.canary=='true' - stage: fleet-projects: - projects/prod soak-duration: 604800sVeuillez noter les points suivants :
stage: inclut un parc ou un sous-ensemble de clusters au sein d'un parc. Les clusters des étapes précédentes doivent être entièrement mis à niveau et testés avant que la séquence ne passe à l'étape suivante. Toutefois, si la mise à niveau d'un cluster n'est pas terminée 30 jours après le début du processus de mise à niveau, GKE lance la période de stabilisation.fleet-projects: liste des parcs à partir desquels sélectionner des clusters pour cette étape. Vous ne pouvez faire référence qu'à une seule flotte par étape. Un parc est identifié par le projet dans lequel il est hébergé. Ce projet peut être différent de celui dans lequel se trouvent les clusters, si le parc contient des appartenances inter-projets. Le format permettant de spécifier un projet de parc estprojects/PROJECT_ID.label-selector(facultatif) : sélectionne un sous-ensemble de clusters à partir des flottes spécifiées. Ce champ utilise la syntaxe Common Expression Language (CEL) et doit commencer parresource.labels.soak-duration: délai d'attente après la mise à niveau de tous les clusters d'une étape précédente avant de passer à l'étape suivante. Exprimé en secondes.
Pour créer la séquence de déploiement que vous avez définie dans le fichier manifeste
rollout-sequence.yaml, exécutez la commande suivante :gcloud beta container fleet rolloutsequences create ROLLOUT_SEQUENCE_NAME \ --display-name=DISPLAY_NAME \ --stage-config=rollout-sequence.yamlRemplacez les éléments suivants :
ROLLOUT_SEQUENCE_NAME: identifiant immuable conforme aux spécifications RFC-1034, par exempletest-rollout-sequence.DISPLAY_NAME: chaîne lisible pour votre séquence de déploiement.
Vérifier l'état d'un déploiement
Une fois que vous avez configuré une séquence de déploiement, le système crée automatiquement des objets Rollout pour gérer les mises à niveau. Vous pouvez observer et suivre la progression de ces objets à l'aide des commandes Google Cloud CLI.
Lister les déploiements
Pour lister tous les déploiements actifs et historiques dans le projet hôte de votre séquence de déploiement, exécutez la commande suivante :
gcloud beta container fleet rollouts list --project=HOST_PROJECT_ID
Remplacez HOST_PROJECT_ID par l'ID de votre projet hôte de séquence de déploiement.
Vous pouvez omettre l'option --project=HOST_PROJECT_ID si vous vous trouvez déjà dans le projet où votre séquence de déploiement est hébergée.
Le résultat ressemble à ce qui suit :
NAME STATE CREATE_TIME
05eb251e4f19269e23-node-1-33-5-gke-1201000-t7mqd COMPLETED 2025-10-30T20:07:46
05eb251e4f19269e23-kcp-1-33-5-gke-1201000-djwst COMPLETED 2025-10-30T18:07:06
05eb251e4f19269e23-node-1-33-5-gke-1125000-6bxvu COMPLETED 2025-10-23T17:46:54
05eb251e4f19269e23-kcp-1-33-5-gke-1125000-2f6ct RUNNING 2025-10-23T16:41:33
Dans le résultat précédent, les noms de déploiement qui contiennent kcp font référence aux mises à niveau du plan de contrôle, et ceux qui contiennent node font référence aux mises à niveau des nœuds. Le segment du nom du déploiement après kcp ou node est dérivé de la version GKE.
Décrire un déploiement
Pour obtenir des informations détaillées sur un déploiement particulier, y compris la version cible, l'état et les clusters qui ont été mis à niveau, utilisez la commande describe avec l'ID de déploiement que vous avez obtenu à partir de la commande précédente :
gcloud beta container fleet rollouts describe ROLLOUT_ID \
--project=HOST_PROJECT_ID
Remplacez les éléments suivants :
ROLLOUT_ID: ID du déploiement que vous avez obtenu lorsque vous avez listé les déploiements.HOST_PROJECT_ID: ID du projet dans lequel votre séquence de déploiement est hébergée.
Exemple :
gcloud beta container fleet rollouts describe 927e9a989930cf3b55-kcp-1-32-4-gke-1106006 \
--project=my-hostfleet
Le résultat ressemble à ce qui suit :
createTime: '2025-05-26T11:47:29.909959672Z'
membershipStates:
projects/dev-project-id/locations/us-central1/memberships/c-1:
lastUpdateTime: '2025-05-26T12:20:55.601542481Z'
targets:
- cluster: projects/dev-project-id/locations/us-central1/clusters/c-1
operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-1234567890-abcdefg-hijklm-nopqrst
state: SUCCEEDED
stageAssignment: 1
projects/dev-project-id/locations/us-central1/memberships/c-2:
lastUpdateTime: '2025-05-26T12:22:57.151203493Z'
targets:
- cluster: projects/dev-project-id/locations/us-central1/clusters/c-2
operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-987654321-ghijkl-mno-pqr-stu-vwxyz
state: SUCCEEDED
stageAssignment: 1
projects/prod-project-id/locations/us-central1/memberships/c-1:
lastUpdateTime: '2025-05-26T13:03:34.134308942Z'
targets:
- cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-567891234-efghij-klm-nopq-rstu-vwxyz
state: SUCCEEDED
stageAssignment: 2
projects/prod-project-id/locations/us-central1/memberships/c-2:
lastUpdateTime: '2025-05-26T13:06:34.025261641Z'
targets:
- cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-765432198-01a7b896-67c2-523-6fjjh4-icmdydh
state: SUCCEEDED
stageAssignment: 2
name: projects/user-hostfleet/locations/global/rollouts/05eb251e4f19269e23-kcp-1-32-4-gke-1106006
rolloutSequence: projects/project-id/locations/global/rolloutSequences/my-sequence
state: COMPLETED
updateTime: '2025-07-22T07:36:51.052691989Z'
versionUpgrade:
desiredVersion: 1.32.4-gke.1106006
type: TYPE_CONTROL_PLANE
stages:
- state: COMPLETED
endTime: '2025-05-26T12:22:28.828506491Z'
stageNumber: 1
startTime: '2025-05-26T11:48:28.772658427Z'
soakDuration: 600s
- state: COMPLETED
endTime: '2025-05-26T13:06:20.026390832Z'
stageNumber: 2
startTime: '2025-05-26T12:32:38.419372153Z'
soakDuration: 600s
Informations sur l'état d'un déploiement
Lorsque vous décrivez un déploiement, les champs stages et membershipStates de la sortie indiquent respectivement l'état d'avancement de chaque étape et de chaque cluster au sein de cette étape.
Le tableau suivant répertorie les états potentiels d'une étape :
| État | Description |
|---|---|
PENDING |
La mise à niveau n'a pas encore commencé pour cette étape. |
RUNNING |
La mise à niveau est en cours pour cette étape. Si vous avez configuré un intervalle de maintenance pour les clusters de l'étape, GKE attend que l'intervalle s'ouvre avant de mettre à niveau les clusters. |
SOAKING |
Tous les clusters de cette étape ont terminé leur mise à niveau et la période de stabilisation configurée est en cours. |
FORCED_SOAKING |
La mise à niveau a pris plus de temps (30 jours). GKE a donc forcé le démarrage de la phase de stabilisation. La mise à niveau se poursuit sur les clusters restants. |
COMPLETED |
La phase de trempage est terminée et le déploiement passe à l'étape suivante. |
Le tableau suivant liste les états potentiels d'un cluster dans une séquence :
| État | Description |
|---|---|
PENDING |
La mise à niveau est en attente sur ce cluster. |
INELIGIBLE |
Ce cluster n'est pas éligible à la mise à niveau, probablement en raison d'un écart de version. Le motif d'inéligibilité est indiqué dans le résultat. |
RUNNING |
La mise à niveau est en cours sur ce cluster. |
SUCCEEDED |
La mise à niveau a bien été effectuée sur ce cluster. |
FAILED |
La mise à niveau a échoué sur ce cluster. Les cibles ayant échoué sont réessayées indéfiniment tant que leur étape est active (à l'état RUNNING ou FORCED_SOAKING). |
Gérer une séquence de déploiement
Vous pouvez contrôler les mises à niveau automatiques des clusters avec le séquençage du déploiement de plusieurs manières, comme expliqué dans les sections suivantes.
Lister vos séquences de déploiement
Pour lister toutes les séquences de déploiement dans votre projet hôte, exécutez la commande suivante :
gcloud beta container fleet rolloutsequences list --project=HOST_PROJECT_ID
Remplacez HOST_PROJECT_ID par l'ID de votre projet hôte de séquence de déploiement.
Décrire une séquence de déploiement
Pour afficher les détails d'une séquence de déploiement spécifique, exécutez la commande suivante :
gcloud beta container fleet rolloutsequences describe ROLLOUT_SEQUENCE_NAME \
--project=HOST_PROJECT_ID
Remplacez les éléments suivants :
ROLLOUT_SEQUENCE_NAME: nom de la séquence de déploiement.HOST_PROJECT_ID: ID de votre projet hôte de séquence de déploiement.
Le résultat ressemble à ce qui suit :
createTime: '2025-10-23T16:40:16.403871189Z'
displayName: my-display-name
name: projects/HOST_PROJECT_ID/locations/global/rolloutSequences/ROLLOUT_SEQUENCE_NAME
stages:
- clusterSelector:
labelSelector: resource.labels.canary=='true'
fleetProjects:
- projects/FLEET_PROJECT_ID
soakDuration: 600s
- fleetProjects:
- projects/FLEET_PROJECT_ID
soakDuration: 300s
uid: 5c5b2ac8-9d76-45f9-92ca-5e6bd3fbcaef
updateTime: '2025-10-23T17:11:57.285678399Z'
Modifier une séquence de déploiement
Vous pouvez modifier une séquence de déploiement existante en modifiant le fichier de configuration YAML dans lequel vous l'avez définie. Par exemple, vous pouvez modifier le temps d'imprégnation d'une étape ou modifier l'étape pour changer l'ordre des mises à niveau. Après avoir modifié le fichier, appliquez les modifications.
Par exemple, si vous avez défini la séquence de déploiement d'origine dans un fichier nommé rollout-sequence.yaml, modifiez le fichier selon vos besoins. Exécutez ensuite la commande suivante :
gcloud beta container fleet rolloutsequences update test-rollout-sequence \
--display-name="My Updated Rollout Sequence" \
--stage-config=rollout-sequence.yaml
Supprimer une séquence de déploiement
Pour supprimer une séquence de déploiement, exécutez la commande suivante :
gcloud beta container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME \
--project=HOST_PROJECT_ID
Remplacez les éléments suivants :
ROLLOUT_SEQUENCE_NAMEpar le nom de la séquence de déploiement.- Remplacez
HOST_PROJECT_IDpar l'ID de votre projet hôte de séquence de déploiement.
Lorsque vous supprimez une séquence de déploiement, tous les déploiements en cours pour cette séquence sont annulés. Les clusters qui faisaient partie de la séquence reviennent au comportement de mise à niveau automatique par défaut pour leur version disponible enregistré.
Migrer une séquence de déploiement existante pour utiliser des étapes personnalisées
Si vous utilisez la version de la séquence de déploiement basée sur les flottes, disponible de manière générale, vous pouvez migrer vers une séquence qui utilise des étapes personnalisées en créant un RolloutSequence qui fait référence à vos flottes existantes.
Avant de migrer la séquence, nous vous recommandons de faire une copie de votre configuration de séquence de déploiement actuelle.
Pour migrer votre séquence de déploiement, procédez comme suit :
- Créez un projet Google Cloud dédié pour héberger votre séquence de déploiement. Ce projet ne fait généralement pas partie de la séquence, c'est-à-dire qu'il ne contient pas de parcs ni de clusters qui en font partie.
- Si vous souhaitez que la séquence de déploiement inclue des clusters spécifiques dans un parc, ajoutez des libellés à ces clusters. Cette étape est facultative.
Suivez les instructions de la section Créer une séquence de déploiement avec des étapes personnalisées.
Par exemple, le fichier manifeste suivant, nommé
rollout-sequence-migrate.yaml, fait référence aux flottes existantes dans une séquence de déploiement précédente. Ce fichier manifeste décrit trois étapes, dont une étapecanarydans le parcprod:- stage: fleet-projects: - projects/dev soak-duration: 604800s - stage: fleet-projects: - projects/prod soak-duration: 604800s label-selector: canary=true - stage: fleet-projects: - projects/prod soak-duration: 604800s
Immédiatement après avoir défini un nouveau RolloutSequence pour vos parcs, GKE commence à mettre à niveau les parcs selon la nouvelle séquence et supprime la configuration précédente.
Migrer une séquence de déploiement avec des étapes personnalisées vers la séquence de déploiement précédente
Cette section explique comment revenir de la séquence de déploiement avec des étapes personnalisées au modèle de séquencement basé sur le parc généralement disponible. Ce processus consiste à supprimer le nouveau fichier RolloutSequence et à restaurer votre configuration d'origine basée sur le parc.
Éviter les mises à niveau dans le désordre lors de la migration
Pour éviter les mises à niveau non souhaitées ou dans le désordre pendant que vous reconfigurez votre séquence, appliquez une exclusion de maintenance à vos clusters de production. Cette étape suspend temporairement toutes les mises à niveau automatiques sur ces clusters. Par exemple, vous pouvez configurer une exclusion de maintenance de type no upgrades sur vos clusters de production.
Supprimer la séquence de déploiement
Supprimez l'objet RolloutSequence qui gère vos clusters. Cette suppression désactive la fonctionnalité d'étapes personnalisées.
Pour supprimer le RolloutSequence, exécutez la commande suivante :
gcloud beta container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME
Remplacez ROLLOUT_SEQUENCE_NAME par le nom de votre séquence de déploiement.
Restaurer la configuration précédente de votre séquence de déploiement (sans étapes personnalisées)
Une fois que vous avez supprimé le RolloutSequence, vous pouvez restaurer votre configuration d'origine basée sur le parc. Ce processus consiste à recréer les fonctionnalités clusterupgrade avec leurs paramètres d'origine, y compris les liens upstreamFleet et les temps d'imprégnation pour chaque parc de votre séquence. Pour en savoir plus, consultez Créer une séquence de déploiement.
Supprimer les exclusions de maintenance
Une fois que vous avez restauré votre configuration d'origine de séquençage de déploiement basé sur un parc, supprimez l'exclusion de maintenance que vous avez appliquée lors de la première étape de cette section. GKE reprend les mises à niveau automatiques, qui sont désormais régies par votre séquence restaurée basée sur le parc.
Étape suivante
- En savoir plus sur les mises à niveau des clusters avec séquençage du déploiement