Aplicar de forma selectiva las actualizaciones de configuración de las VMs de 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) de un grupo de instancias gestionado (MIG).

Compute Engine mantiene las VMs de un MIG en función de los componentes de configuración que utilices: plantilla de instancia, configuración opcional de todas las instancias y configuración opcional con reconocimiento del estado.

Cada vez que actualizas la configuración de las VMs de un MIG cambiando esos componentes, Compute Engine aplica automáticamente la configuración actualizada a las VMs nuevas que se añaden al grupo.

Para aplicar una configuración actualizada a las VMs, puedes configurar una actualización selectiva, también conocida como actualización "oportunista". Este tipo de actualización ofrece las siguientes ventajas:

  • Puedes seleccionar las VMs que quieras actualizar.
  • Puedes controlar el momento y la secuencia de las actualizaciones.
  • Puede usar la CLI de gcloud o REST para actualizar todas las VMs inmediatamente.

Si quieres automatizar el lanzamiento de una nueva configuración en todas las VMs de un MIG o en un subconjunto aleatorio de ellas, consulta Aplicar automáticamente actualizaciones de configuración de VMs en un MIG. Para ayudarte a decidir, consulta Métodos para aplicar una nueva configuración a las VMs que ya tienes.

Antes de empezar

  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    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. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

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

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Aplicar la configuración actualizada a las VMs seleccionadas

Asegúrate de que el tipo de política de actualización del grupo sea "oportunista" para evitar que el MIG aplique automáticamente una nueva configuración de VM a las VMs que ya existen. Para obtener más información, consulta Comprobar el tipo de política de actualizaciones de un grupo.

Después, usa la CLI de gcloud o REST para actualizar la configuración del grupo de instancias gestionado y aplicar la configuración más reciente a máquinas virtuales específicas del grupo o a todas las máquinas virtuales del grupo.

gcloud

Para configurar una plantilla de instancia 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 VMs específicas

Para aplicar la configuración actualizada a máquinas virtuales 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 VMs

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

Haz los cambios siguientes:

  • INSTANCE_GROUP_NAME: el nombre del MIG
  • INSTANCE_TEMPLATE: nueva plantilla de instancia
  • INSTANCE_NAMES: lista de máquinas virtuales a las que se aplicará la plantilla
  • DISRUPTION_LEVEL: 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 más disruptiva permitida de forma predeterminada es replace

REST

Para configurar una nueva plantilla de instancia para tu grupo, llama al método patch en un MIG zonal o regional y actualiza el campo versions.instanceTemplate. Para evitar que la nueva plantilla se implemente automáticamente en todas las VMs del grupo, asigna el valor OPPORTUNISTIC al campo updatePolicy.type.

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 VMs específicas

Para aplicar la configuración actualizada a máquinas virtuales específicas, llama al método applyUpdatesToInstances de tu MIG zonal u regional y especifica una lista de máquinas virtuales 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 VMs

Para aplicar la configuración actualizada a todas las VMs, asigna el valor true al campo allInstances:

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
}

Haz los cambios siguientes:

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

Al igual que otros métodos de grupos de instancias gestionados, applyUpdatesToInstances se basa en la intención, lo que significa que devuelve una respuesta de operación. La operación puede tardar un tiempo en completarse.

Después de enviar una solicitud, puedes consultar el estado para verificar que la actualización se ha completado.

Controlar el nivel de interrupción durante las actualizaciones selectivas

En función de la naturaleza de una actualización, puede interrumpir el estado de una instancia. Por ejemplo, para cambiar el disco de arranque de una instancia, es necesario sustituirla. Puedes controlar el nivel de interrupción durante una actualización selectiva configurando las siguientes opciones:

  • Acción mínima: usa esta opción para minimizar las interrupciones lo máximo posible o para aplicar una acción más disruptiva de lo necesario.

    • Para limitar las interrupciones al máximo, define la acción mínima como NONE. Si la actualización requiere una acción más disruptiva, Compute Engine realizará la acción necesaria para ejecutarla.
    • Para aplicar una medida más disruptiva de lo estrictamente necesario, define la acción mínima como 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 definir la acción mínima como RESTART para recoger los cambios en los metadatos.
  • Acción permitida más disruptiva: usa esta opción para evitar una actualización si requiere más interrupciones de las que puedes permitirte. Si tu actualización requiere una acción más disruptiva que la que has definido con esta marca, la solicitud de actualización fallará. Por ejemplo, si asignas RESTART como la acción permitida más disruptiva, no se podrá actualizar la imagen del disco de arranque porque esa actualización requiere que se vuelva a crear la instancia, una acción más disruptiva que un reinicio.

Al actualizar las VMs seleccionadas, ambas opciones aceptan los siguientes valores:

ValorDescripción¿Qué propiedades de instancia se pueden actualizar?
NONENo interrumpas la instancia en ningún momento.Ninguno
REFRESHNo detengas la instancia.Discos adicionales, metadatos de instancias, etiquetas
RESTARTDetén la instancia y vuelve a iniciarla.Discos adicionales, metadatos de la instancia, etiquetas, marcas y tipo de máquina
REPLACEElimina la instancia y vuelve a crearla.Todas las propiedades de la instancia almacenadas en la plantilla de instancia o en la configuración por instancia

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

Cuando actualizas selectivamente las VMs, se aplican los siguientes valores predeterminados:

  • La acción mínima predeterminada es NONE, que limita las interrupciones lo máximo posible.
  • La acción más disruptiva permitida de forma predeterminada es REPLACE. Si no puedes tolerar estas interrupciones, elige una acción permitida que sea menos disruptiva.

Siguientes pasos