Eseguire upgrade di immagini del sistema operativo con un solo clic nei MIG


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

L'utilizzo dell'upgrade dell'immagine 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 dei gruppi di istanze.
  • Supporta immagini e container sia Windows che 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 gli script di avvio e i metadati personalizzati.
  • Funziona con i gruppi di istanze gestite stateful, quindi se vuoi puoi conservare i dati sui dischi non di avvio.
  • L'implementazione di un aggiornamento alla nuova versione del sistema operativo avviene automaticamente, senza bisogno di ulteriori input da parte dell'utente dopo la richiesta iniziale.
  • Supporta aggiornamenti batch con un controllo di integrità facoltativo.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. Autenticazione è Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine come segue.
    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

Come funziona l'upgrade dell'immagine del sistema operativo con un solo clic?

Quando richiedi un aggiornamento, il gruppo di istanze gestite sostituisce i dischi di avvio di tutte le VM del gruppo con la versione più recente dell'immagine del sistema operativo disponibile della tua famiglia di immagini personalizzate. Il gruppo di istanze gestite conserva gli script di avvio e i metadati che hai configurato nel per ogni VM del gruppo. I dischi non di avvio vengono ricreati sulle rispettive specifiche nel modello di istanza. Per informazioni sulla conservazione dei dati, consulta la pagina Configurare i dischi con stato nei gruppi di istanze gestite.

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

Prima di iniziare

  • Installare o aggiornare all'ultima versione di Google Cloud CLI.

  • Assicurati di aver creato un modello di istanza che rimandi a una famiglia di immagini. Google ti consiglia di utilizzare famiglie di immagini personalizzate per ridurre il rischio di implementare una versione dell'immagine incompatibile con la tua applicazione. Puoi assicurarti che solo le versioni delle immagini compatibili implementato aggiungendo immagini alla famiglia di immagini personalizzate solo dopo test di compatibilità con la tua applicazione.

    Quando il modello di istanza rimanda a una famiglia di immagini, il gruppo di istanze gestite crea istanze dall'ultima immagine della 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 tramite la riparazione automatica.
  • Testa la nuova immagine con l'app prima di aggiungerla alla tua famiglia di immagini e in fase di implementazione.

  • 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 che l'applicazione risponda come previsto su ciascuna delle VM nel gruppo di istanze gestite. Puoi configurare l'aggiornamento in modo da non consentire 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 di un gruppo di istanze gestite all'immagine più recente di una famiglia di immagini personalizzate, completa i seguenti passaggi:

  1. Avvia una sostituzione graduale con il seguente comando.

    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 da su cui operano.
    • max-surge: il numero massimo di VM aggiuntive che possono essere create temporaneamente durante la procedura di aggiornamento. Può essere un numero fisso (ad esempio, 5) o una percentuale del dimensione del gruppo di istanze gestite (ad esempio, 10%).
    • max-unavailable: il numero massimo di VM che potrebbero non essere disponibili durante il processo di aggiornamento. Può essere un numero fisso (5) o una percentuale delle dimensioni del gruppo di istanze gestite (10%).

    Puoi combinare i controlli di integrità utilizzando --max-unavailable e --max-surge opzioni per interrompere ulteriori aggiornamenti se comportano l'indisponibilità delle VM.

  2. Monitora l'aggiornamento utilizzando il subcomando wait-until per verificare che il campo status.versionTarget.isReached del MIG 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 da su cui operano.

    Il comando viene restituito quando il gruppo viene aggiornato.

    Puoi anche elencare istanze per visualizzare lo stato di ciascuna 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. Quando tutte le VM sono RUNNING e non hanno azioni in corso, il MIG è 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 aggiornare tutte le istanze gestite in modo che utilizzino il modello. Per ulteriori informazioni, vedi È in corso il rollback di un aggiornamento.

Esempio

Questo esempio illustra le seguenti attività:

  1. Crea un modello di istanza per aggiornare facilmente le immagini del sistema operativo:
  2. Crea un gruppo di istanze gestite basato sul modello.
  3. Configura un controllo di integrità per limitare l'interruzione causata da un aggiornamento dell'immagine.
  4. Aggiungi una nuova immagine a una famiglia di immagini.
  5. Esegui un aggiornamento del sistema operativo con un solo comando.
  6. Monitora l'aggiornamento.

Per attivare ed eseguire gli upgrade del sistema operativo con un solo clic in un gruppo di istanze gestite:

  1. Crea un modello di istanza che specifichi una famiglia di immagini personalizzate. La famiglia di immagini deve contenere immagini testate e attendibili. Ogni VM creata dal MIG 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 MIG con tre istanze basate su example-template. Poiché l'istanza specifica una famiglia di immagini, il gruppo di istanze gestite crea ogni VM l'ultima immagine 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 un aggiornamento dell'immagine, puoi utilizzare lo stato del controllo di integrità combinato con l'impostazione maxUnavailable per interrompere ulteriori implementazioni del MIG.

    1. Crea un controllo di integrità che cerca una risposta HTTP 200 nel percorso della richiesta /health. L'app GitHub presente su ogni istanza serve questo 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 inclusi 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 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 ritenuto compatibile con la tua app, crea una nuova immagine e usa il flag --family per includerla immagine 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'ultima immagine in my-image-family è ora my-image-v2, che si basa sul disco di origine boot-disk-1.

  5. Esegui una sostituzione graduale 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, quindi ogni VM riceve l'immagine più recente della famiglia (my-image-v2).

    Puoi configurare il livello di interruzione causato dall'aggiornamento. In questo esempio, il gruppo di istanze gestite crea una VM aggiuntiva al di sopra della dimensione target del gruppo e non rimuovere eventuali VM esistenti finché quella non è attiva e 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 il stato, stato di salute, azioni correnti, 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. Per rollback a un'immagine precedente, segui questi passaggi:

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

Passaggi successivi