Mettre à jour de manière sélective des instances dans un groupe d'instances géré

Ce document explique comment appliquer de manière sélective les mises à jour de configuration aux instances de machine virtuelle (VM) d'un groupe d'instances géré.

Compute Engine gère les VM dans un MIG en fonction de la configuration que vous spécifiez dans un modèle d'instance et d'une configuration avec état facultative. Il peut arriver que vous souhaitiez mettre à jour cette configuration.

Vous pouvez appliquer de manière sélective la configuration mise à jour à des instances spécifiques, ce qui présente les avantages suivants :

  • Vous pouvez choisir les instances que vous souhaitez mettre à jour.
  • Vous pouvez contrôler la planification et la séquence des mises à jour.
  • Vous pouvez utiliser l'API pour effectuer immédiatement une mise à jour de toutes les instances.

Si vous souhaitez automatiser le déploiement d'une nouvelle configuration sur l'ensemble ou sur un sous-ensemble aléatoire des VM d'un MIG, consultez la section Déployer automatiquement les mises à jour sur des instances d'un MIG. Pour vous aider à choisir, consultez la page Choisir entre les mises à jour automatisées et sélectives.

Avant de commencer

Mettre à jour les instances sélectionnées

Lorsque vous spécifiez un nouveau modèle et que vous souhaitez l'appliquer uniquement aux instances sélectionnées, le groupe d'instances géré appliquera automatiquement le nouveau modèle aux nouvelles instances créées lors du redimensionnement du MIG. Pour les instances existantes, vous pouvez appliquer le nouveau modèle aux instances sélectionnées à l'aide de l'outil gcloud ou de l'API Compute Engine.

gcloud

Pour configurer un nouveau modèle d'instance pour votre groupe, utilisez la commande set-instance-template.

gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE \
    [--zone=ZONE | --region=REGION]

Pour appliquer la mise à jour à des instances spécifiques, utilisez la commande update-instances.

gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAMES \
    --most-disruptive-allowed-action DISRUPTION_LEVEL \
    --minimal-action DISRUPTION_LEVEL

Remplacez l'élément suivant :

  • INSTANCE_GROUP_NAME : nom du MIG
  • INSTANCE_TEMPLATE : nouveau modèle d'instance
  • INSTANCE_NAMES : liste des instances auxquelles appliquer le modèle
  • DISRUPTION_LEVEL : niveau de perturbation minimal ou maximal : none, refresh, restart ou replace
    • L'action minimale par défaut est none.
    • L'action la plus perturbatrice autorisée par défaut est replace.

API

Appelez la méthode patch sur un MIG zonal ou régional, puis mettez à jour le champ versions.instanceTemplate. Pour éviter de déployer automatiquement le nouveau modèle sur toutes les instances du groupe, définissez le champ updatePolicy.type sur OPPORTUNISTIC.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "updatePolicy": {
    "type": "OPPORTUNISTIC"
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
  }]
}

Après avoir configuré une nouvelle version de modèle, appelez applyUpdatesToInstances pour le MIG zonal ou régional. Spécifiez une liste d'instances dans la requête, ou définissez la valeur booléenne allInstances sur true pour mettre à jour toutes les instances.

Mettre à jour des instances spécifiques

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
  ],
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

Mettre à jour toutes les instances

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "allInstances": true,
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

Remplacez l'élément suivant :

  • INSTANCE_GROUP_NAME : nom du groupe
  • NEW_TEMPLATE : nom du nouveau modèle
  • ZONE : zone d'une instance à mettre à jour
  • INSTANCE_NAME_1 et INSTANCE_NAME_2 : noms des instances à mettre à jour
  • DISRUPTION_LEVEL : niveau de perturbation minimal ou maximal : NONE, REFRESH, RESTART ou REPLACE
    • La valeur minimalAction par défaut est NONE.
    • La valeur mostDisruptiveAllowedAction par défaut est REPLACE.

Semblable à d'autres méthodes de groupes d'instances gérés, la méthode applyUpdatesToInstances est basée sur l'intention, ce qui signifie qu'elle renvoie une réponse à l'opération. L'opération peut prendre un certain temps.

Après avoir effectué une requête, vous pouvez en vérifier l'état pour savoir si la mise à jour est terminée.

Mettre à jour des configurations par instance

Lorsque vous appliquez une mise à jour à une instance choisie, le groupe d'instances géré applique le modèle d'instance et la configuration par instance, si elle existe.

Pour en savoir plus, consultez la page Appliquer une configuration avec état à partir des configurations par instance.

Contrôler le niveau de perturbation lors des mises à jour sélectives

Selon la nature de la mise à jour, l'état d'une instance peut être perturbé. Par exemple, la modification du disque de démarrage d'une instance nécessite le remplacement de l'instance. Vous pouvez contrôler le niveau de perturbation pendant une mise à jour sélective en définissant les options suivantes :

  • Action minimale : utilisez cette option pour minimiser autant d'interruptions que possible ou appliquer une action plus perturbatrice que nécessaire.

    • Pour limiter autant les interruptions que possible, définissez l'action minimale sur NONE. Si votre mise à jour nécessite une action plus perturbatrice, Compute Engine effectue l'action nécessaire à l'exécution de la mise à jour.
    • Pour appliquer une action plus perturbatrice que nécessaire, définissez l'action minimale sur RESTART ou REPLACE. Par exemple, Compute Engine n'a pas besoin de redémarrer une VM pour modifier ses métadonnées. Toutefois, si votre application ne lit les métadonnées d'instance que lorsqu'une VM redémarre, vous pouvez définir l'action minimale sur RESTART afin de récupérer les modifications de métadonnées.
  • Action la plus perturbatrice autorisée : utilisez cette option pour empêcher une mise à jour si elle nécessite plus de perturbations que ce que vous pouvez vous permettre. Si votre mise à jour nécessite une action plus perturbatrice que celle définie à l'aide de cet indicateur, la demande de mise à jour échoue. Par exemple, si vous définissez l'action la plus perturbatrice autorisée sur RESTART, la tentative de mise à jour de l'image de disque de démarrage échoue, car cette mise à jour nécessite une recréation de l'instance, une action plus perturbatrice qu'un redémarrage.

Lors de la mise à jour des instances sélectionnées, ces deux options acceptent les valeurs suivantes :

ValeurDescriptionQuelles propriétés de l'instance peuvent être mises à jour ?
NONEN'affecte pas du tout l'instanceAucune
REFRESHNe provoque pas l'arrêt de l'instanceDisques supplémentaires, métadonnées d'instance, libellés, tags
RESTARTArrête l'instance, puis la redémarre.Disques supplémentaires, métadonnées de l'instance, libellés, tags, type de machine
REPLACESupprime l'instance, puis la crée de nouveau.Toutes les propriétés de l'instance stockées dans le modèle d'instance ou la configuration par instance

Remarque : L'action autorisée la plus perturbatrice ne peut pas entraîner moins de perturbations que l'action minimale.

Lorsque vous mettez à jour des instances de manière sélective, les valeurs par défaut suivantes s'appliquent :

  • L'action minimale par défaut est NONE, ce qui limite le moins possible les interruptions.
  • L'action la plus perturbatrice autorisée par défaut est REPLACE. Si vous ne pouvez pas tolérer de telles perturbations, définissez l'action la plus perturbatrice autorisée pour qu'elle soit moins perturbatrice.

Étape suivante