Actualiza las instancias de forma selectiva en un MIG

En este documento, se describe cómo aplicar actualizaciones de configuración de forma selectiva a las instancias de máquina virtual (VM) en un grupo de instancias administrado (MIG).

Compute Engine mantiene las VM en un MIG en función de la configuración que especifiques en una plantilla de instancias y la configuración con estado opcional. Te recomendamos que actualices esta configuración cada tanto.

Puedes aplicar una configuración actualizada de forma selectiva a las instancias específicas, lo que ofrece las siguientes ventajas:

  • Puedes seleccionar las instancias que deseas actualizar.
  • Puedes controlar el momento y la secuencia de las actualizaciones.
  • Puedes usar la API para realizar una actualización de todas las instancias de inmediato.

Como alternativa, si deseas automatizar el lanzamiento de una configuración nueva en todas o en un subconjunto aleatorio de las VM en un MIG, consulta Lanza actualizaciones de forma automática para instancias en un MIG. A fin de ayudarte a decidir, consulta Elige entre las actualizaciones automáticas y selectivas.

Antes de comenzar

Actualiza las instancias seleccionadas

Cuando especificas una plantilla nueva y quieres aplicarla solo a las instancias seleccionadas, el MIG aún aplica de forma automática la plantilla nueva a instancias nuevas que se crean cuando el MIG cambia de tamaño. En las instancias existentes, puedes aplicar la plantilla nueva a las instancias seleccionadas con la herramienta de gcloud o la API de Compute Engine.

gcloud

A fin de configurar una plantilla de instancias nueva para tu grupo, usa el comando set-instance-template.

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

Para aplicar la actualización a instancias específicas, usa el comando 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

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del MIG.
  • INSTANCE_TEMPLATE: es la plantilla de instancias nueva
  • INSTANCE_NAMES: es una lista de las instancias a las que se les aplicará la plantilla
  • DISRUPTION_LEVEL: es el nivel de interrupción mínimo o máximo: none, refresh, restart o replace
    • La acción mínima predeterminada es none
    • La acción predeterminada más perjudicial permitida es replace

API

Llama al método patch en un MIG zonal o regional y actualiza el campo versions.instanceTemplate. Para evitar el lanzamiento automático de la plantilla nueva en todas las instancias del grupo, establece el campo updatePolicy.type en 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",
  }]
}

Después de configurar una nueva versión de la plantilla, llama a applyUpdatesToInstances para el MIG zonal o regional. Especifica una lista de instancias en la solicitud o, como alternativa, establece el valor booleano allInstances en true para actualizar todas las instancias.

Actualiza instancias específicas

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
}

Actualiza todas las instancias

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
}

Reemplaza lo siguiente:

  • INSTANCE_GROUP_NAME: Es el nombre del grupo
  • NEW_TEMPLATE: Es el nombre de la plantilla nueva
  • ZONE: Es la zona de una instancia que se debe actualizar.
  • INSTANCE_NAME_1 y INSTANCE_NAME_2: Son los nombres de las instancias que se actualizarán.
  • DISRUPTION_LEVEL: es el nivel de interrupción mínimo o máximo: NONE, REFRESH, RESTART o REPLACE
    • El valor predeterminado de minimalAction es NONE.
    • El valor predeterminado de mostDisruptiveAllowedAction es REPLACE.

Similar a otros métodos de grupo de instancias administrado, applyUpdatesToInstances se basa en la intención, lo que significa que muestra una respuesta de operación. La operación puede tomar un tiempo en completarse.

Después de realizar una solicitud, puedes verificar el estado para comprobar que se haya completado la actualización.

Actualiza la configuración por instancia

Cuando aplicas una actualización a una instancia seleccionada, el MIG aplica la plantilla de instancias y la configuración por instancia, si existe.

Para obtener más información, consulta Aplica la configuración con estado de la configuración por instancia.

Controla el nivel de interrupción durante las actualizaciones selectivas

Según la naturaleza de una actualización, puedes interrumpir el estado de la instancia. Por ejemplo, para cambiar el disco de arranque de una instancia, se debe reemplazar la instancia. Puedes controlar el nivel de interrupción durante una actualización selectiva si configuras las siguientes opciones:

  • Acción mínima: Usa esta opción para minimizar la interrupción tanto como sea posible o aplicar una acción más disruptiva que lo necesario.

    • Para limitar la interrupción tanto como sea posible, configura la acción mínima como NONE. Si tu actualización requiere una acción más disruptiva, Compute Engine realiza la acción necesaria para ejecutarla.
    • Para aplicar una acción más disruptiva que la estrictamente necesaria, configura la acción mínima en RESTART o REPLACE. Por ejemplo, Compute Engine no necesita reiniciar una VM para cambiar sus metadatos. Sin embargo, si tu aplicación lee los metadatos de la instancia solo cuando se reinicia una VM, puedes establecer la acción mínima en RESTART para recopilar los cambios de metadatos.
  • Acción más disruptiva permitida: Usa esta opción para evitar una actualización si se requieren más interrupciones de las que puedes permitirte. Si tu actualización requiere una acción más interruptiva que la acción que configuraste con esta marca, la solicitud de actualización fallará. Por ejemplo, si estableces la acción más interruptiva permitida en RESTART, un intento de actualizar la imagen de disco de arranque falla porque esa actualización requiere que se vuelvan a crear instancias, que es una acción más interruptiva que la de reiniciar.

Al momento de actualizar las instancias seleccionadas, ambas opciones aceptan los siguientes valores:

ValorDescripción¿Qué propiedades de instancia se pueden actualizar?
NONENo interrumpas la instancia en absoluto.Ninguna
REFRESHNo detengas la instancia.Etiquetas, metadatos de instancia y discos adicionales
RESTARTDetén la instancia y vuelve a iniciarla.Tipos de máquina, etiquetas, metadatos de instancia, etiquetas y discos adicionales
REPLACEBorra la instancia y vuelve a crearla.Todas las propiedades de instancia almacenadas en la plantilla de instancias o la configuración por instancia

La acción más perjudicial permitida no puede ser menos perjudicial que la acción mínima.

Cuando actualizas las instancias de forma selectiva, se aplican los siguientes valores predeterminados:

  • La acción mínima predeterminada es NONE, que limita la interrupción tanto como sea posible.
  • La acción predeterminada más perjudicial permitida es REPLACE. Si no puedes tolerar esta interrupción, establece la acción más interruptiva permitida para que sea menos perjudicial.

¿Qué sigue?