Implementa actualizaciones en los MIG

Un grupo de instancias administrado (MIG) contiene una o más instancias de máquinas virtuales (VM) que se crean mediante una plantilla de instancias. Para actualizar instancias en un MIG, puedes realizar solicitudes de actualización al grupo como conjunto mediante la función Actualizador de MIG.

El Actualizador de grupos de instancias administrado te ayuda a implementar nuevas versiones de software en instancias en tus grupos de instancias administrados, mientras controlas la velocidad de implementación, el nivel de interrupción del servicio y el alcance de la actualización. El Actualizador ofrece dos ventajas principales, que son las siguientes:

  • El lanzamiento de una actualización se realiza automáticamente según tus especificaciones, sin necesidad de una entrada adicional del usuario después de la solicitud inicial.
  • Puedes realizar implementaciones parciales, lo que permite realizar pruebas.

Si permites que se implemente un nuevo software dentro de un grupo de instancias administrado existente, no es necesario que vuelvas a configurar el grupo de instancias o reconectar el balanceo de cargas, el ajuste de escala automático o la reparación automática cada vez que se lanza una nueva versión del software. Sin el Actualizador, las versiones de software nuevas deben implementarse mediante la creación de un nuevo grupo de instancias administrado con una nueva versión de software, que requiera una configuración adicional cada vez, o mediante una recreación manual, iniciada por el usuario, instancia por instancia. Ambos enfoques requieren pasos manuales significativos durante todo el proceso.

Antes de comenzar

Inicia una actualización progresiva básica

Una actualización progresiva es una actualización que se implementa de forma gradual en todas las instancias de un grupo de instancias hasta que todas estén actualizadas. Puedes controlar varios aspectos de una actualización progresiva, como la cantidad de instancias que se pueden desconectar para la actualización, el tiempo de espera entre instancias de actualización, si la actualización afecta a todas las instancias o solo a una parte, etcétera.

Cuando se realiza una actualización progresiva, se debe tener en cuenta la siguiente información:

  • Las actualizaciones se basan en la intención. Cuando realizas la solicitud de actualización inicial, la API muestra una respuesta exitosa para confirmar que la solicitud fue válida, pero eso no indica que la actualización fue exitosa. Debes verificar el estado del grupo de instancias administrado para determinar si la actualización se implementó correctamente.

  • La API de Updater es una API declarativa. La API espera una solicitud para especificar la configuración deseada posterior a la actualización del grupo de instancias administrado, en lugar de una llamada de función explícita.

  • La función de Actualizador admite hasta dos versiones de plantilla de instancias en el grupo de instancias administrado. Esto significa que puedes especificar dos versiones diferentes de plantilla de instancias para tu grupo de instancias administrado, lo cual es útil cuando se realizan actualizaciones canary.

Para iniciar una actualización progresiva básica en la que la actualización se aplica al 100% de las instancias del grupo, sigue las instrucciones que se indican a continuación.

Console

  1. En Cloud Console, ve a la página Grupos de instancias.

    Ir a la página Grupos de instancias

  2. Selecciona el grupo de instancias que deseas actualizar.
  3. En la parte superior de la página, haz clic en Actualización progresiva.
  4. En Plantilla, abre la lista desplegable y selecciona la plantilla nueva a la que deseas actualizar.
  5. Para el tamaño de destino, ingresa 100% a fin de actualizar todas las instancias.
  6. O bien, puedes activar o desactivar opciones de configuración, como si la actualización es proactiva (el grupo reemplaza instancias de manera activa) o, en cambio, oportunista (el grupo no reemplaza instancias de forma activa, sino que aplica la actualización cuando las instancias se reemplazan por otros medios). También puedes proporcionar aumento máximo, opciones de máximo de instancias no disponibles y tiempo de espera mínimo.
  7. Haz clic en Actualizar para comenzar la actualización.

gcloud

Mediante la herramienta de línea de comandos de gcloud, ejecuta el comando rolling-action start-update:

gcloud compute instance-groups managed rolling-action start-update instance-group-name \
    --version template=instance-template-name
    [--zone zone | --region region]

Reemplaza lo siguiente:

  • instance-group-name: el nombre del grupo de instancias que se va a actualizar.
  • instance-template-name: la nueva plantilla de instancias a la que se va a actualizar el grupo de instancias.
  • zone: la zona de este grupo de instancias si dicho grupo es zonal.
  • region: la región de este grupo de instancias si dicho grupo es regional.

API

En la API, realiza una solicitud de PATCH al recurso del administrador de grupos de instancias:

PATCH https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name

Si el grupo de instancias es un grupo de instancias administrado regional, reemplaza zones/zone por regions/region.

La carga útil de la solicitud contiene lo siguiente:

El siguiente ejemplo es la configuración mínima necesaria para iniciar una actualización en la API.

Si no especificas lo contrario, la configuración predeterminada de las propiedades maxSurge y maxUnavailable es 1 multiplicado por la cantidad de zonas afectadas. Esto significa que el Actualizador solo hace que 1 instancia no esté disponible en cada zona afectada y solo crea 1 instancia adicional por zona durante la actualización.

Esta solicitud de ejemplo actualiza el 100% de las instancias a la nueva plantilla de instancias.

{
  "instanceTemplate": "global/instanceTemplates/example-template",
  "updatePolicy": {
    "type": "proactive"
   }
 }

Después de realizar una solicitud, puedes supervisar la actualización para saber cuándo finalizó.

Configura opciones para tu actualización

Si deseas obtener actualizaciones más complejas, puedes configurar opciones adicionales para una solicitud de actualización específica. Estas opciones se describen a continuación.

Aumento máximo

Establece la propiedad maxSurge para permitir que el Actualizador cree de forma temporal nuevas instancias mayores que targetSize durante la actualización. Por ejemplo, si estableces maxSurge en 5, el grupo de instancias administrado usa la nueva plantilla de instancias para crear hasta 5 instancias nuevas por encima de su tamaño de destino. Si estableces un valor mayor de maxSurge se acelera tu actualización, por el costo de instancias adicionales, y se factura de acuerdo con la hoja de precios de Compute Engine.

Si no estableces el valor maxSurge, se usa el valor predeterminado. En grupos de instancias administrados zonales, el valor predeterminado para maxSurge es 1. En el caso de los grupos de instancias administrados regionales, el valor predeterminado es la cantidad de zonas asociadas al grupo de instancias administrado regional.

Esta opción solo se reconoce cuando se configura con la acción mínima REPLACE, pero no es compatible con la configuración de la acción RESTART. Puedes especificar un número fijo o, si el grupo de instancias administrado tiene 10 instancias o más, un porcentaje. Si estableces un porcentaje, el Actualizador redondea el número de instancias de ser necesario.

maxSurge solo funciona si tienes una cuota o recursos suficientes para admitir los recursos adicionales.

Máximo de instancias no disponibles

Establece la configuración de maxUnavailable de modo que solo una cierta cantidad de instancias esté disponible en cualquier momento durante la actualización. Por ejemplo, si estableces maxUnavailable en 5, entonces solo 5 instancias se desconectan para actualizarse a la vez. Usa este parámetro para controlar cuánto interrumpe la actualización a tu servicio y controlar la frecuencia con la que se implementa la actualización.

Este número también incluye cualquier instancia que no esté disponible por otros motivos. Por ejemplo, si el grupo de instancias está en proceso de cambiar el tamaño, es posible que las instancias en creación no estén disponibles, estas instancias se considerarían dentro del número maxUnavailable. Puedes especificar un número fijo o, si el grupo de instancias administrado tiene 10 instancias o más, un porcentaje. Si estableces un porcentaje, el Actualizador redondea la cantidad de instancias, de ser necesario.

El valor predeterminado para maxUnavailable en un grupo de instancias administrado zonal es 1. En un grupo de instancias administrado regional, el valor predeterminado para number-of-zones (la cantidad de zonas seleccionadas) es 3.

Tiempo de espera mínimo

Establece minReadySeconds para especificar la cantidad de tiempo de espera antes de considerar que una instancia recién creada o reiniciada está actualizada. Usa esta función para controlar la velocidad a la que se implementa la actualización. El temporizador comienza cuando se cumplen las siguientes condiciones:

Ten en cuenta que para que el resultado de la verificación de estado sea bueno, el Actualizador hará lo siguiente:

  1. Esperar hasta el período de tiempo especificado por autohealingPolicies.initialDelaySec para que la verificación de estado muestre HEALTHY.
  2. Luego, esperar el período de tiempo especificado por minReadySeconds.

Si la verificación de estado no muestra HEALTHY dentro de initialDelaySec, el Actualizador declara que la instancia de VM no está en buen estado y puede detener la actualización. Mientras la instancia de VM espera la verificación durante los períodos de tiempo initialDelaySec y minReadySeconds, la currentAction de la instancia es VERIFYING. Sin embargo, el estado de la instancia de VM subyacente sigue siendo RUNNING.

Si no hay verificaciones de estado del grupo de instancias, el temporizador comienza cuando el estado de la instancia es RUNNING. El valor máximo de la propiedad minReadySeconds es 3,600 segundos (1 hora).

Acción mínima

Establece la propiedad de acción mínima para controlar la acción mínima que debe realizar el Actualizador a fin de actualizar las instancias en el grupo. Por ejemplo, si estableces REPLACE como la acción mínima, todas las instancias afectadas se borrarán y se reemplazarán con una nueva, incluso si no es necesario.

Establecer una acción mínima garantiza que el Actualizador realizará como mínimo esa acción. Sin embargo, si el Actualizador determina que la acción mínima que especificas no es suficiente para realizar la actualización, podría realizar una acción más perjudicial. Por ejemplo, si configuras RESTART como la acción mínima, el Actualizador intenta reiniciar las instancias para aplicar la actualización. Sin embargo, el Actualizador realizará una acción más perjudicial si la actualización lo requiere. Por ejemplo, reiniciar una instancia no sirve para cambiar su SO, por lo que el Actualizador reemplazará las instancias del grupo de instancias con instancias de VM nuevas.

Las acciones aplicables son REPLACE o RESTART:

  • RESTART. Reinicia la instancia (realiza una solicitud stop y start ). Si tu solicitud de actualización requiere que la instancia se reemplace para que los cambios se apliquen (por ejemplo, cambiar la imagen requeriría que la instancia se borre y se reemplace), se ve obligado a realizar REPLACE.

  • REPLACE. Borra la instancia existente y crea una instancia a partir de la plantilla de destino. El Actualizador crea una instancia con todas las propiedades de instancia nuevas, como las nuevas direcciones IP internas y externas.

En el siguiente diagrama se muestra cómo afectan estas opciones a tus instancias.

Forma en la que las opciones del Actualizador afectan tu solicitud.

Ejemplos de actualizaciones adicionales

Aquí hay algunos ejemplos de línea de comandos con opciones de configuración comunes.

Realiza una actualización progresiva de todas las instancias de VM, pero crea hasta 5 instancias nuevas por encima del tamaño de destino a la vez

gcloud compute instance-groups managed rolling-action start-update instance-group-name \
    --version template=new-template \
    --max-surge 5 \
    [--zone zone | --region region]

Realiza una actualización progresiva con un máximo de 3 máquinas no disponibles y un tiempo de espera mínimo de 3 minutos antes de marcar una nueva instancia como disponible

gcloud compute instance-groups managed rolling-action start-update instance-group-name \
    --version template=new-template \
    --min-ready 3m \
    --max-unavailable 3 \
    [--zone zone | --region region]

Por ejemplo, si tienes 1,000 instancias y ejecutas este comando, el Actualizador crea hasta 100 instancias antes de comenzar a quitar las instancias que estén ejecutando la plantilla de instancias anterior.

Realiza una actualización progresiva de todas las instancias de VM, pero crea hasta un 10% de instancias nuevas por encima del tamaño objetivo a la vez

gcloud compute instance-groups managed rolling-action start-update instance-group-name \
    --version template=new-template \
    --max-surge 10% \
    [--zone zone | --region region]

Inicia una actualización canary

La función Actualizador te permite realizar actualizaciones canary, para que puedas probar tus actualizaciones en un subconjunto aleatorio de instancias antes de confirmarlas por completo.

Una actualización canary es una actualización que se aplica a un número parcial de instancias del grupo de instancias. Las actualizaciones canary te permiten probar nuevas funciones o actualizaciones en un subconjunto de instancias, en lugar de implementar una actualización que podría ser perjudicial para todas tus instancias. Si una actualización no funciona bien, puedes revertir un número pequeño de instancias, lo que minimiza las interrupciones para tus usuarios. Desde la perspectiva del servidor, una actualización canary es igual a una actualización progresiva estándar, excepto que la cantidad de instancias que se deben actualizar es menor que el tamaño total del grupo de instancias. Al igual que una actualización progresiva estándar, una actualización canary es perjudicial para las instancias afectadas, ya que, las instancias afectadas se borran y se reemplazan por instancias de VM nuevas durante la actualización.

Para iniciar una actualización canary sigue estos pasos:

  • Especifica hasta dos versiones de plantilla de instancias; por lo general, se usa una plantilla de instancias nueva para realizar pruebas canary y la plantilla de instancias actual para el resto de las instancias. Por ejemplo, puedes especificar que el 20% de tus instancias se creen en función de new-instance-template mientras que el resto de las instancias continúan ejecutándose en old-instance-template. No puedes especificar más de dos plantillas de instancias a la vez.

  • Siempre debes especificar un tamaño de destino (targetSize) para la versión canary. No puedes iniciar una actualización canary si omites el tamaño de destino para la versión canary. Por ejemplo, si especificaste que el 10% de las instancias deben usarse para realizar pruebas canary, el 90% restante no se toca y usan la plantilla de instancias actual.

Console

  1. En Cloud Console, ve a la página Grupos de instancias.

    Ir a la página Grupos de instancias

  2. Selecciona el grupo de instancias que deseas actualizar.
  3. En la parte superior de la página, haz clic en Actualización progresiva.
  4. Haz clic en Agregar plantilla y elige la nueva plantilla de instancias para realizar pruebas canary.
  5. En Tamaño de destino, ingresa el porcentaje o el número fijo de instancias que deseas usar para realizar pruebas canary en la nueva plantilla de instancias.
  6. De manera opcional, puedes activar o desactivar opciones de configuración, como si la actualización es proactiva (el grupo borra y reemplaza las instancias de forma activa) o, en cambio, oportunista (el grupo no reemplaza las instancias de forma activa, pero aplica la actualización cuando se crean instancias por otras razones). También puedes proporcionar aumento máximo, opciones de máximo de instancias no disponibles y tiempo de espera mínimo.
  7. Haz clic en Actualizar para comenzar la actualización.

gcloud

Con la herramienta de línea de comandos de gcloud, proporciona la plantilla actual y la plantilla nueva para expresar de forma explícita cuántas instancias debe usar cada plantilla:

gcloud compute instance-groups managed rolling-action start-update instance-group-name \
    --version template=current-instance-template \
    --canary-version template=new-template,target-size=size \
    [--zone zone | --region region]

Reemplaza lo siguiente:

  • current-instance-template: la plantilla actual que el grupo de instancias está ejecutando.
  • new-template: la nueva plantilla con la que quieres realizar una actualización canary.
  • size: el número o porcentaje de instancias a las que deseas aplicar esta actualización. Debes aplicar la propiedad target-size a la plantilla --canary-version. Solo puedes establecer un porcentaje si el grupo de instancias contiene 10 instancias o más.
  • zone: la zona de este grupo de instancias si dicho grupo es zonal.
  • region: la región de este grupo de instancias si dicho grupo es regional.

Por ejemplo, el siguiente comando realiza una actualización canary que despliega my-template-b al 10% de las instancias en el grupo de instancias:

gcloud compute instance-groups managed rolling-action start-update my-ig1 \
    --version template=my-template-A \
    --canary-version template=my-template-B,target-size=10%

API

En la API, realiza una solicitud de PATCH al recurso del administrador de grupos de instancias:

PATCH https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name

La carga útil de la solicitud debe contener la plantilla de instancias actual y la plantilla de instancias nueva en la que deseas realizar pruebas canary. Por ejemplo:

{
 "versions": [
  {
   "instanceTemplate": "global/instanceTemplates/new-template",
   "targetSize": {
    "[percent|fixed]": number|percentage # Use `fixed` for a specific number of instances
   }
  },
  {
   "instanceTemplate": "global/instanceTemplates/current-instance-template"
  }
 ]
}

Reemplaza lo siguiente:

  • new-template: el nombre de la nueva plantilla con la que quieres realizar una actualización canary.
  • number|percentage: el número fijo o porcentaje de instancias para realizar pruebas canary en esta actualización. Solo puedes establecer un porcentaje si el grupo de instancias contiene 10 instancias o más. De lo contrario, proporciona un número fijo.
  • current-instance-template: el nombre de la plantilla actual que está ejecutando el grupo de instancias.

Avanza una actualización canary

Después de ejecutar una actualización canary, puedes decidir si deseas confirmar la actualización al 100% del grupo de instancias o revertirla.

Console

  1. En Cloud Console, ve a la página Grupos de instancias.

    Ir a la página Grupos de instancias

  2. Selecciona el grupo de instancias que deseas actualizar.
  3. En la parte superior de la página, haz clic en Actualización progresiva.
  4. En Plantilla, actualiza el tamaño de destino de la plantilla canary al 100% para reenviar la plantilla a todas sus instancias. O bien, puedes reemplazar la plantilla principal con la plantilla canary y establecer el tamaño objetivo al 100%. Luego, puedes quitar el segundo campo de plantilla por completo.
  5. Haz clic en Actualizar para comenzar la actualización.

gcloud

Si deseas confirmar tu actualización canary, reenvía la actualización mediante la misma solicitud de actualización, pero configura solo version y omite --canary-version. Con la herramienta de línea de comandos de gcloud:

gcloud compute instance-groups managed rolling-action start-update instance-group-name \
    --version template=new-template \
    [--zone zone | --region region]

API

En la API, realiza una solicitud de PATCH al recurso del administrador de grupos de instancias:

PATCH https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name

En el cuerpo de la solicitud, especifica la nueva plantilla de instancias como version y omite la plantilla de instancias anterior de tu cuerpo de solicitud. Omite la especificación de tamaño de destino para revertir la actualización al 100% de las instancias. Por ejemplo, el cuerpo de solicitud se vería del siguiente modo:

{
"versions": [
   {
   "instanceTemplate": "global/instanceTemplates/new-template" # New instance template
   }
 ]
}

Reemplaza new-template por el nombre de la nueva plantilla de instancias que deseas reenviar.

Inicia una actualización oportunista o proactiva

De manera predeterminada, las actualizaciones realizadas con la herramienta de línea de comandos de gcloud son proactivas y las actualizaciones iniciadas en la API son oportunistas.

En el caso de las actualizaciones proactivas, Compute Engine programa de manera activa acciones para aplicar las actualizaciones solicitadas a las instancias según sea necesario. En muchos casos, esto implica borrar y volver a crear instancias de forma proactiva.

También, puedes optar por realizar una actualización oportunista si una actualización proactiva puede ser demasiado perjudicial. Una actualización oportunista solo se aplica cuando inicias de forma manual la actualización en instancias seleccionadas o cuando el grupo de instancias administrado crea nuevas instancias. El grupo de instancias administrado crea nuevas instancias cuando otro servicio, como un escalador automático o un usuario cambia el tamaño del grupo de instancias administrado. Compute Engine no inicia solicitudes de manera activa para aplicar actualizaciones oportunistas.

En ciertas situaciones, una actualización oportunista es útil porque no deseas causar inestabilidad en el sistema si se puede evitar. Por ejemplo, si tienes una actualización no crítica que se puede aplicar según sea necesario sin ninguna urgencia y tienes un grupo de instancias administrado que se está escalando automáticamente, realiza una actualización oportunista de modo que Compute Engine no elimine de forma activa tus instancias existentes para aplicar la actualización. Cuando se reduce el tamaño, el escalador automático opta por terminar las instancias con la plantilla anterior, así como las instancias que aún no son RUNNING.

A fin de elegir si una actualización es oportunista o proactiva, establece la propiedad type en OPPORTUNISTIC o PROACTIVE mediante la herramienta de línea de comandos de gcloud o la API.

Console

  1. En Cloud Console, ve a la página Grupos de instancias.

    Ir a la página Grupos de instancias

  2. Selecciona el grupo de instancias que deseas actualizar.
  3. En la parte superior de la página, haz clic en Actualización progresiva.
  4. En Plantilla, elige una plantilla con el fin de actualizar tu grupo de instancias y selecciona un tamaño de destino para la plantilla.
  5. En Modo de actualización, elige entre una actualización oportunista o proactiva.
  6. Haz clic en Actualizar para comenzar la actualización.

gcloud

Con la herramienta de línea de comandos de gcloud, ejecuta el siguiente comando:

gcloud compute instance-groups managed rolling-action start-update instance-group-name \
    --version template=instance-template \
    --type opportunistic|proactive \
    [--zone zone | --region region]

API

En la carga útil de solicitud para iniciar una actualización, incluye la propiedad type en tu updatePolicy: Reemplaza new-template con el nombre de la plantilla nueva con la que deseas realizar una actualización canary. Si quieres una actualización oportunista, reemplaza PROACTIVE por OPPORTUNISTIC.

{
  "updatePolicy": {
    "type": "PROACTIVE" # Performs a proactive update
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/new-template",
    }]
}

Actualiza las instancias seleccionadas

Cuando inicias una actualización oportunista, debes esperar a que Compute Engine lance la actualización a medida que surjan las oportunidades. Sin embargo, si quieres tener más control sobre el lanzamiento, puedes iniciar esa actualización de inmediato en instancias específicas de tu grupo de instancias administrado.

Iniciar las actualizaciones de forma manual te permite lo siguiente:

  • Seleccionar las instancias que deseas actualizar.
  • Aplicar una actualización con la menor cantidad posible de interrupciones necesarias para que se complete la actualización. Por ejemplo, si solo estás actualizando metadatos, puede que no sea necesario reiniciar la instancia para completar la actualización. Al momento de iniciar la actualización de modo manual, la acción mínima necesaria se realiza automáticamente.
  • Aplicar el reinicio o la recreación de la instancia, incluso si esas acciones no son necesarias para aplicar la actualización. Por ejemplo, es posible que desees reiniciar una VM incluso si solo estás actualizando los metadatos porque tu software invitado tiene que recolectar los metadatos nuevos en el arranque de la VM.
  • Evitar una actualización si requiere más interrupciones de las que puedes permitirte.
  • Realizar una actualización de todas las instancias seleccionadas de inmediato, sin restringir el lanzamiento mediante las restricciones maxSurge y maxUnavailable.

La acción mínima y la acción más perjudicial permitidas

Según la naturaleza de una actualización, puedes interrumpir el estado de la instancia. Por ejemplo, cambiar el tipo de máquina de una instancia requiere que la VM se reinicie, mientras que cambiar su imagen de arranque requiere borrar y reemplazar la instancia.

Puedes controlar el nivel de interrupción mediante las marcas minimal-action y most-disruptive-allowed-action:

  • minimal-action te permite forzar una acción más perjudicial que lo necesario.
  • most-disruptive-allowed-action te permite evitar una actualización si se requieren más interrupciones de las que puedes permitirte.

Al momento de actualizar las instancias seleccionadas, ambas marcas aceptan las siguientes acciones:

AcciónDescripción¿Qué propiedades de instancia se pueden actualizar?
NONENo interrumpas la instancia en absoluto.Ninguno
REFRESHNo detengas la instancia.Discos secundarios, metadatos de instancia, etiquetas.
RESTARTDetén la instancia y vuelve a iniciarla.Tipo de máquina.
REPLACEBorra la instancia y vuelve a crearla.Todas las propiedades de instancias almacenadas en la plantilla de instancias.

De forma predeterminada, el minimal-action es NONE. Si tu actualización requiere una acción más perjudicial que la establecida con esta marca, Compute Engine realiza la acción necesaria para ejecutar la actualización.

De forma predeterminada, el most-disruptive-allowed-action es REPLACE. Si tu actualización requiere una acción más perjudicial que la acción que configuraste con esta marca, la solicitud de actualización fallará. Por ejemplo, si estableces “restart” como la acción más perjudicial permitida, un intento de actualizar la imagen de disco de arranque falla porque esa actualización requiere recreación de instancias, una acción más perjudicial que la de reiniciar.

Puedes actualizar instancias seleccionadas con la herramienta gcloud o la API.

gcloud

Después de comenzar una actualización oportunista, usa el subcomando update-instances para aplicar la actualización a instancias específicas.

gcloud beta compute instance-groups managed update-instances instance-group-name \
    --instances instance-names \
    --most-disruptive-allowed-action disruption-level \
    --minimal-action disruption-level

Donde:

  • instance-group-name es el nombre del grupo de instancias con actualizaciones pendientes.
  • instance-names es una lista de instancias para actualizar de inmediato.
  • disruption-level es el nivel de interrupción mínimo o máximo. Puede ser NONE, REFRESH, RESTART o REPLACE.
    • El valor predeterminado de minimal-action es NONE.
    • El valor predeterminado de most-disruptive-allowed-action es REPLACE.

Si necesitas esperar hasta que se actualicen todas las instancias especificadas, verifica el estado del grupo y espera hasta que el grupo esté estable.

API

Después de iniciar una actualización oportunista, crea una solicitud POST para el método Beta regionInstanceGroupManagers.applyUpdatesToInstances. Para un grupo de instancias administrado zonal, usa el método zonal instanceGroupManagers.applyUpdatesToInstances.

POST https://compute.googleapis.com/compute/beta/projects/project/regions/region/instanceGroupManagers/instance-group-name/applyUpdatesToInstances
{
  "instances": "zones/zone/instances/instance-name","zones/zone/instances/instance-name"
  "minimalAction": disruption-level,
  "mostDisruptiveAllowedAction": disruption-level
}

Donde:

  • instance-group-name es el nombre del grupo de instancias con actualizaciones pendientes.
  • zone es la zona de una instancia para actualizar de inmediato.
  • instance-name es el nombre de una instancia que se va a actualizar de inmediato.
  • disruption-level es el nivel de interrupción mínimo o máximo. Puede ser 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. Una vez que la operación es DONE, listManagedInstances contiene la lista de instancias con sus campos currentAction cambiados a REFRESHING, RESTARTING o RECREATING. En caso de que la operación falle, por ejemplo, debido a cambios en simultáneo en el grupo, la falla se observa en el campo lastAttempt.errors.

Si necesitas esperar hasta que todas las instancias especificadas terminen de actualizarse, revisa el estado del grupo y espera hasta que el grupo esté estable.

Realiza un reemplazo progresivo o un reinicio

De modo alternativo, puedes usar los comandos restart o replace para realizar un reinicio o un reemplazo progresivo de instancias de VM en el grupo de instancias administrado. Al igual que con el comando start-update, puedes especificar cualquiera de las opciones de configuración para reiniciar o reemplazar. Un reinicio o reemplazo progresivo no cambia nada en el grupo de instancias, incluida la plantilla de instancias. Solo actualiza las instancias del grupo con el método que elijas.

Hay muchas razones por las puedes querer un reemplazo progresivo o un reinicio progresivo. Por ejemplo, si deseas actualizar tus instancias de VM de vez en cuando para realizar lo siguiente:

  • Limpiar las pérdidas de memoria.
  • Reiniciar tu aplicación para que pueda ejecutarse desde una máquina nueva.
  • Forzar un reemplazo periódico como recomendación para probar tus VM.
  • Actualizar la imagen del sistema operativo de tu VM o volver a ejecutar la secuencia de comandos de inicio para actualizar tu software.

Con el fin de realizar un reemplazo que consista en borrar todas las instancias y reemplazarlas por nuevas:

Console

  1. En Cloud Console, ve a la página Grupos de instancias.

    Ir a la página Grupos de instancias

  2. Selecciona el grupo de instancias que deseas actualizar.
  3. En la parte superior de la página, haz clic en Reiniciar o reemplazar de manera progresiva.
  4. Elige si deseas reiniciar o reemplazar tus instancias. Un reinicio realiza los métodos stop y start en las instancias, mientras que un reemplazo borra y crea instancias de forma activa.
  5. De manera opcional, puedes activar o desactivar las opciones de configuración como aumento máximo, opciones de máximo de instancias no disponibles y tiempo de espera mínimo.
  6. Haz clic en el botón Reiniciar o Reemplazar para iniciar la actualización.

gcloud

gcloud compute instance-groups managed rolling-action replace instance-group-name

Este comando reemplaza todas las instancias en el grupo de instancias administrado, de a una a la vez. Si un reemplazo completo es demasiado perjudicial, puedes especificar un reinicio progresivo en su lugar, que no borra ninguna instancia, sino que solo reinicia cada instancia.

gcloud compute instance-groups managed rolling-action restart instance-group-name

Puedes personalizar aún más cada uno de estos comandos con las mismas opciones disponibles para las actualizaciones (por ejemplo, maxSurge, maxUnavailable, min-ready).

API

En la API, haz una solicitud PATCH para el grupo y establece un updatePolicy proactivo en el que minimalAction sea RESTART o REPLACE, según si deseas realizar un reemplazo progresivo, cada instancia se borra y se reemplaza por una nueva, o un reinicio progresivo, cada instancia se detiene y se reinicia. En ambos casos, RESTART o REPLACE, siempre deben proporcionar una propiedad versions.instanceTemplate y una propiedad versions.name (por ejemplo, v2) para activar la acción.

Un reemplazo progresivo podría tener el siguiente aspecto:

PATCH https://compute.googleapis.com/compute/v1/projects/myproject/zones/zone/instanceGroupManagers/instance-group-name

{
 "updatePolicy": {
  "minimalAction": "REPLACE",
  "type": "PROACTIVE"
 },
 "versions": [
  {
   "instanceTemplate": "global/instanceTemplates/example-template",
   "name": "v2"
  }
 ]
}

Para realizar un reinicio progresivo, ejecuta el siguiente comando:

PATCH https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name

{
 "updatePolicy": {
  "minimalAction": "RESTART",
  "type": "PROACTIVE"
 },
 "versions": [
  {
   "instanceTemplate": "global/instanceTemplates/example-template",
   "name": "v2"
  }
 ]
}

Ejemplos adicionales de reemplazo o reinicio

Realiza un reinicio progresivo de todas las VM, de a dos a la vez

Este comando reinicia todas las VM en el grupo de instancias, de dos en dos. Ten en cuenta que no se especifica una plantilla de instancias nueva.

gcloud compute instance-groups managed rolling-action restart instance-group-name \
    --max-unavailable 2 [--zone zone | --region region]

Reinicio progresivo de todas las VM lo más rápido posible

gcloud compute instance-groups managed rolling-action restart instance-group-name \
    --max-unavailable 100% [--zone zone | --region region]

Reemplazo progresivo de todas las VM lo más rápido posible

gcloud compute instance-groups managed rolling-action replace instance-group-name  \
    --max-unavailable 100% [--zone zone | --region region]

Actualiza un grupo de instancias regionales administrado

Un grupo de instancias administrado regional contiene instancias de VM que se distribuyen en varias zonas dentro de una región, a diferencia de un grupo de instancias administrado por zonas, que solo contiene instancias en una zona. Los grupos de instancias administrados regionales te permiten distribuir tus instancias en más de una zona para mejorar la disponibilidad de tu aplicación y admitir casos extremos en los que una zona falla o un grupo completo de instancias deja de responder.

Actualizar un grupo de instancias administrado regional con la característica de Actualizador es lo mismo que realizar una actualización en un grupo de instancias administrado zonal, con algunas excepciones que se describen a continuación. Cuando inicias la actualización de un grupo de instancias regional, el Actualizador siempre actualiza las instancias de manera proporcional y equitativa en cada zona; no es posible elegir en qué zonas se actualizan primero las instancias ni actualizar instancias en una sola zona.

Diferencias entre actualizar un grupo de instancias administrado regional en comparación con un grupo de instancias administrado por zonas

Antes de iniciar una actualización en un grupo de instancias administrado regional, ten en cuenta que hay varias diferencias en el modo en que se comportan en comparación con los grupos de instancias administrados zonales:

  • Los parámetros de actualización predeterminados para los grupos de instancias administrados regionales son maxUnavailable=[NUMBER_OF_ZONES] y maxSurge=[NUMBER_OF_ZONES], donde [NUMBER_OF_ZONES] es la cantidad de zonas seleccionadas para el grupo de instancias administrado regional, de forma predeterminada, 3.

  • Si usas números fijos al momento de especificar una actualización, el número fijo debe ser 0 o igual o mayor que el número de zonas asociadas con el grupo de instancias administrado regional. Por ejemplo, si el grupo de instancias se distribuye en tres zonas, no puedes establecer maxSurge en 1 o 2 porque el Actualizador necesita crear una instancia adicional en cada una de las tres zonas.

Usa un número fijo o un porcentaje en las solicitudes de actualización

Si especificas un número fijo en tus solicitudes de actualización, el número que especifiques se divide por el número de zonas en el grupo de instancias administrado regional y se distribuye de forma equitativa. Por ejemplo, si especificas maxSurge=10, el Actualizador divide 10 entre el número de zonas en la región y crea instancias basadas en ese número. Si el número de instancias no se divide de forma equitativa entre las zonas, el Actualizador agrega las instancias a una zona aleatoria. Por lo tanto, para 10 instancias en tres zonas, dos de las zonas obtienen 3 instancias y una zona obtiene 4 instancias. La misma lógica se aplica a los parámetros maxUnavailable y targetSize para las actualizaciones canary.

Solo puedes especificar un porcentaje si el grupo de instancias administrado contiene 10 o más instancias de VM. Los porcentajes se manejan de manera apenas diferente según la situación:

  • Si especificas un porcentaje de instancias de VM para una actualización canary, el Actualizador intenta distribuir las instancias de forma equitativa entre las zonas. El resto se redondea hacia arriba o hacia abajo en cada zona, pero la diferencia total no es de más de 1 instancia de VM por grupo. Por ejemplo, para un grupo de instancias administrado con 10 instancias y un porcentaje de tamaño de destino del 25%, la actualización se implementa en 2 o 3 instancias de VM.

  • Si especificas un porcentaje para las opciones de actualización como maxSurge y maxUnavailable, los porcentajes se redondean de manera independiente por zona. Aquí se aplican las mismas reglas que se aplican a la actualización de grupos de instancias administrados por zonas.

Supervisa las actualizaciones

Después de iniciar una actualización progresiva, la actualización puede tardar un tiempo en completarse. Puedes supervisar el progreso de una actualización mediante una inspección del status del grupo de instancias administrado o con una verificación de currentAction en cada instancia del grupo de instancias administrado.

Estado del grupo

En el nivel de grupo, Compute Engine propaga un campo de solo lectura llamado status que contiene una marca versionTarget.isReached y una marca isStable. Puedes usar la herramienta de gcloud o la API para acceder a estas marcas. También puedes usar la consola para ver el número actual y planificado de instancias que se están actualizando.

Console

Puedes supervisar una actualización progresiva para un grupo desde la página de detalles del grupo de instancias específico.

  1. En Cloud Console, ve a la página Grupos de instancias.

    Ir a la página Grupos de instancias

  2. Selecciona el grupo de instancias que deseas supervisar. La página de resumen para el grupo de instancias muestra la plantilla que usa cada instancia.
  3. Para ver los detalles, haz clic en la pestaña Detalles.

La página Detalles muestra el número actual y planificado de instancias que se están actualizando para cada plantilla de instancias y también muestra los parámetros de actualización.

gcloud

Usa el comando describe:

gcloud beta compute instance-groups managed describe instance-group-name \
    [--zone zone | --region zone]

La herramienta de gcloud muestra información detallada sobre el grupo de instancias, incluidos los campos status.versionTarget.isReached y status.isStable.

También puedes usar el comando gcloud beta compute instance-groups managed wait-until con la marca --version-target-reached con el fin de esperar hasta que status.versionTarget.isReached se configure en true para el grupo:

gcloud beta compute instance-groups managed wait-until instance-group-name \
    --version-target-reached \
    [--zone zone | --region region]

API

Utiliza el método get del administrador de grupos de instancias:

GET https://compute.googleapis.com/compute/beta/projects/project-d/zones/zone/instanceGroupManagers/instance-group-name/get

Si el grupo de instancias es administrado y regional, reemplaza zones/<var>zone</var></code> withregiones/región.

La API muestra información detallada sobre el grupo de instancias, incluidos los campos status.versionTarget.isReached y status.isStable.

Verifica si el lanzamiento de una actualización está completo (beta)

El lanzamiento de una actualización se considera completo cuando todas las instancias de VM en el grupo están creadas o están en proceso de creación en su versión de destino. En el caso de un lanzamiento completo, todas las instancias están configuradas para usar la nueva plantilla de instancias. En el caso de un lanzamiento parcial, las instancias se configuran de acuerdo con la división de destino especificada entre las plantillas de instancias.

Para verificar si el lanzamiento de una actualización se completó, verifica el valor del campo status.versionTarget.isReached:

  • status.versionTarget.isReached se establece en true si todas las instancias de VM se crearon o están en proceso de creación mediante la versión de destino (versions[]).
  • status.versionTarget.isReached se establece en false cuando al menos una VM aún no usa la versión de destino (versions[]). O bien, en el caso de una actualización canary, se establece en false cuando la cantidad de VM que usan una versión de destino (versions[].instanceTemplates) no coincide con su tamaño de destino (versions[].targetSize).

Comprueba si el grupo de instancias administrado es estable

Para comprobar si un grupo de instancias administrado está activo y en buen estado, verifica el valor del campo status.isStable.

status.isStable establecido en false indica que los cambios están activos, pendientes o que el grupo de instancias administrado en sí se está modificando.

status.isStable configurado como true indica lo siguiente:

  • Ninguna de las instancias del grupo de instancias administrado se somete a ningún tipo de cambio y la currentAction para todas las instancias es NONE.
  • No hay cambios pendientes para las instancias en el grupo de instancias administrado.
  • El grupo de instancias administrado en sí no se está modificando.

Los grupos de instancias administrados se pueden modificar de varias maneras. Por ejemplo:

  • Realizas una solicitud para implementar una plantilla de instancias nueva.
  • Realizas una solicitud para crear, borrar, cambiar el tamaño o actualizar las instancias en el grupo.
  • Un escalador automático solicita cambiar el tamaño del grupo.
  • Un recurso de reparación automática reemplaza una o más instancias en mal estado en el grupo de instancias administrado.
  • En un grupo de instancias administrado regional, se redistribuyen algunas de las instancias.

Cuando todas las acciones se completan, el valor status.isStable se vuelve a configurar como true para ese grupo de instancias administrado.

Acciones actuales en las instancias

Puedes ver la currentAction que se está realizando y el status de cada instancia en un grupo de instancias administrado con la herramienta de línea de comandos de gcloud o la API.

gcloud

gcloud compute instance-groups managed list-instances instance-group-name \
[--filter="zone:(zone)" | --filter="region:(region)"]

gcloud muestra una lista de instancias en el grupo de instancias y sus respectivos estados y acciones actuales. Por ejemplo:

NAME               ZONE           STATUS    ACTION    INSTANCE_TEMPLATE  VERSION_NAME  LAST_ERROR
vm-instances-9pk4  us-central1-f            CREATING  my-new-template
vm-instances-h2r1  us-central1-f  STOPPING  DELETING  my-old-template
vm-instances-j1h8  us-central1-f  RUNNING   NONE      my-old-template
vm-instances-ngod  us-central1-f  RUNNING   NONE      my-old-template

API

En la API, realiza una solicitud GET al método regionInstanceGroupManagers.listManagedInstances. Para un grupo de instancias administrado zonal, usa el método instanceGroupManagers.listManagedInstances.

GET https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group-name/listManagedInstances

La API muestra una lista de instancias dentro del grupo, incluido el instanceStatus y la currentAction de cada instancia.

{
 "managedInstances": [
  {
   "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/vm-instances-prvp",
   "id": "5317605642920955957",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://compute.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/instance-template-name",
   "currentAction": "REFRESHING"
  },
  {
   "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/vm-instances-pz5j",
   "currentAction": "DELETING"
  },
  {
   "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/vm-instances-w2t5",
   "id": "2800161036826218547",
   "instanceStatus": "RUNNING",
   "instanceTemplate": "https://compute.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/instance-template-name",
   "currentAction": "REFRESHING"
  }
 ]
}

Para cada instancia en un grupo de instancias administrado, el estado de la instancia se describe mediante su campo instanceStatus. Para ver una lista de los valores del campo instanceStatus válidos, consulta Verifica el estado de una instancia.

Si la instancia experimenta algún tipo de cambio, el campo currentAction se propaga con una de las siguientes acciones para ayudarte a realizar un seguimiento del progreso del cambio. De lo contrario, el campo currentAction es NONE.

Los valores posibles de currentAction son los siguientes:

  • ABANDONING: la instancia se está quitando del grupo de instancias administrado.
  • CREATING: la instancia está en proceso de creación.
  • CREATING_WITHOUT_RETRIES: la instancia se está creando sin reintentos; si la instancia no se crea en el primer intento, el grupo de instancias administrado no intenta volver a reemplazar la instancia.
  • DELETING: la instancia está en proceso de borrado.
  • RECREATING: la instancia se está reemplazando.
  • REFRESHING: la instancia se está quitando de sus grupos de destino actuales y se está agregando de nuevo a la lista de grupos de destino actuales (esta lista puede ser igual o diferente a la de los grupos de destino existentes).
  • RESTARTING. la instancia está en proceso de reinicio con los métodos stop y start.
  • VERIFYING: la instancia se creó y está en proceso de verificación.
  • NONE: no hay ninguna acción en ejecución en la instancia.

Revierte una actualización

No hay ningún comando explícito para revertir una actualización a una versión anterior, pero si decides revertir una actualización (ya sea una completa o canary), puedes hacer una nueva solicitud de actualización y pasar la plantilla de instancias a la que quieras revertir.

Por ejemplo, el siguiente comando revierte una actualización lo más rápido posible:

gcloud compute instance-groups managed rolling-action start-update instance-group-name \
    --version template=old-instance-template-name --max-unavailable 100% [--zone zone | --region region]

Reemplaza old-instance-template-name por el nombre de la plantilla de instancias a la que deseas revertir.

En la API, realiza una solicitud PATCH al recurso del administrador de grupos de instancias:

PATCH https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name

Si el grupo de instancias es un grupo de instancias administrado regional, reemplaza zones/zone por regions/region.

En el cuerpo de la solicitud, especifica la plantilla de instancias anterior como version:

{ "updatePolicy":
  {
    "maxUnavailable":
    {
      "percent": 100
    }
  },
 "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/old-template" # Old instance template
    }
   ]
}

Si se trata de un grupo de instancias administrado regional con menos de 10 instancias, debes usar un valor fijo para maxUnavailable y establecer el valor en el número de instancias en el grupo:

{ "updatePolicy":
  {
    "maxUnavailable":
    {
      "fixed": number-of-instances-in-group
    }
  },
 "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/old-template" # Old instance template
    }
   ]
}

El servicio de Actualizador lo trata como una solicitud de actualización normal, por lo que todas las opciones de actualización descritas en este documento se pueden especificar con tu solicitud.

Controla la velocidad de una actualización

De forma predeterminada, cuando realizas una solicitud de actualización, el servicio realiza la actualización lo más rápido posible. Si no estás seguro de querer aplicar una actualización completa o estás probando tentativamente sus cambios, puedes controlar la velocidad de la actualización con los siguientes métodos.

  1. Inicia una actualización canary en lugar de una actualización completa.
  2. Establece un valor grande de minReadySeconds. Establecer este valor hace que el servicio espere esta cantidad de segundos antes de considerar que la instancia se actualizó de forma correcta y pasar a la siguiente.
  3. Configura la verificación de estado para que el servicio espere a que su aplicación se inicie y luego informe una señal de buen estado, antes de considerar que la instancia se actualizó de modo correcto y pasar a la siguiente instancia.
  4. Establece valores bajos de maxUnavailable y maxSurge. Esto garantiza que solo se actualice un número mínimo de instancias a la vez.
  5. Inicia actualizaciones en instancias específicas de forma manual para actualizar esas instancias de inmediato.

También puedes usar una combinación de estos parámetros para controlar la velocidad de tu actualización.

Detén una actualización

No hay ningún método o comando explícito para detener una actualización. Puedes cambiar una actualización de proactiva a oportunista y si el grupo de instancias administrado no está en un proceso de cambio de tamaño llevado a cabo por otros servicios como el escalador automático, el cambio a oportunista detiene por completo la actualización.

Para cambiar una actualización de proactiva a oportunista, ejecuta el siguiente comando:

gcloud compute instance-groups managed rolling-action stop-proactive-update instance-group-name \
    [--zone zone | --region region]

Para detener por completo la actualización después de convertirla de proactiva a oportunista, puedes detenerla mediante estos pasos:

  1. Haz una solicitud para determinar cuántas instancias se actualizaron.

    gcloud compute instance-groups managed list-instances instance-group-name \
        [--zone zone | --region region]

    La herramienta de gcloud muestra una respuesta con una lista de instancias en el grupo de instancias y sus estados actuales:

    >NAME               ZONE           STATUS   ACTION    INSTANCE_TEMPLATE  VERSION_NAME  LAST_ERROR
    vm-instances-9pk4  us-central1-f  RUNNING  NONE      my-new-template
    vm-instances-j1h8  us-central1-f  RUNNING  NONE      my-new-template
    vm-instances-ngod  us-central1-f  RUNNING  NONE      my-old-template

    En este ejemplo, dos instancias ya se actualizaron.

  2. Luego, haz una solicitud para realizar una nueva “actualización” pero pasa el número de instancias que ya se actualizaron como el tamaño de destino:

    gcloud compute instance-groups managed rolling-action start-update instance-group-name \
        --version template=my-old-template \
        --canary-version template=my-new-template,target-size=2 \
        [--zone zone | --region region]

    Para el servicio de Actualizador, esta actualización aparece “completa”, por lo que no se actualiza ninguna otra instancia y se detiene efectivamente la actualización.

Relación entre las versiones y las propiedades de instanceTemplate para un grupo de instancias administrado

Google recomienda usar el campo versions a fin de configurar plantillas de instancias para grupos de instancias administrados.

El campo heredado instanceTemplate se superpone en funcionalidad con versions porque ambos campos te permiten especificar qué plantilla de instancias usará el grupo de instancias administrado para crear nuevas instancias. Sin embargo, solo el campo versions te permite especificar una configuración avanzada de dos plantillas (canary).

Para tener retrocompatibilidad, los grupos de instancias administrados aún admiten la configuración del campo instanceTemplate de nivel superior, aunque recomendamos que uses solo el campo versions. Usar el campo instanceTemplate de nivel superior y el campo versions al mismo tiempo puede generar ambigüedad y confusión.

Si especificas el campo instanceTemplate y el campo versions cuando se llama al método update() o patch(), existen tres posibilidades de lo que podría suceder:

  • Estableces ambos campos en el mismo valor.

    Esta es una solicitud válida. En este caso, no genera ambigüedad y la nueva plantilla de instancias se aplica al grupo de instancias administrado.

    Por ejemplo, en la siguiente solicitud, el campo de nivel superior instanceTemplate y el campo versions especifican la misma plantilla de instancias, que es diferente de la plantilla actual existente. El grupo de instancias administrado se actualiza a la nueva plantilla de instancias:

    {
     "instanceTemplate": "global/instanceTemplates/new-template",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/new-template"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
  • Establece ambos campos en valores que no coinciden, pero que solo un valor difiere de la plantilla de instancias actual en el grupo de instancias administrado.

    Esta es una solicitud válida. El campo que es diferente de la configuración actual se toma como el valor deseado. Por ejemplo, llama al método get(), cambia uno de los dos campos y, luego, llama a update() con solo un campo modificado:

    {
     "instanceTemplate": "global/instanceTemplates/current-template",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/new-template"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
  • Establece ambos campos en valores que no coinciden y ambos valores difieren de la plantilla de instancias actual en el grupo de instancias administrado.

    Esta configuración no es válida y muestra un error porque no hay una intención clara.

    {
     "instanceTemplate": "global/instanceTemplates/new-template",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/a-different-new-template"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }

El campo versions, el campo instanceTemplate y el método get()

Si solo especificas una plantilla de instancias, ya sea a través del campo de nivel superior instanceTemplate o mediante el campo versions o mediante ambos, el método get() muestra ambos campos en su respuesta. Esto hace que el nuevo campo versions sea retrocompatible. Siempre que especifiques una plantilla de instancias única en cualquiera de estos campos, no hay cambios en lo que get() muestre en el campo instanceTemplate.

Si el campo versions tiene dos plantillas de instancias especificadas, el método get() muestra un campo instanceTemplate vacío de nivel superior. No hay forma de expresar inequívocamente una configuración de plantilla canary de dos instancias en el campo instanceTemplate de nivel superior, por lo que el campo no se usa durante una actualización canary.

El campo versions y el método setInstanceTemplate()

Por retrocompatibilidad, el método setInstanceTemplate() se comporta como lo hacía antes, lo que te permite cambiar la plantilla que el grupo de instancias administrado usa para crear nuevas instancias. Cuando llamas a este método, el campo versions se anula con la plantilla de instancias especificada por el método setInstanceTemplate().

El método setInstanceTemplate() también establece updatePolicy en OPPORTUNISTIC. Esto evita que el grupo de instancias administrado implemente de manera activa una plantilla de instancias que no se especifica de forma explícita en el campo versions.

Próximos pasos

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Compute Engine