Esecuzione di upgrade di immagini del sistema operativo con un solo clic nei gruppi di istanze gestite

Utilizzando una combinazione di famiglie di immagini personalizzate e aggiornamenti in sequenza, puoi abilitare gli upgrade delle immagini del sistema operativo con un solo clic nel tuo gruppo di istanze gestite (MIG).

L'utilizzo dell'upgrade delle immagini del sistema operativo con un solo clic offre una serie di vantaggi, tra cui:

  • Funziona con tutti i tipi di macchine VM e con tutte le dimensioni di gruppi di istanze.
  • Supporta immagini e container Windows e Linux.
  • Le istanze vengono ricreate in base al modello di istanza corrente o, facoltativamente, in base a un nuovo modello, in modo da poter conservare script e metadati di avvio personalizzati.
  • Funziona con i MIG stateful, per cui, se vuoi, puoi conservare i dati su dischi non di avvio.
  • L'implementazione di un aggiornamento alla nuova versione del sistema operativo avviene automaticamente, senza bisogno di input utente aggiuntivi dopo la richiesta iniziale.
  • Supporta gli aggiornamenti batch con un controllo di integrità facoltativo.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Imposta una regione e una zona predefinite.

Come funziona l'upgrade delle immagini del sistema operativo con un solo clic?

Quando richiami un aggiornamento, il gruppo di istanze gestite sostituisce i dischi di avvio per tutte le VM nel gruppo con l'ultima versione disponibile delle immagini del sistema operativo della tua famiglia di immagini personalizzate. Il gruppo di istanze gestite conserva i metadati e gli script di avvio che hai configurato nel modello di istanza per ogni VM del gruppo. I dischi non di avvio vengono ricreati in base alle specifiche nel modello di istanza. Per informazioni sulla conservazione dei dati, consulta Configurazione di dischi stateful nei gruppi di istanze gestite.

Per limitare l'interruzione dell'applicazione, puoi eseguire gli aggiornamenti in batch, mantenendo una percentuale specifica di VM in esecuzione durante l'aggiornamento. Per aumentare l'affidabilità, puoi configurare un controllo di integrità basato sull'applicazione per il tuo gruppo di istanze gestite: il gruppo attende una risposta in stato integro da un'applicazione su VM aggiornate prima di procedere con ulteriori aggiornamenti ad altre VM.

Prima di iniziare

  • Installa o aggiorna alla versione più recente di Google Cloud CLI.

  • Assicurati di aver creato un modello di istanza che indirizza a una famiglia di immagini. Google consiglia di utilizzare le famiglie di immagini personalizzate per ridurre il rischio di implementare una versione delle immagini incompatibile con la tua applicazione. Puoi assicurarti che vengano implementate solo le versioni di immagini compatibili aggiungendole alla famiglia di immagini personalizzate solo dopo aver testato la compatibilità con l'applicazione.

    Quando il modello di istanza punta a una famiglia di immagini, il gruppo di istanze gestite crea sempre istanze a partire dall'immagine più recente nella famiglia, ad esempio:

    • Quando il gruppo di istanze gestite aggiunge nuove istanze perché tu o il gestore della scalabilità automatica del gruppo di istanze gestite avete aumentato le dimensioni del gruppo di istanze gestite.
    • Quando il gruppo di istanze gestite ricrea un'istanza, attivata manualmente o mediante riparazione automatica.
  • Testa la nuova immagine con la tua app prima di aggiungerla alla tua famiglia di immagini e di implementarla.

  • Se vuoi, crea un controllo di integrità basato sull'applicazione per il tuo gruppo di istanze gestite. Un controllo di integrità basato sull'applicazione verifica che l'applicazione risponda come previsto su ciascuna delle VM nel gruppo di istanze gestite. Puoi configurare l'aggiornamento in modo da consentire non più di una VM non disponibile. Se un'applicazione non risponde come previsto, il gruppo di istanze gestite contrassegna la VM come non disponibile e l'implementazione non procede.

Esecuzione di upgrade di immagini del sistema operativo con un solo clic per i gruppi di istanze gestite

Per aggiornare tutte le VM in un gruppo di istanze gestite all'immagine più recente di una famiglia di immagini personalizzate, segui questi passaggi:

  1. Avvia una sostituzione in sequenza con il comando seguente.

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

    Sostituisci quanto segue:

    • instance-group-name: il nome del gruppo di istanze gestite su cui operare.
    • max-surge: il numero massimo di VM che possono essere temporaneamente create durante il processo di aggiornamento. Può essere un numero fisso (ad esempio 5) o una percentuale delle dimensioni del gruppo di istanze gestite (ad esempio 10%).
    • max-unavailable: numero massimo di VM che possono essere non disponibili durante il processo di aggiornamento. Può essere un numero fisso (5) o una percentuale della dimensione del gruppo di istanze gestite (10%).

    Puoi combinare i controlli di integrità utilizzando le opzioni --max-unavailable e --max-surge per interrompere ulteriori aggiornamenti se causano la mancata disponibilità delle VM.

  2. Monitora l'aggiornamento utilizzando il sottocomando wait-until per verificare che il campo status.versionTarget.isReached del gruppo di istanze gestite sia impostato su true.

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

    Sostituisci quanto segue:

    • instance-group-name: il nome del gruppo di istanze gestite su cui operare.

    Il comando viene restituito quando il gruppo viene aggiornato.

    Puoi anche elencare le istanze per visualizzare lo stato di ogni istanza.

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

    Il comando restituisce un elenco di istanze e i relativi dettagli, tra cui stato, stato di integrità e azioni correnti per ogni VM. Se tutte le VM sono RUNNING e non hanno azioni attuali, il gruppo di istanze gestite è aggiornato e stabile.

  3. Se devi eseguire il rollback a un'immagine del sistema operativo precedente, devi creare un modello di istanza e specificare l'immagine che vuoi utilizzare. Poi avvia un aggiornamento in sequenza per aggiornare tutte le istanze gestite in modo che utilizzino il modello. Per ulteriori informazioni, consulta la sezione Eseguire il rollback di un aggiornamento.

Esempio

Questo esempio riguarda le attività seguenti:

  1. Crea un modello di istanza per semplificare gli aggiornamenti delle immagini del sistema operativo:
  2. Crea un gruppo di istanze gestite basato sul modello.
  3. Configura un controllo di integrità per limitare le interruzioni dovute a un aggiornamento dell'immagine.
  4. Aggiungi una nuova immagine a una famiglia di immagini.
  5. Richiama un aggiornamento del sistema operativo con un singolo comando.
  6. Monitora l'aggiornamento.

Per abilitare ed eseguire gli upgrade del sistema operativo con un solo clic in un gruppo di istanze gestite, segui questi passaggi:

  1. Crea un modello di istanza che specifichi una famiglia di immagini personalizzata. La famiglia di immagini deve contenere immagini testate e attendibili. Ogni VM creata dal gruppo di istanze gestite dal modello utilizza l'immagine più recente disponibile di questa famiglia.

    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. Crea un gruppo di istanze gestite basato sul modello di istanza. Questo esempio avvia il gruppo di istanze gestite con tre istanze basate su example-template. Poiché il modello di istanza specifica una famiglia di immagini, il gruppo di istanze gestite crea ogni VM con l'immagine più recente della famiglia.

    gcloud compute instance-groups managed create example-group \
      --base-instance-name example \
      --size 3 \
      --zone us-east1-b \
      --template example-template
    
  3. (Facoltativo) Configura e abilita un controllo di integrità basato sull'applicazione. Se la tua app non risponde dopo l'aggiornamento di un'immagine, puoi utilizzare lo stato del controllo di integrità combinato con l'impostazione maxUnavailable per interrompere il gruppo di istanze gestite in seguito a ulteriori implementazioni.

    1. Crea un controllo di integrità che cerchi una risposta 200 HTTP nel percorso di richiesta /health. L'app GitHub presente su ogni istanza fornisce quel percorso.

      gcloud compute health-checks create http example-autohealer-check \
          --check-interval 10 \
          --timeout 5 \
          --healthy-threshold 2 \
          --unhealthy-threshold 3 \
          --request-path "/health"
      
    2. Crea una regola firewall per consentire ai probe del controllo di integrità di accedere alle istanze. I probe di controllo di integrità provengono da indirizzi negli intervalli: 130.211.0.0/22 e 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. Aggiungi il controllo di integrità al tuo gruppo di istanze gestite.

      gcloud compute instance-groups managed update example-group \
          --zone us-east1-b --health-check example-autohealer-check
      
  4. Quando un aggiornamento è disponibile, testato e stabilito essere compatibile con la tua app, crea una nuova immagine e utilizza il flag --family per includerla nella famiglia di immagini personalizzate.

    gcloud compute images my-image-v2 \
        --source-disk boot-disk-1 \
        --source-disk-zone us-central1-f \
        --family my-image-family

    In questo esempio, l'immagine più recente in my-image-family è ora my-image-v2, e basata sul disco di origine boot-disk-1.

  5. Richiama una sostituzione in sequenza per sostituire tutte le VM nel gruppo di istanze gestite. Il gruppo di istanze gestite sostituisce ogni VM in base al modello di istanza del gruppo. Il modello di istanza specifica my-image-family, di conseguenza ogni VM riceve l'immagine più recente nella famiglia (my-image-v2).

    Puoi configure il livello di interruzione causato dall'aggiornamento. In questo esempio, il gruppo di istanze gestite crea una VM aggiuntiva sopra la dimensione di destinazione del gruppo e non rimuove nessuna VM esistente finché quella VM non è in esecuzione.

    gcloud compute instance-groups managed rolling-action replace example-group \
        --max-surge 1 --max-unavailable 0
    
  6. Se vuoi monitorare lo stato degli aggiornamenti, utilizza il comando wait-until con il flag --version-target-reached. Il comando restituisce quando il gruppo viene aggiornato.

    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
    

    Puoi anche utilizzare il comando list-instances per visualizzare stato, stato di integrità, azioni attuali, modello di istanza e versione per ogni 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. Se devi eseguire il rollback a un'immagine precedente, procedi nel seguente modo:

    1. Crea un nuovo modello di istanza che specifichi l'immagine che vuoi.
    2. Avvia un aggiornamento in sequenza per applicare il modello di istanza.

Passaggi successivi