Aggiorna le proprietà dell'istanza


Puoi utilizzare una singola richiesta da Google Cloud CLI o dall' API Compute Engine per aggiornare più proprietà dell'istanza e, se necessario, riavviarla. Il metodo di aggiornamento gestisce la logica per convalidare le proprietà dell'istanza aggiornate e garantire che le risorse necessarie siano disponibili per completare l'aggiornamento. Se la richiesta include proprietà non valide o se le risorse richieste non sono disponibili, la richiesta restituisce un errore e non apporta modifiche alla tua istanza. In questo modo l'istanza è protetta da aggiornamenti parziali e da interruzioni e non può accedere alle risorse per riavviarsi.

Per aggiungere o rimuovere interfacce di rete dinamiche da un'istanza (anteprima), utilizza le seguenti procedure anziché aggiornare le proprietà dell'istanza:

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo di verifica dell'identità per poter accedere a Google Cloud servizi e API. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    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. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

    2. Set a default region and zone.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere alla gcloud CLI con la tua identità federata.

    Per saperne di più, consulta Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

Limitazioni

  • Le richieste di aggiornamento delle istanze tramite gcloud CLI o l'API Compute Engine non supportano la semantica PATCH. La risorsa dell'istanza nella richiesta di aggiornamento deve includere tutte le proprietà dell'istanza. Le proprietà mancanti nella configurazione dell'istanza nella richiesta di aggiornamento vengono considerate eliminate dall'istanza.
  • Puoi aggiornare solo un elenco specifico di proprietà.
  • La modifica delle istanze da e verso la modalità single-tenancy non è supportata.
  • Puoi modificare un'istanza da una prenotazione a un'altra, ma non puoi collegare o scollegare un'istanza a una prenotazione utilizzando la procedura di aggiornamento.
  • Se all'istanza sono collegati dischi SSD locali, non puoi aggiornare le proprietà che richiedono il riavvio dell'istanza mentre è in esecuzione. Puoi eliminare e poi ricreare l'istanza oppure arrestare l'istanza, aggiornare le proprietà e poi riavviarla.
  • Se un'istanza utilizza risorse disponibili solo nell'API Compute Engine beta, devi utilizzare la versione corretta del metodo instances.update per aggiornare queste proprietà. Ad esempio, se crei un'istanza utilizzando l'API Compute Engine beta e la configuri con una risorsa riconosciuta solo dall'API beta, devi utilizzare anche la versione beta del metodo instances.update per aggiornare queste risorse. La versione v1 del metodo instances.update non riconosce le risorse beta utilizzate dall'istanza, pertanto le elimina dalla configurazione dell'istanza durante l'aggiornamento. Questo comportamento si applica anche alle risorse nell'API alpha.

Autorizzazioni

Per aggiornare le istanze, devi disporre dell'autorizzazione compute.instances.update. Questa autorizzazione è inclusa in diversi ruoli IAM (Identity and Access Management) esistenti. Devi anche disporre dell'autorizzazione per utilizzare le risorse da modificare nell'istanza. Ad esempio, per aggiungere un disco a un'istanza devi disporre delle seguenti autorizzazioni:

  • L'autorizzazione compute.instances.update sull'istanza che vuoi aggiornare.
  • compute.disks.use per un disco esistente o compute.disks.create su un progetto in cui vuoi creare un nuovo disco.

Best practice

Per assicurarti che l'interfaccia di aggiornamento dell'istanza funzioni nel modo più efficace per te, utilizza le seguenti best practice:

  • Se possibile, utilizza sempre la stessa versione dell'API Compute Engine per creare, impostare e aggiornare le istanze. In questo modo puoi aggiornare e modificare le risorse dell'istanza se sono disponibili solo in una versione dell'API.
  • Sebbene tu possa utilizzare il metodo instances.update per aggiornare le istanze in un gruppo di istanze gestite (MIG), nella maggior parte dei casi è meglio modificare il modello di istanza del gruppo ed eseguire il rollout dell'aggiornamento nel MIG.

Proprietà che puoi aggiornare

Puoi modificare solo un insieme specifico di proprietà dell'istanza tramite il metodo di aggiornamento. Gli aggiornamenti di alcune proprietà richiedono il riavvio dell'istanza. Per evitare riavvii accidentali delle istanze, la richiesta deve definire quale azione è consentito intraprendere sulle istanze. La tua richiesta può specificare una delle seguenti azioni:

  • NO_EFFECT: la richiesta di aggiornamento verifica se la richiesta è valida e se le risorse sono disponibili, ma non esegue l'aggiornamento. Utilizza questa azione per testare i comandi senza avviare aggiornamenti effettivi.
  • REFRESH: la richiesta di aggiornamento viene eseguita solo se le proprietà dell'istanza modificate non richiedono il riavvio dell'istanza. La richiesta restituisce un errore INFEASIBLE se è valida, ma è necessario un riavvio.
  • RESTART: se l'aggiornamento richiede il riavvio dell'istanza, il sistema riavvierà l'istanza.

Per aggiornare le seguenti proprietà è necessario un riavvio (RESTART):

  • disks: dischi di avvio, inclusi tutti i dischi (disks.deviceName)
  • displayDevice
  • enableNestedVirtualization
  • guestAccelerators
  • machineType
  • minCpuPlatform
  • networkPerformanceConfig
  • performanceMonitoringUnit
  • reservationAffinity: puoi aggiornare solo il modo in cui l'istanza utilizza le prenotazioni (reservationAffinity.consumeReservationType) nel seguente modo:
    • Dall'utilizzo di qualsiasi prenotazione corrispondente (ANY_RESERVATION) al mancato utilizzo delle prenotazioni (NO_RESERVATION)
    • Da non utilizzare le prenotazioni (NO_RESERVATION) a utilizzare qualsiasi prenotazione corrispondente (ANY_RESERVATION)
  • resourcePolicies
  • scheduling
  • serviceAccounts
  • shieldedInstanceConfig
  • threadsPerCore
  • visibleCoreCount

Per aggiornare le seguenti proprietà è necessario solo un aggiornamento (REFRESH):

  • canIpForward
  • deletionProtection
  • description
  • disks: proprietà del disco non di avvio, escluso deviceName
  • labels
  • metadata
  • nodeAffinities
  • tags

Aggiorna le proprietà dell'istanza

Aggiorna le istanze seguendo questi passaggi:

  1. Esporta le proprietà di configurazione dell'istanza esistente.
  2. Modifica le proprietà della configurazione dell'istanza.
  3. Esegui una richiesta di test specificando NO_EFFECT come azione più invasiva. La risposta indica campi non validi nella configurazione dell'istanza e l'azione richiesta per applicare le modifiche.
  4. Se la configurazione è accettabile, richiedi un aggiornamento dell'istanza e specifica l'azione più invasiva accettabile per l'aggiornamento dell'istanza.

Il sistema avvia la procedura di aggiornamento solo se la tua richiesta soddisfa i seguenti requisiti:

  • La proprietà fingerprint dell'istanza nella richiesta deve corrispondere a fingerprint dell'istanza che stai aggiornando. In questo modo si evita che le richieste di aggiornamento simultanee sulla stessa istanza si sovrascrivano a vicenda.
  • Le proprietà nella richiesta di aggiornamento devono essere valide.
  • Le risorse richieste devono essere disponibili.
  • Se le proprietà nella tua richiesta richiedono il riavvio dell'istanza, la tua richiesta deve specificare RESTART come azione consentita.

Se i requisiti vengono soddisfatti, il sistema avvia la procedura di aggiornamento dell'istanza. In caso contrario, il sistema non apporta modifiche all'istanza esistente o alla relativa configurazione.

Puoi avviare gli aggiornamenti utilizzando gcloud CLI o l'API Compute Engine.

gcloud

  1. Utilizza il comando instances export per esportare le proprietà dell'istanza esistente:

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

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza che vuoi esportare.
    • PROJECT_ID: l'ID progetto per questa richiesta.
    • ZONE: la zona per questa istanza.
    • FILE_PATH: il percorso di output in cui vuoi salvare il file di configurazione dell'istanza sulla workstation locale.
  2. Utilizza un editor di testo per modificare una o più proprietà nel file di configurazione dell'istanza esportato. Per scoprire quali proprietà puoi aggiornare, consulta l'elenco delle proprietà aggiornabili in questo documento. Ad esempio, per modificare il tipo di macchina dell'istanza, modifica la proprietà machineType:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta.
    • ZONE: la zona per questa istanza.
    • MACHINE_TYPE: il tipo di macchina dell' istanza, ad esempio n1-standard-2.
  3. Utilizza il comando instances update-from-file per eseguire un aggiornamento di test dell'istanza di destinazione. Specifica il flag --most-disruptive-allowed-action=NO_EFFECT. La risposta identifica le proprietà configurate in modo errato e indica se è necessaria un'azione RESTART o REFRESH per applicare l'aggiornamento.

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

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza che vuoi esportare.
    • PROJECT_ID: l'ID progetto per questa richiesta.
    • ZONE: la zona per questa istanza.
    • FILE_PATH: il percorso del file di configurazione dell'istanza modificato sulla workstation locale.
  4. Utilizza il comando instances update-from-file per aggiornare l'istanza di destinazione. Se stai aggiornando una proprietà che richiede il riavvio dell'istanza, includi il flag --most-disruptive-allowed-action=RESTART. Se le proprietà non richiedono un riavvio, specifica il flag --most-disruptive-allowed-action=REFRESH. Per scoprire quali proprietà richiedono un riavvio, consulta l'elenco delle proprietà aggiornabili in questo documento.

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

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza che vuoi esportare.
    • PROJECT_ID: l'ID progetto per questa richiesta.
    • ZONE: la zona per questa istanza.
    • FILE_PATH: il percorso del file di configurazione dell'istanza modificato sulla workstation locale.
    • ALLOWED_ACTION: definisce il livello di interruzione che l'aggiornamento può causare. Specifica RESTART per consentire il riavvio completo dell'istanza. Specifica REFRESH per aggiornare l'istanza solo se le proprietà modificate non richiedono il riavvio dell'istanza.

Se la richiesta di aggiornamento è valida e le risorse richieste sono disponibili, inizia il processo di aggiornamento dell'istanza. Puoi monitorare lo stato di questa operazione visualizzando i log di controllo. Se l'aggiornamento richiede un riavvio e il comando consente un RESTART, l'istanza viene riavviata per applicare le modifiche.

REST

  1. Utilizza il metodo instances.get nell'API Compute Engine per esportare le proprietà dell'istanza esistente:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta.
    • ZONE: la zona per questa istanza.
    • INSTANCE_NAME: il nome dell'istanza che vuoi esportare.

    Questa richiesta restituisce una definizione di risorsa istanza.

  2. Nella risposta, modifica le proprietà della risorsa dell'istanza. Per scoprire quali proprietà sono aggiornabili, consulta l'elenco delle proprietà aggiornabili in questo documento. Ad esempio, per modificare il tipo di macchina dell'istanza, modifica la proprietà machineType. Puoi modificare più proprietà.

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta.
    • ZONE: la zona per questa istanza.
    • MACHINE_TYPE: il tipo di macchina dell'istanza, ad esempio n1-standard-2.
  3. Utilizza il metodo instances.update nell'API Compute Engine e specifica il parametro di query mostDisruptiveAllowedAction=NO_EFFECT per eseguire un test di aggiornamento dell'istanza di destinazione. La risposta identifica le proprietà configurate in modo errato e indica se è necessaria un'azione RESTART o REFRESH per applicare l'aggiornamento.

    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",
      ...
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta.
    • ZONE: la zona per questa istanza.
    • INSTANCE_NAME: il nome dell'istanza che vuoi esportare.
  4. Utilizza il metodo instances.update nell'API Compute Engine per aggiornare l'istanza di destinazione. Se stai aggiornando una proprietà che richiede il riavvio di un'istanza, includi il parametro di query mostDisruptiveAllowedAction=RESTART per indicare che l'istanza può essere riavviata durante l'aggiornamento. Se le proprietà non richiedono il riavvio, specifica il parametro di query mostDisruptiveAllowedAction=REFRESH. Per scoprire quali proprietà richiedono un riavvio, consulta l'elenco delle proprietà aggiornabili in questo documento. Includi il corpo completo della risorsa istanza che hai modificato. Nell'esempio seguente, il corpo modifica il tipo di macchina in 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",
      ...
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto per questa richiesta.
    • ZONE: la zona per questa istanza.
    • INSTANCE_NAME: il nome dell'istanza che vuoi esportare.
    • ALLOWED_ACTION: definisce il livello di interruzione che l'aggiornamento può causare. Specifica RESTART per consentire il riavvio completo dell'istanza. Specifica REFRESH per aggiornare l'istanza solo se le proprietà modificate non richiedono il riavvio dell'istanza.

Se la richiesta di aggiornamento è valida e le risorse richieste sono disponibili, inizia il processo di aggiornamento dell'istanza. Puoi monitorare lo stato di questa operazione visualizzando i log di controllo. Se l'aggiornamento richiede un riavvio e il comando consente un RESTART, l'istanza viene riavviata per applicare le modifiche.

Passaggi successivi