Puoi utilizzare una combinazione di famiglie di immagini personalizzate e aggiornamenti in sequenza per attivare gli upgrade delle immagini sistema operativo con un solo clic sul tuo gruppo di istanze gestite (MIG).
L'upgrade dell'immagine sistema operativo con un solo clic offre una serie di vantaggi, tra cui:
- Funziona con tutti i tipi di macchine VM e tutte le dimensioni dei gruppi di istanze.
- Supporta immagini e container Windows e Linux.
- Le istanze sono ricreate sulla base del relativo template di istanza corrente oppure, facoltativamente, in base a un nuovo template, in modo che sia possibile conservare gli script di avvio personalizzati e i metadati.
- Funziona con i MIG stateful in modo che, all'occorrenza, sia possibile conservare i dati sui dischi non di avvio.
- L'implementazione di un aggiornamento alla nuova versione del sistema operativo avviene automaticamente, senza che l'utente debba inserire altri input oltre alla 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 la tua identità viene verificata per l'accesso a servizi e API di Google Cloud .
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
-
Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI 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.
- Set a default region and zone.
-
Come funziona l'upgrade con un solo clic dell'immagine sistema operativo
Quando richiami un aggiornamento, il MIG sostituisce i dischi di avvio di tutte le VM del gruppo con la versione più recente dell'immagine sistema operativo disponibile nella tua famiglia di immagini personalizzate. Il MIG conserva i metadati e gli script di avvio configurati nel template di istanza per ogni VM del gruppo. I dischi non di avvio vengono ricreati in base alle relative specifiche nel template di istanza. Per informazioni sulla conservazione dei dati, vediConfigurazione dei dischi permanenti stateful nei MIG.
Per limitare le interruzioni delle applicazioni, esegui gli aggiornamenti in batch, mantenendo in esecuzione una percentuale specifica di VM durante l'aggiornamento. Per una maggiore affidabilità, configura un controllo di integrità basato sull'applicazione per il MIG: prima di procedere con ulteriori aggiornamenti delle altre VM, il gruppo attende una risposta di stato integro da un'applicazione delle VM aggiornate.
Prima di iniziare
Installa o esegui l'aggiornamento all'ultima versione di Google Cloud CLI.
Assicurati di aver creato un template di istanza che rimandi a una famiglia di immagini. Google consiglia di utilizzare famiglie di immagini personalizzate per ridurre il rischio di implementare una versione dell'immagine incompatibile con la tua applicazione. Per avere la certezza che siano implementate solo le versioni delle immagini compatibili, aggiungile alla tua famiglia di immagini personalizzate solo dopo aver eseguito i test di compatibilità con l'applicazione.
Quando il template di istanza fa riferimento a una famiglia di immagini, il MIG crea sempre le istanze dall'immagine più recente presente nella famiglia, ad esempio:
- Quando il MIG aggiunge nuove istanze in seguito a un aumento delle dimensioni, effettuato da te o dal gestore della scalabilità automatica del MIG.
- Quando il MIG ricrea un'istanza, tramite l'attivazione manuale o la riparazione automatica.
Testa la nuova immagine con la tua app prima di aggiungerla alla famiglia di immagini e di implementarla.
Facoltativamente, puoi creare un controllo di integrità basato su applicazione per il MIG. Un controllo di integrità basato su applicazione verifica che l'applicazione risponda come previsto su ogni VM del MIG. Puoi configurare l'aggiornamento in modo che non sia consentita più di una VM non disponibile. Se un'applicazione non risponde come previsto, il MIG contrassegna la VM come non disponibile e l'implementazione non viene eseguita.
Esegui l'upgrade con un solo clic di immagini sistema operativo per i MIG
Per aggiornare tutte le VM di un MIG all'immagine più recente di una famiglia di immagini personalizzate, segui questi passaggi:
Avvia una sostituzione in sequenza con il seguente comando.
gcloud compute instance-groups managed rolling-action replace instance-group-name \ [--max-surge=max-surge ] [--max-unavailable=max-unavailable]
Sostituisci i seguenti valori:
instance-group-name
: il nome del MIG su cui intervenire.max-surge
: il numero massimo di VM aggiuntive temporanee che è consentito creare durante la procedura di aggiornamento. Può essere un numero fisso (ad esempio5
) o una percentuale della dimensione del MIG (ad esempio10%
).max-unavailable
: il numero massimo consentito di VM non disponibili durante il processo di aggiornamento. Può essere un numero fisso (5
) o una percentuale delle dimensioni del MIG (10%
).
Puoi combinare i controlli di integrità tramite le opzioni
--max-unavailable
e--max-surge
per interrompere ulteriori aggiornamenti, se causano la non disponibilità delle VM.Monitora l'aggiornamento utilizzando il sottocomando
wait-until
per verificare che il campostatus.versionTarget.isReached
del MIG sia impostato sutrue
.gcloud compute instance-groups managed wait-until instance-group-name --version-target-reached
Sostituisci i seguenti valori:
instance-group-name
: il nome del MIG su cui intervenire.
Il comando restituisce un risultato quando il gruppo è aggiornato.
Puoi anche elencare le istanze per visualizzare lo stato di ciascuna.
gcloud compute instance-groups managed list-instances instance-group-name
Il comando restituisce un elenco di istanze e i relativi dettagli, tra cui lo stato, lo stato di integrità e le azioni correnti di ciascuna VM. Quando tutte le VM sono in stato
RUNNING
e non sono in corso azioni di alcun genere, il MIG è aggiornato e stabile.Se è necessario eseguire il rollback a un'immagine sistema operativo precedente, devi creare un template di istanza e specificare quale immagine vuoi utilizzare. Successivamente avvia un aggiornamento in sequenza per aggiornare tutte le istanze gestite affinché utilizzino quel template. Per ulteriori informazioni, vedi Rollback di un aggiornamento.
Esempio
In questo esempio sono descritte le seguenti attività:
- Creazione di un template di istanza per facilitare l'aggiornamento delle immagini sistema operativo:
- Definizione di una famiglia di immagini personalizzata nel template di istanza.
- Creazione di un MIG basato sul template.
- Configurazione di un controllo di integrità per limitare le interruzioni causate dall'aggiornamento dell'immagine.
- Aggiunta di una nuova immagine a una famiglia di immagini.
- Aggiornamento del sistema operativo con un solo comando.
- Monitoraggio dell'aggiornamento.
Segui questi passaggi per attivare ed eseguire gli upgrade del sistema operativo con un solo clic in un MIG:
Crea un template di istanza che specifichi una famiglia di immagini personalizzata. La famiglia di immagini deve contenere immagini testate e attendibili. Ogni VM che il MIG crea sulla base del template, usa l'immagine più recente disponibile nella 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
Crea un MIG basato sul template di istanza. In questo esempio il MIG viene avviato con tre istanze basate su
example-template
. Il template di istanza specifica una famiglia di immagini, quindi il MIG crea ogni VM con l'immagine più recente di quella famiglia.gcloud compute instance-groups managed create example-group \ --base-instance-name example \ --size 3 \ --zone us-east1-b \ --template example-template
(Facoltativo) Configura e abilita un controllo di integrità basato sull'applicazione. Se dopo l'aggiornamento dell'immagine l'app non risponde, puoi utilizzare lo stato del controllo di integrità insieme all'impostazione maxUnavailable per evitare che il MIG esegua ulteriori implementazioni.
Crea un controllo di integrità che cerchi una risposta HTTP
200
nel percorso della richiesta/health
. Questo percorso è fornito dall'app GitHub presente su ogni istanza.gcloud compute health-checks create http example-autohealer-check \ --check-interval 10 \ --timeout 5 \ --healthy-threshold 2 \ --unhealthy-threshold 3 \ --request-path "/health"
Crea una regola firewall per consentire ai probe del controllo di integrità di accedere alle istanze. I probe del controllo di integrità provengono da indirizzi compresi negli intervalli
130.211.0.0/22
e35.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
Aggiungi il controllo di integrità al MIG.
gcloud compute instance-groups managed update example-group \ --zone us-east1-b --health-check example-autohealer-check
Quando un aggiornamento è disponibile, testato e considerato 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 corrente più recente in
my-image-family
èmy-image-v2
, basata sul disco di origineboot-disk-1
.Richiama una sostituzione in sequenza per sostituire tutte le VM nel MIG. Il MIG sostituisce ogni VM in base al template di istanza del gruppo. Il template di istanza specifica
my-image-family
, pertanto 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 MIG crea un'ulteriore VM oltre le dimensioni target del gruppo e non rimuove nessuna VM esistente fino a quando la VM creata non è attiva e funzionante.
gcloud compute instance-groups managed rolling-action replace example-group \ --max-surge 1 --max-unavailable 0
Per monitorare lo stato degli aggiornamenti, usa il comando
wait-until
con il flag--version-target-reached
. Il comando restituisce un risultato quando il gruppo è 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 lo stato, lo stato di integrità, le azioni correnti, il template di istanza e la versione di ciascuna 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
Per eseguire il rollback a un'immagine precedente segui questi passaggi:
- Crea un nuovo template di istanza che specifichi l'immagine che ti interessa.
- Avvia un aggiornamento in sequenza per applicare il template di istanza.
Passaggi successivi
- Scopri di più sulle best practice relative alle famiglie di immagini.
- Scopri di più sui gruppi di istanze.
- Scopri di più sui modelli di istanza.
- Scopri di più sugli aggiornamenti in sequenza nei MIG.