Actualizar propiedades de instancia


Puede utilizar una única solicitud de la CLI de Google Cloud o la API de Compute Engine para actualizar varias propiedades de la instancia y, opcionalmente, reiniciar la instancia si es necesario. El método de actualización maneja la lógica para validar las propiedades de la instancia actualizadas y garantizar que los recursos necesarios estén disponibles para completar la actualización con éxito. Si la solicitud incluye propiedades no válidas o si los recursos solicitados no están disponibles, la solicitud devuelve un error y no realiza cambios en su instancia. Esto protege la instancia de actualizaciones parciales y evita que la instancia se detenga y no pueda acceder a los recursos para iniciarse nuevamente.

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:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. 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.
    3. REST

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

        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.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Restricciones

  • Las solicitudes de actualización de instancias a través de la CLI de gcloud o la API de Compute Engine no admiten la semántica PATCH . El recurso de instancia en la solicitud de actualización debe incluir todas las propiedades de la instancia. Las propiedades que faltan en la configuración de la instancia en su solicitud de actualización se consideran eliminadas de la instancia.
  • Puede actualizar sólo una lista específica de propiedades .
  • No se admite el cambio de instancias hacia y desde el arrendamiento único.
  • Puede cambiar una instancia de una reserva a otra, pero no puede adjuntar ni separar una instancia de una reserva mediante el proceso de actualización.
  • Si la instancia tiene discos SSD locales conectados, no puede actualizar las propiedades que requieren que la instancia se reinicie mientras se está ejecutando. Puede eliminar y luego volver a crear la instancia, o detenerla , actualizar las propiedades y luego reiniciarla.
  • Si una instancia usa recursos que están disponibles solo en la API beta de Compute Engine, debes usar la versión correcta del método instances.update para actualizar esas propiedades. Por ejemplo, si crea una instancia usando la API beta de Compute Engine y configura la instancia con un recurso que solo la API beta reconoce, también debe usar la versión beta del método instances.update para actualizar esos recursos. La versión v1 del método instances.update no reconoce los recursos beta que utiliza su instancia, por lo que elimina esos recursos beta de la configuración de la instancia durante el proceso de actualización. Este comportamiento también se aplica a los recursos de la API alfa.

Permisos

Debe tener el permiso compute.instances.update para actualizar instancias. Este permiso está incluido en varias funciones de Gestión de acceso e identidad (IAM) existentes . También debe tener permiso para utilizar los recursos que desea modificar en la instancia. Por ejemplo, para agregar un disco a una instancia debes tener los siguientes permisos:

  • El permiso compute.instances.update en la instancia que desea actualizar.
  • Ya sea el permiso compute.disks.use para un disco existente o compute.disks.create en un proyecto en el que desea crear un disco nuevo.

Mejores prácticas

Para asegurarse de que la interfaz de actualización de instancias funcione de manera más efectiva, utilice las siguientes mejores prácticas:

  • Si es posible, utilice constantemente la misma versión de la API de Compute Engine para crear, configurar y actualizar instancias. Esto garantiza que pueda actualizar y modificar cualquier recurso de instancia si está disponible solo en una versión de la API.
  • Aunque puedes usar el método instances.update para actualizar instancias en un grupo de instancias administrado (MIG) , en la mayoría de las situaciones es mejor cambiar la plantilla de instancia del grupo e implementar esa actualización en el MIG .

Propiedades que puedes actualizar

Puede cambiar solo un conjunto específico de propiedades de instancia mediante el método de actualización. Las actualizaciones de algunas propiedades requieren que la instancia se reinicie. Para evitar reinicios accidentales en sus instancias, su solicitud debe definir qué acción se permite realizar en sus instancias. Su solicitud puede especificar una de las siguientes acciones:

  • NO_EFFECT : la solicitud de actualización verifica si la solicitud es válida y si los recursos están disponibles, pero no ejecuta la actualización. Utilice esta acción para probar comandos sin iniciar ninguna actualización real.
  • REFRESH : la solicitud de actualización se ejecuta solo si las propiedades de la instancia modificadas no requieren que la instancia se reinicie. La solicitud devuelve un error INFEASIBLE si la solicitud es válida pero se requiere un reinicio.
  • RESTART : si la actualización requiere que la instancia se reinicie, entonces el sistema reiniciará su instancia.

Las siguientes propiedades requieren un reinicio ( RESTART ) para actualizarse:

  • disks : discos de arranque, incluidos todos los discos ( disks.deviceName )
  • displayDevice
  • enableNestedVirtualization
  • guestAccelerators
  • machineType
  • minCpuPlatform
  • networkPerformanceConfig
  • performanceMonitoringUnit
  • reservationAffinity : solo puede actualizar cómo la instancia consume reservas ( reservationAffinity.consumeReservationType ) de la siguiente manera:
    • Desde consumir cualquier reserva coincidente ( ANY_RESERVATION ) hasta no consumir reservas ( NO_RESERVATION )
    • Desde no consumir reservas ( NO_RESERVATION ) hasta consumir reservas coincidentes ( ANY_RESERVATION )
  • resourcePolicies
  • scheduling
  • serviceAccounts
  • shieldedInstanceConfig
  • threadsPerCore
  • visibleCoreCount

Las siguientes propiedades solo requieren una actualización ( REFRESH ) para actualizarse:

  • canIpForward
  • deletionProtection
  • description
  • disks : propiedades del disco que no son de arranque, excluyendo deviceName
  • labels
  • metadata
  • nodeAffinities
  • tags

Actualizar propiedades de instancia

Actualice sus instancias siguiendo los siguientes pasos:

  1. Exporte las propiedades de configuración de la instancia existente.
  2. Modifique las propiedades de la configuración de la instancia.
  3. Ejecute una solicitud de prueba especificando NO_EFFECT como la acción más disruptiva. La respuesta indica campos no válidos en la configuración de la instancia e indica la acción requerida para aplicar los cambios.
  4. Si la configuración es aceptable, solicite una actualización de instancia y especifique la acción más disruptiva que sea aceptable para su actualización de instancia.

El sistema inicia el proceso de actualización sólo si su solicitud cumple con los siguientes requisitos:

  • La propiedad fingerprint de la instancia en su solicitud debe coincidir con la fingerprint de la instancia que está actualizando. Esto evita que las solicitudes de actualización simultáneas en la misma instancia se sobrescriban entre sí.
  • Las propiedades en su solicitud de actualización deben ser válidas.
  • Los recursos que usted solicitó deben estar disponibles.
  • Si las propiedades de su solicitud requieren que la instancia se reinicie, su solicitud debe especificar RESTART como una acción permitida.

Si se cumplen los requisitos, el sistema inicia el proceso de actualización de la instancia. De lo contrario, el sistema no realiza cambios en su instancia existente ni en su configuración.

Puedes iniciar actualizaciones mediante la CLI de gcloud o la API de Compute Engine.

nube de gcloud

  1. Utilice el comando instances export para exportar las propiedades de instancia existentes:

    gcloud compute instances export INSTANCE_NAME \
        --project PROJECT_ID \
        --zone ZONE \
        --destination=FILE_PATH
    

    Reemplace lo siguiente:

    • INSTANCE_NAME : el nombre de la instancia que desea exportar.
    • PROJECT_ID : el ID del proyecto para esta solicitud.
    • ZONE : la zona para esta instancia.
    • FILE_PATH : la ruta de salida donde desea guardar el archivo de configuración de la instancia en su estación de trabajo local.
  2. Utilice un editor de texto para modificar una o más propiedades en el archivo de configuración de instancia exportado. Para saber qué propiedades puede actualizar, consulte la lista de propiedades actualizables en este documento. Por ejemplo, para cambiar el tipo de máquina de la instancia, cambie la propiedad machineType :

    ...
    machineType: https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE
    ...
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto para esta solicitud.
    • ZONE : la zona para esta instancia.
    • MACHINE_TYPE : el tipo de máquina de la instancia, por ejemplo, n1-standard-2 .
  3. Utilice el comando instances update-from-file para ejecutar una actualización de prueba de la instancia de destino. Especifique la marca --most-disruptive-allowed-action=NO_EFFECT . La respuesta identifica propiedades mal configuradas e indica si se requiere una acción RESTART o REFRESH para aplicar la actualización.

    gcloud compute instances update-from-file INSTANCE_NAME \
        --project PROJECT_ID \
        --zone ZONE \
        --source=FILE_PATH \
        --most-disruptive-allowed-action NO_EFFECT
    

    Reemplace lo siguiente:

    • INSTANCE_NAME : el nombre de la instancia que desea exportar.
    • PROJECT_ID : el ID del proyecto para esta solicitud.
    • ZONE : la zona para esta instancia.
    • FILE_PATH : la ruta al archivo de configuración de la instancia modificada en su estación de trabajo local.
  4. Utilice el comando instances update-from-file para actualizar la instancia de destino. Si está actualizando una propiedad que requiere que la instancia se reinicie, incluya la marca --most-disruptive-allowed-action=RESTART . Si las propiedades no requieren un reinicio, especifique el indicador --most-disruptive-allowed-action=REFRESH . Para saber qué propiedades requieren un reinicio, consulte la lista de propiedades actualizables en este documento.

    gcloud compute instances update-from-file INSTANCE_NAME \
        --project PROJECT_ID \
        --zone ZONE \
        --source=FILE_PATH \
        --most-disruptive-allowed-action ALLOWED_ACTION
    

    Reemplace lo siguiente:

    • INSTANCE_NAME : el nombre de la instancia que desea exportar.
    • PROJECT_ID : el ID del proyecto para esta solicitud.
    • ZONE : la zona para esta instancia.
    • FILE_PATH : la ruta al archivo de configuración de la instancia modificada en su estación de trabajo local.
    • ALLOWED_ACTION : define qué tan disruptiva puede ser la actualización. Especifique RESTART para permitir un reinicio completo de la instancia. Especifique REFRESH para actualizar la instancia solo si las propiedades modificadas no requieren que la instancia se reinicie.

Si la solicitud de actualización es válida y los recursos necesarios están disponibles, comienza el proceso de actualización de la instancia. Puede monitorear el estado de esta operación viendo los registros de auditoría . Si la actualización requiere un reinicio y su comando permite un RESTART , la instancia se reinicia para aplicar los cambios.

DESCANSAR

  1. Utilice el método instances.get en la API de Compute Engine para exportar las propiedades de la instancia existente:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto para esta solicitud.
    • ZONE : la zona para esta instancia.
    • INSTANCE_NAME : el nombre de la instancia que desea exportar.

    Esta solicitud devuelve una definición de recurso de instancia .

  2. En la respuesta, modifique las propiedades del recurso de instancia. Para saber qué propiedades se pueden actualizar, consulte la lista de propiedades actualizables en este documento. Por ejemplo, para cambiar el tipo de máquina de la instancia, cambie la propiedad machineType . Puede cambiar varias propiedades.

    {
      ...
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
      ...
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto para esta solicitud.
    • ZONE : la zona para esta instancia.
    • MACHINE_TYPE : el tipo de máquina de la instancia, por ejemplo, n1-standard-2 .
  3. Utilice el método instances.update en la API de Compute Engine y especifique el parámetro de consulta mostDisruptiveAllowedAction=NO_EFFECT para ejecutar una actualización de prueba de la instancia de destino. La respuesta identifica propiedades mal configuradas e indica si se requiere una acción RESTART o REFRESH para aplicar la actualización.

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=NO_EFFECT
    
    {
      ...
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
      ...
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto para esta solicitud.
    • ZONE : la zona para esta instancia.
    • INSTANCE_NAME : el nombre de la instancia que desea exportar.
  4. Utilice el método instances.update en la API de Compute Engine para actualizar la instancia de destino. Si está actualizando una propiedad que requiere reiniciar la instancia, incluya el parámetro de consulta mostDisruptiveAllowedAction=RESTART para indicar que la instancia se puede reiniciar durante la actualización. Si las propiedades no requieren un reinicio, especifique el parámetro de consulta mostDisruptiveAllowedAction=REFRESH . Para saber qué propiedades requieren un reinicio, consulte la lista de propiedades actualizables en este documento. Incluya el cuerpo completo del recurso de instancia que modificó. En el siguiente ejemplo, el cuerpo cambia el tipo de máquina a n1-standard-2 :

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=ALLOWED_ACTION
    
    {
      ...
      "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
      ...
    }
    

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto para esta solicitud.
    • ZONE : la zona para esta instancia.
    • INSTANCE_NAME : el nombre de la instancia que desea exportar.
    • ALLOWED_ACTION : define qué tan disruptiva puede ser la actualización. Especifique RESTART para permitir un reinicio completo de la instancia. Especifique REFRESH para actualizar la instancia solo si las propiedades modificadas no requieren que la instancia se reinicie.

Si la solicitud de actualización es válida y los recursos necesarios están disponibles, comienza el proceso de actualización de la instancia. Puede monitorear el estado de esta operación viendo los registros de auditoría . Si la actualización requiere un reinicio y su comando permite un RESTART , la instancia se reinicia para aplicar los cambios.

¿Qué sigue?