Realizar actualizaciones de imágenes del sistema operativo con un solo clic en MIG


Al utilizar una combinación de familias de imágenes personalizadas y actualizaciones continuas , puedes habilitar actualizaciones de imágenes del sistema operativo con un solo clic en tu grupo de instancias administrado (MIG).

El uso de la actualización de la imagen del sistema operativo con un solo clic proporciona una serie de beneficios, que incluyen:

  • Funciona con todos los tipos de máquinas VM y todos los tamaños de grupos de instancias.
  • Admite imágenes y contenedores de Windows y Linux.
  • Las instancias se recrean en función de su plantilla de instancia actual u, opcionalmente, en función de una nueva plantilla, para que pueda conservar metadatos y scripts de inicio personalizados.
  • Funciona con MIG con estado , por lo que, opcionalmente, puede conservar datos en discos que no son de arranque.
  • El lanzamiento de una actualización a la nueva versión del sistema operativo se produce automáticamente, sin necesidad de intervención adicional del usuario después de la solicitud inicial.
  • Admite actualizaciones por lotes con una verificación de estado opcional.

Antes de comenzar

  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.

¿Cómo funciona la actualización de la imagen del sistema operativo con un solo clic?

Cuando invoca una actualización, MIG reemplaza los discos de arranque de todas las máquinas virtuales del grupo con la última versión de imagen del sistema operativo disponible de su familia de imágenes personalizadas. El MIG conserva los metadatos y los scripts de inicio que usted configura en la plantilla de instancia para cada VM del grupo. Los discos que no son de arranque se recrean según su especificación en la plantilla de instancia. Para obtener información sobre cómo conservar datos, consulte Configuración de discos con estado en MIG .

Para limitar la interrupción de las aplicaciones, puede realizar actualizaciones en lotes, manteniendo un porcentaje específico de máquinas virtuales en ejecución durante la actualización. Para aumentar la confiabilidad, puede configurar una verificación de estado basada en aplicaciones para su MIG: el grupo espera una respuesta saludable de una aplicación en las máquinas virtuales actualizadas antes de continuar con más actualizaciones en otras máquinas virtuales.

Antes de comenzar

  • Instale o actualice a la última versión de Google Cloud CLI .

  • Asegúrese de haber creado una plantilla de instancia que apunte a una familia de imágenes. Google recomienda utilizar familias de imágenes personalizadas para reducir el riesgo de implementar una versión de imagen que sea incompatible con su aplicación. Puede asegurarse de que solo se implementen versiones de imágenes compatibles agregando imágenes a su familia de imágenes personalizadas solo después de realizar pruebas de compatibilidad con su aplicación.

    Cuando su plantilla de instancia 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 nuevas instancias porque usted o el escalador automático del MIG aumentaron el tamaño del MIG.
    • Cuando el MIG recrea una instancia, se activa manualmente o mediante reparación automática.
  • Pruebe la nueva imagen con su aplicación antes de agregarla a su familia de imágenes e implementarla.

  • Opcionalmente, cree una verificación de estado basada en aplicaciones para su MIG. Una verificación de estado basada en la aplicación verifica que su aplicación esté respondiendo como se espera en cada una de las máquinas virtuales del MIG. Puede configurar su actualización para permitir no más de una VM no disponible. Si una aplicación no responde como se esperaba, entonces el MIG marca esa VM como no disponible y la implementación no continúa.

Realización de actualizaciones de imágenes del sistema operativo con un solo clic para MIG

Para actualizar todas las máquinas virtuales en un MIG a la imagen más reciente de una familia de imágenes personalizada, complete los siguientes pasos:

  1. Inicie un reemplazo continuo con el siguiente comando.

    gcloud compute instance-groups managed rolling-action replace instance-group-name \
        [--max-surge=max-surge ] [--max-unavailable=max-unavailable]

    Reemplace lo siguiente:

    • instance-group-name : el nombre del MIG sobre el que operar.
    • max-surge : la cantidad máxima 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 : la cantidad máxima de máquinas virtuales 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% ).

    Puede combinar comprobaciones de estado utilizando las opciones --max-unavailable y --max-surge para detener futuras actualizaciones si hacen que las máquinas virtuales dejen de estar disponibles.

  2. Supervise la actualización utilizando el subcomando wait-until para comprobar que el campo status.versionTarget.isReached del MIG esté configurado en true .

    gcloud compute instance-groups managed wait-until instance-group-name --version-target-reached

    Reemplace lo siguiente:

    • instance-group-name : el nombre del MIG sobre el que operar.

    El comando regresa cuando se actualiza el grupo.

    También puede enumerar instancias para ver el estado de cada instancia.

    gcloud compute instance-groups managed list-instances instance-group-name

    El comando devuelve una lista de instancias y sus detalles, incluido el estado , el estado de salud y las acciones actuales para cada VM. Cuando todas las máquinas virtuales están RUNNING y no tienen ninguna acción actual, entonces el MIG está actualizado y es estable .

  3. En caso de que necesite retroceder a una imagen del sistema operativo anterior, debe crear una plantilla de instancia y especificar la imagen que desea usar. Luego, inicie una actualización continua para actualizar todas las instancias administradas para usar esa plantilla. Para obtener más información, consulte Revertir una actualización .

Ejemplo

Este ejemplo cubre las siguientes tareas:

  1. Cree una plantilla de instancia para actualizar fácilmente las imágenes del sistema operativo:
  2. Cree un MIG basado en la plantilla.
  3. Configure una verificación de estado para limitar las interrupciones causadas por una actualización de imagen.
  4. Agregue una nueva imagen a una familia de imágenes.
  5. Invoque una actualización del sistema operativo con un solo comando.
  6. Supervise la actualización.

Utilice los siguientes pasos para habilitar y realizar actualizaciones del sistema operativo con un solo clic en un MIG:

  1. Cree una plantilla de instancia que especifique una familia de imágenes personalizada. La familia de imágenes debe contener imágenes probadas y confiables. Cada VM que MIG crea a partir de la plantilla utiliza la última imagen 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
    
  2. Cree un MIG basado en la plantilla de instancia. Este ejemplo inicia el MIG con tres instancias basadas en example-template . Debido a que la plantilla de instancia especifica una familia de imágenes, 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
    
  3. Opcional: Configure y habilite una verificación de estado basada en aplicaciones. Si su aplicación no responde después de una actualización de imagen, puede usar el estado de verificación de estado combinado con la configuración maxUnavailable para evitar que MIG realice más implementaciones.

    1. Cree una verificación de estado que busque una respuesta HTTP 200 en la ruta de solicitud /health . La aplicación GitHub que está 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"
      
    2. Cree una regla de firewall para permitir que las sondas del verificador de estado accedan a las instancias. Las sondas del verificador de estado provienen de direcciones en los rangos: 130.211.0.0/22 ​​y 35.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
      
    3. Agregue el control de salud a su MIG.

      gcloud compute instance-groups managed update example-group \
          --zone us-east1-b --health-check example-autohealer-check
      
  4. Cuando haya una actualización disponible, probada y determinada como compatible con su aplicación, cree una nueva imagen y use la marca --family para incluir esa imagen en la familia de imágenes personalizada.

    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 ahora es my-image-v2 , que se basa en el disco de origen boot-disk-1 .

  5. Invoque un reemplazo continuo para reemplazar todas las máquinas virtuales en el MIG. El MIG reemplaza cada VM según 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 ).

    Puede configurar el nivel de interrupción que provoca la actualización. En este ejemplo, MIG crea una máquina virtual adicional por encima del tamaño objetivo del grupo y no elimina ninguna máquina virtual existente hasta que esa máquina virtual esté en funcionamiento.

    gcloud compute instance-groups managed rolling-action replace example-group \
        --max-surge 1 --max-unavailable 0
    
  6. Si desea monitorear el estado de las actualizaciones, use el comando wait-until con el indicador --version-target-reached . El comando regresa 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 puede utilizar 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
    
  7. Si necesita retroceder a una imagen anterior, siga los siguientes pasos:

    1. Cree una nueva plantilla de instancia que especifique la imagen que desea.
    2. Inicie una actualización continua para aplicar la plantilla de instancia.

¿Qué sigue?