Si usas una combinación de familias de imágenes personalizadas y actualizaciones progresivas, puedes habilitar las actualizaciones de imágenes de SO con un clic en tu grupo de instancias administrado (MIG).
Usar la actualización de imagen de SO con un clic proporciona una serie de beneficios, incluidos los siguientes:
- Funciona con todos los tipos de máquina de VM y todos los tamaños de grupos de instancias.
- Admite imágenes y contenedores de Windows y Linux.
- Las instancias se vuelven a crear según la plantilla de instancias actual o, de forma opcional, según una plantilla nueva, de modo que puedas conservar las secuencias de comandos de inicio y metadatos personalizados.
- Funciona con MIG con estado, por lo que puedes conservar datos de manera opcional en discos que no son de arranque.
- El lanzamiento de una actualización de la versión nueva del SO se realiza de manera automática, sin necesidad de incorporar entradas adicionales del usuario después de la solicitud inicial.
- Admite actualizaciones por lotes con una verificación de estado opcional.
Antes de empezar
-
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.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
¿Cómo funciona la actualización de imágenes de SO con un clic?
Cuando invocas una actualización, el MIG reemplaza los discos de arranque de todas las VM del grupo por la última versión de la imagen del SO disponible de tu familia de imágenes personalizadas. El MIG conserva los metadatos y las secuencias de comandos de inicio que configuraste en la plantilla de instancias para cada VM del grupo. Los discos que no son de arranque se vuelven a crear según la especificación en la plantilla de instancias. Para obtener información sobre cómo preservar los datos, consulta Configura discos con estado en MIG.
Con el fin de limitar la interrupción de la aplicación, puedes realizar actualizaciones por lotes y mantener un porcentaje específico de VM en ejecución durante la actualización. Para aumentar la confiabilidad, puedes configurar una verificación de estado basada en la aplicación para tu MIG: el grupo espera una respuesta de estado de una aplicación en las VM actualizadas antes de continuar actualizando otras VM.
Antes de comenzar
Instala Google Cloud CLI o actualízala a la última versión.
Asegúrate de haber creado una plantilla de instancias que apunte a una familia de imágenes. Google recomienda que uses familias de imágenes personalizadas para reducir el riesgo de lanzar una versión de la imagen que no sea compatible con tu aplicación. Puedes asegurarte de que solo se lancen versiones de imágenes compatibles si agregas imágenes a tu familia de imágenes personalizadas solo después de realizar las pruebas de compatibilidad con la aplicación.
Cuando tu plantilla de instancias apunta a una familia de imágenes, el MIG siempre crea instancias a partir de la última imagen de la familia, por ejemplo:
- Cuando el MIG agrega instancias nuevas porque aumentaste su tamaño o el escalador automático del MIG lo aumentó
- Cuando el MIG vuelve a crear una instancia, por activación manual o por reparación automática
Prueba la imagen nueva con tu app antes de agregarla a la familia de imágenes y de lanzarla.
De manera opcional, crea una verificación de estado basada en la aplicación para tu MIG. Mediante las verificaciones de estado basadas en la aplicación puedes verificar que tu aplicación responda como se espera en cada una de las VM del MIG. Puedes configurar la actualización para que no permita más de una VM no disponible. Si una aplicación no responde como se espera, el MIG marca esa VM como no disponible y el lanzamiento se detiene.
Actualiza la imagen de SO con un clic en MIG
Para actualizar todas las VM en un MIG a la imagen más reciente de una familia de imágenes personalizadas, completa los siguientes pasos:
Inicia un reemplazo progresivo con el siguiente comando.
gcloud compute instance-groups managed rolling-action replace instance-group-name \ [--max-surge=max-surge ] [--max-unavailable=max-unavailable]
Reemplaza lo siguiente:
instance-group-name
: El nombre del MIG en el que operarás.max-surge
: La cantidad máxima adicional de VM que se pueden crear de forma temporal durante el proceso de actualización. Puede ser un número fijo (por ejemplo,5
) o un porcentaje del tamaño del MIG (por ejemplo,10%
).max-unavailable
: La cantidad máxima de VM que pueden no estar disponibles durante el proceso de actualización. Puede ser un número fijo (5
) o un porcentaje del tamaño del MIG (10%
).
Puedes combinar las verificaciones de estado mediante las opciones
--max-unavailable
y--max-surge
para detener las actualizaciones si estas hacen que las VM no estén disponibles.Supervisa la actualización con el subcomando
wait-until
para comprobar que el campostatus.versionTarget.isReached
del MIG esté configurado comotrue
.gcloud compute instance-groups managed wait-until instance-group-name --version-target-reached
Reemplaza lo siguiente:
instance-group-name
: El nombre del MIG en el que operarás.
El comando se muestra cuando se actualiza el grupo.
También puedes enumerar instancias para ver el estado de cada una.
gcloud compute instance-groups managed list-instances instance-group-name
El comando muestra una lista de instancias y sus detalles, incluidos el estado, el estado de mantenimiento y las acciones actuales de cada VM. Si todas las VM figuran como
RUNNING
y no tienen ninguna acción actual, el MIG está actualizado y estable.En caso de que necesites revertir a una imagen de SO anterior, debes crear una plantilla de instancias y especificar la imagen que deseas usar. Luego, inicia una actualización progresiva para establecer que todas las instancias administradas usen esa plantilla. Para obtener más información, consulta Revierte una actualización.
Ejemplo
En este ejemplo, se abarcan las siguientes tareas:
- Crear una plantilla de instancias para actualizar de manera simple las imágenes de SO:
- Especificar una familia de imágenes personalizada en la plantilla de instancias
- Crear un MIG basado en la plantilla
- Configurar una verificación de estado para limitar las interrupciones generadas por una actualización de imagen
- Agregar una imagen nueva a una familia de imágenes
- Invocar una actualización del SO con un solo comando
- Supervisar la actualización
Sigue estos pasos para habilitar y realizar actualizaciones de SO con un clic en un MIG:
Crea una plantilla de instancias en la que se especifique una familia de imágenes personalizada. La familia de imágenes debe contener imágenes probadas y confiables. Cada VM que crea el MIG a partir de la plantilla usa la imagen disponible más reciente de esta familia.
gcloud compute instance-templates create example-template \ --machine-type n1-standard-4 \ --image-family my-image-family \ --image-project my-project \ --tags=http-server
Crea un MIG basado en la plantilla de instancias. En este ejemplo, se inicia el MIG con tres instancias basadas en
example-template
. Debido a que en la plantilla de instancias se especifica una familia de imágenes, el MIG crea cada VM con la última imagen de la familia.gcloud compute instance-groups managed create example-group \ --base-instance-name example \ --size 3 \ --zone us-east1-b \ --template example-template
Opcional: Configura y habilita una verificación de estado basada en la aplicación. Si tu app no responde después de una actualización de imagen, puedes usar el estado de la verificación de estado junto con la configuración maxUnavailable para evitar que el MIG vuelva a lanzarse.
Crea una verificación de estado que busque una respuesta HTTP
200
en la ruta de solicitud/health
. La app de GitHub que se encuentra en cada instancia entrega esa ruta.gcloud compute health-checks create http example-autohealer-check \ --check-interval 10 \ --timeout 5 \ --healthy-threshold 2 \ --unhealthy-threshold 3 \ --request-path "/health"
Crea una regla de firewall para permitir que los sondeos del verificador de estado accedan a las instancias. Los sondeos del verificador de estado provienen de direcciones en los rangos
130.211.0.0/22
y35.191.0.0/16
.gcloud compute firewall-rules create default-allow-http-health-check \ --network default \ --allow tcp:80 \ --source-ranges 130.211.0.0/22,35.191.0.0/16
Agrega la verificación de estado a tu MIG.
gcloud compute instance-groups managed update example-group \ --zone us-east1-b --health-check example-autohealer-check
Cuando una actualización está disponible, se prueba y se determina que es compatible con tu app, se crea una imagen nueva y se usa la marca
--family
para incluir esa imagen en la familia de imágenes personalizadas.gcloud compute images my-image-v2 \ --source-disk boot-disk-1 \ --source-disk-zone us-central1-f \ --family my-image-family
En este ejemplo, la imagen más reciente en
my-image-family
ahora esmy-image-v2
, que se basa en el disco de origenboot-disk-1
.Invoca un reemplazo progresivo a fin de reemplazar todas las VM del MIG. El MIG reemplaza cada VM según la plantilla de instancias del grupo. En la plantilla de instancias se especifica
my-image-family
, por lo que cada VM obtiene la imagen más reciente de la familia (my-image-v2
).Puedes configurar el nivel de interrupción que cause la actualización. En este ejemplo, el MIG crea una VM adicional por encima del tamaño objetivo del grupo y no quita ninguna VM existente hasta que esa VM esté activa y en ejecución.
gcloud compute instance-groups managed rolling-action replace example-group \ --max-surge 1 --max-unavailable 0
Si deseas supervisar el estado de las actualizaciones, usa el comando
wait-until
con la marca--version-target-reached
. El comando se muestra cuando se actualiza el grupo.gcloud compute instance-groups managed wait-until --version-target-reached example-group \ --zone us-east1- Waiting for group to reach version target ... Version target is reached
También puedes usar el comando
list-instances
para ver el estado, el estado de mantenimiento, las acciones actuales, la plantilla de instancias y la versión de cada VM.gcloud compute instance-groups managed list-instances example-group \ --zone us-east1-b NAME ZONE STATUS HEALTH_STATE ACTION INSTANCE_TEMPLATE VERSION_NAME LAST_ERROR test-211p us-east1-b RUNNING HEALTHY NONE example-template 0/2020-01-30 13:34:28.843377+00:00 test-t5qb us-east1-b RUNNING UNKNOWN VERIFYING example-template 0/2020-01-30 13:34:28.843377+00:00 test-x331 us-east1-b RUNNING HEALTHY NONE example-template 0/2020-01-20 20:39:51.819399+00:00
Si necesitas revertir a una imagen anterior, sigue estos pasos:
- Crea una plantilla de instancias nueva en la que se especifique la imagen que deseas.
- Inicia una actualización progresiva para aplicar la plantilla de instancias.
¿Qué sigue?
- Obtén más información sobre las prácticas recomendadas para la familia de imágenes.
- Obtén más información sobre los grupos de instancias.
- Obtén más información sobre las plantillas de instancias.
- Obtén más información sobre las actualizaciones progresivas en los MIG.