Aplica de forma selectiva las actualizaciones de configuración de VM en un MIG


En este documento, se describe cómo aplicar de forma selectiva las actualizaciones de configuración 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 los componentes de configuración que usas: plantilla de instancias, configuración opcional de todas las instancias y configuración con estado opcional.

Cada vez que actualices la configuración de VM de un MIG, cambia esos componentes. Compute Engine aplica de forma automática la configuración actualizada a las VM nuevas que se agregan al grupo.

Para aplicar una configuración actualizada a las VM existentes, puedes establecer una actualización selectiva, también conocida como tipo de actualización “oportunista”. Este tipo de actualización ofrece las siguientes ventajas:

  • Puedes seleccionar las instancias que deseas actualizar.
  • Puedes controlar el momento y la secuencia de las actualizaciones.
  • Puedes usar la CLI de gcloud o REST para actualizar todas las VM de inmediato.

Como alternativa, si deseas automatizar el lanzamiento de una configuración nueva a todas o a un subconjunto aleatorio de las VM en un MIG, consulta Aplica de forma automática las actualizaciones de configuración de VM en un MIG. A fin de ayudarte a decidir, consulta Métodos para aplicar una configuración nueva a las VM existentes.

Antes de comenzar

  • Configura la autenticación si aún no lo hiciste. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    REST

    Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Aplicar la configuración actualizada a las VM seleccionadas

Asegúrate de que el tipo de política de actualización de tu grupo esté configurado como “oportunista” para evitar que el MIG aplique de forma automática una configuración de VM nueva a las VM existentes. Para obtener más información, consulta Verifica el tipo de política de actualización de tu grupo.

Luego, usa la CLI de gcloud o REST para actualizar la configuración del MIG y aplicar la configuración más reciente a las VM específicas del grupo o a todas las VM del grupo.

gcloud

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

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

Aplicar la configuración a VM específicas

Para aplicar la configuración actualizada a VM específicas, usa el comando update-instances con la marca --instances.

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

Aplicar la configuración a todas las VM

Para aplicar la configuración actualizada a todas las VMs, usa el comando update-instances con la marca --all-instances.

gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \
    --all-instances \
    --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 VM a las que se 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 disruptiva permitida es replace.

REST

A fin de configurar una plantilla de instancias nueva para tu grupo, 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",
  }]
}

Aplicar la configuración a VM específicas

A fin de aplicar la configuración actualizada a VM específicas, llama al método applyUpdatesToInstances para tu zonal o regional. MIG y especifica una lista de VM en la solicitud.

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
}

Aplicar la configuración a todas las VM

Para aplicar la configuración actualizada a todas las VM existentes, establece el campo allInstances en 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
}

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 VMs 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.

Controla el nivel de interrupción durante las actualizaciones selectivas

Dependiendo de su naturaleza, una actualización puede interrumpir el estado de una instancia. Por ejemplo, para cambiar el disco de arranque de una instancia, se debe reemplazar la instancia. Puedes controlar el nivel de interrupción que se produce 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 las interrupciones tanto como sea posible, establece la acción mínima en NONE. Si tu actualización requiere una acción más disruptiva, Compute Engine realiza la acción necesaria para ejecutar la actualización.
    • 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 que se capturen los cambios de metadatos.
  • Acción más disruptiva permitida: Usa esta opción para evitar que se realice una actualización si requiere 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 VMs 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.Discos, metadatos de instancias y etiquetas 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 VMs 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?