Si usas una combinación de familias de imágenes personalizadas y actualizaciones continuas, puedes habilitar las actualizaciones de imágenes de SO con un clic en tu grupo de instancias gestionadas (MIG).
Usar la actualización de imágenes de SO con un clic ofrece varias ventajas, entre las que se incluyen las siguientes:
- Funciona con todos los tipos de máquinas virtuales y todos los tamaños de grupos de instancias.
- Admite imágenes y contenedores de Windows y Linux.
- Las instancias se vuelven a crear a partir de su plantilla de instancia actual o, de forma opcional, a partir de una nueva plantilla, por lo que puedes conservar los scripts de inicio y los metadatos personalizados.
- Funciona con grupos de instancias gestionados con estado, por lo que puedes conservar los datos de los discos que no son de arranque.
- La implementación de una actualización a la nueva versión del SO se realiza automáticamente, sin necesidad de que el usuario haga nada más después de la solicitud inicial.
- Admite actualizaciones por lotes con una comprobación de estado opcional.
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:
-
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.
- 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 sustituye los discos de arranque de todas las VMs del grupo por la versión de imagen de SO más reciente disponible de tu familia de imágenes personalizadas. El MIG conserva los metadatos y las secuencias de comandos de inicio que hayas configurado en la plantilla de instancia de cada VM del grupo. Los discos que no son de arranque se vuelven a crear según su especificación en la plantilla de la instancia. Para obtener información sobre cómo conservar datos, consulta Configurar discos con estado en MIGs.
Para limitar las interrupciones de las aplicaciones, puedes realizar actualizaciones en lotes y mantener un porcentaje específico de máquinas virtuales en ejecución durante la actualización. Para aumentar la fiabilidad, puedes configurar una comprobación de estado basada en aplicaciones para tu MIG: el grupo espera una respuesta correcta de una aplicación en las VMs actualizadas antes de continuar con otras VMs.
Antes de empezar
Instala o actualiza a la versión más reciente de Google Cloud CLI.
Asegúrate de haber creado una plantilla de instancia que apunte a una familia de imágenes. Google recomienda usar familias de imágenes personalizadas para reducir el riesgo de lanzar una versión de imagen que no sea compatible con tu aplicación. Para asegurarte de que solo se lancen versiones de imagen compatibles, añade imágenes a tu familia de imágenes personalizadas solo después de probar la compatibilidad con tu aplicación.
Cuando tu plantilla de instancia apunta a una familia de imágenes, el MIG siempre crea instancias a partir de la imagen más reciente de la familia. Por ejemplo:
- Cuando el MIG añade nuevas instancias porque tú o el escalador automático del MIG habéis aumentado el tamaño del MIG.
- Cuando el MIG vuelve a crear una instancia, ya sea de forma manual o mediante la reparación automática.
Prueba la nueva imagen con tu aplicación antes de añadirla a tu familia de imágenes y lanzarla.
Opcionalmente, crea una comprobación del estado basada en aplicaciones para tu MIG. Una comprobación de estado basada en aplicaciones verifica que tu aplicación responde según lo esperado en cada una de las VMs del MIG. Puedes configurar la actualización para que no haya 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 la implementación no continúa.
Actualizar imágenes de SO con un clic en grupos de instancias gestionados
Para actualizar todas las VMs de un MIG a la imagen más reciente de una familia de imágenes personalizadas, sigue estos pasos:
Inicia una sustitución gradual con el siguiente comando.
gcloud compute instance-groups managed rolling-action replace instance-group-name \ [--max-surge=max-surge ] [--max-unavailable=max-unavailable]
Haz los cambios siguientes:
instance-group-name
: el nombre del MIG en el que se va a operar.max-surge
: número máximo adicional de máquinas virtuales que se pueden crear temporalmente 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
: número máximo de VMs 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 comprobaciones del estado mediante las opciones
--max-unavailable
y--max-surge
para detener las actualizaciones si provocan que las VMs dejen de estar disponibles.Monitoriza la actualización con el subcomando
wait-until
para comprobar que el campostatus.versionTarget.isReached
de la MIG se ha definido comotrue
.gcloud compute instance-groups managed wait-until instance-group-name --version-target-reached
Haz los cambios siguientes:
instance-group-name
: el nombre del MIG en el que se va a operar.
El comando se devuelve cuando se actualiza el grupo.
También puedes listar las instancias para ver el estado de cada una.
gcloud compute instance-groups managed list-instances instance-group-name
El comando devuelve una lista de instancias y sus detalles, como el estado, el estado de salud y las acciones actuales de cada VM. Cuando todas las VMs están
RUNNING
y no tienen ninguna acción en curso, la MIG está actualizada y es estable.Si necesitas volver a una imagen de SO anterior, debes crear una plantilla de instancia y especificar la imagen que quieras usar. A continuación, inicia una actualización gradual para actualizar todas las instancias gestionadas y que usen esa plantilla. Para obtener más información, consulta Volver a una versión anterior de una actualización.
Ejemplo
En este ejemplo se explican las siguientes tareas:
- Crea una plantilla de instancia para actualizar fácilmente la imagen del SO:
- Especifica una familia de imágenes personalizada en la plantilla de instancia.
- Crea un MIG a partir de la plantilla.
- Configura una comprobación del estado para limitar las interrupciones causadas por una actualización de imagen.
- Añadir una imagen a una familia de imágenes.
- Invocar una actualización del SO con un solo comando.
- Monitoriza la actualización.
Sigue estos pasos para habilitar y realizar actualizaciones del SO con un clic en un MIG:
Crea una plantilla de instancia que especifique una familia de imágenes personalizada. La familia de imágenes debe contener imágenes probadas y de confianza. Cada VM que crea el MIG a partir de la plantilla usa la imagen más reciente disponible 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 instancia. En este ejemplo se inicia el MIG con tres instancias basadas en
example-template
. Como la plantilla de instancia especifica una familia de imágenes, el MIG crea cada VM con la imagen más reciente 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 comprobación del estado basada en aplicaciones. Si tu aplicación no responde después de una actualización de imagen, puedes usar el estado de la comprobación del estado junto con el ajuste maxUnavailable para evitar que el MIG siga implementando la actualización.
Crea una comprobación del estado que busque una respuesta HTTP
200
en la ruta de solicitud/health
. La aplicación GitHub que se encuentra en cada instancia sirve 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 cortafuegos para permitir que las sondas de comprobación del estado accedan a las instancias. Las sondas de comprobación del estado proceden de direcciones de los siguientes intervalos:
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
Añade la comprobación del estado a tu MIG.
gcloud compute instance-groups managed update example-group \ --zone us-east1-b --health-check example-autohealer-check
Cuando haya una actualización disponible, se haya probado y se haya determinado que es compatible con tu aplicación, crea una imagen y usa la marca
--family
para incluirla 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 de
my-image-family
es ahoramy-image-v2
, que se basa en el disco de origenboot-disk-1
.Invoca una sustitución gradual para sustituir todas las VMs del MIG. El MIG sustituye cada VM en función de la plantilla de instancia del grupo. La plantilla de instancia 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 provoca la actualización. En este ejemplo, el MIG crea una VM adicional por encima del tamaño objetivo del grupo y no elimina ninguna VM hasta que esa VM esté activa.
gcloud compute instance-groups managed rolling-action replace example-group \ --max-surge 1 --max-unavailable 0
Si quieres monitorizar el estado de las actualizaciones, usa el comando
wait-until
con la marca--version-target-reached
. El comando se devuelve 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 salud, las acciones actuales, la plantilla de instancia 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 restaurar una imagen anterior, sigue estos pasos:
- Crea una plantilla de instancia que especifique la imagen que quieras.
- Inicia una actualización continua para aplicar la plantilla de instancia.
Siguientes pasos
- Más información sobre las prácticas recomendadas para las familias de imágenes
- Consulta más información sobre los grupos de instancias.
- Consulta más información sobre las plantillas de instancias.
- Consulta más información sobre las actualizaciones continuas en grupos de instancias gestionados.