Appliquer de manière sélective les mises à jour de configuration de VM dans un MIG


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

Compute Engine gère les VM d'un MIG en fonction des composants de configuration que vous utilisez : modèle d'instance, configuration facultative sur toutes les instances et configuration avec état facultative.

Chaque fois que vous mettez à jour la configuration des VM d'un MIG en modifiant ces composants, Compute Engine applique automatiquement votre configuration mise à jour aux nouvelles VM ajoutées au groupe.

Pour appliquer une nouvelle configuration aux VM existantes, vous pouvez configurer une mise à jour sélective, également appelée "mise à jour opportuniste". Ce type de mise à jour offre les avantages suivants :

  • Vous pouvez choisir les VM que vous souhaitez mettre à jour.
  • Vous pouvez contrôler la planification et la séquence des mises à jour.
  • Vous pouvez utiliser la gcloud CLI ou REST pour mettre à jour immédiatement toutes les VM.

Si vous souhaitez automatiser le déploiement d'une nouvelle configuration sur l'ensemble des VM d'un MIG ou sur un sous-ensemble aléatoire, consultez la page Appliquer automatiquement les mises à jour de configuration de VM dans un MIG. Pour vous aider à faire votre choix, consultez la section Méthodes pour appliquer une nouvelle configuration aux VM existantes.

Avant de commencer

  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.

Appliquer une nouvelle configuration à des VM sélectionnées

Assurez-vous que le type de règle de mise à jour de votre groupe est défini sur "Quand l'occasion se présente" pour empêcher le MIG d'appliquer automatiquement une nouvelle configuration de VM aux VM existantes. Pour en savoir plus, consultez la section Vérifier le type de règle de mise à jour de votre groupe.

Utilisez ensuite la gcloud CLI ou REST pour mettre à jour la configuration de votre MIG et appliquer la configuration la plus récente à des VM spécifiques ou à l'ensemble des VM du groupe.

gcloud

Pour configurer un nouveau modèle d'instance pour votre groupe, vous pouvez exécuter la commande set-instance-template.

gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE

Appliquer une configuration à des VM spécifiques

Pour appliquer la nouvelle configuration à des VM spécifiques, exécutez la commande update-instances avec l'option --instances.

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

Appliquer une configuration à toutes les VM

Pour appliquer la nouvelle configuration à toutes les VM, exécutez la commande update-instances avec l'option --all-instances.

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

Remplacez les éléments suivants :

  • INSTANCE_GROUP_NAME : nom du MIG
  • INSTANCE_TEMPLATE : nouveau modèle d'instance
  • INSTANCE_NAMES : liste des VM 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.

REST

Pour configurer un nouveau modèle d'instance pour votre groupe, 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 VM 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",
  }]
}

Appliquer une configuration à des VM spécifiques

Pour appliquer la nouvelle configuration à des VM spécifiques, appelez la méthode applyUpdatesToInstances dans votre MIG zonal ou régional, et spécifiez une liste de VM dans la requête.

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
}

Appliquer une configuration à toutes les VM

Pour appliquer la nouvelle configuration à toutes les VM existantes, définissez le champ allInstances sur true :

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 les éléments suivants :

  • 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 VM à 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.

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 VM 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'instanceAucun
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 VM 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.

Étapes suivantes