Utilizzando una combinazione di famiglie di immagini personalizzate e aggiornamenti in sequenza, puoi attivare gli upgrade delle immagini sistema operativo con un solo clic sul tuo gruppo di istanze gestite (MIG).
L'utilizzo dell'upgrade dell'immagine sistema operativo con un solo clic offre una serie di vantaggi, tra cui:
- Funziona con tutti i tipi di macchine virtuali e tutte le dimensioni dei 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 gli script di avvio e i metadati personalizzati.
- Funziona con i MIG stateful, quindi puoi conservare facoltativamente i dati sui dischi non di avvio.
- L'implementazione di un aggiornamento alla nuova versione del sistema operativo avviene automaticamente, senza la necessità di ulterioriinput utentel'utente 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 la tua identità viene verificata per l'accesso ai Google Cloud servizi e alle API.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
-
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.
- Set a default region and zone.
-
Come funziona l'upgrade delle immagini sistema operativo con un solo clic?
Quando richiami un aggiornamento, il MIG sostituisce i dischi di avvio di tutte le VM del gruppo con l'ultima versione disponibile dell'immagine sistema operativo della famiglia di immagini personalizzate. Il MIG conserva i metadati e gli script di avvio configurati 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 dei dischi stateful nei MIG.
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 sull'applicazione per il tuo MIG: il gruppo attende una risposta integra da un'applicazione sulle VM aggiornate prima di procedere con ulteriori aggiornamenti ad altre VM.
Prima di iniziare
Installa o esegui l'aggiornamento all'ultima versione di Google Cloud CLI.
Assicurati di aver creato un modello 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. Puoi assicurarti che vengano implementate solo versioni di immagini compatibili aggiungendo immagini alla famiglia di immagini personalizzate solo dopo aver eseguito test di compatibilità con l'applicazione.
Quando il modello di istanza punta a una famiglia di immagini, il MIG crea sempre istanze dall'immagine più recente della famiglia, ad esempio:
- Quando il MIG aggiunge nuove istanze perché tu o il gestore della scalabilità automatica del MIG avete aumentato le dimensioni del MIG.
- Quando il MIG ricrea un'istanza, attivata manualmente o dalla riparazione automatica.
Prova la nuova immagine con la tua app prima di aggiungerla alla famiglia di immagini e di eseguirne il deployment.
(Facoltativo) Crea un controllo di integrità basato sull'applicazione per il tuo MIG. Un controllo di integrità basato sull'applicazione verifica che la tua applicazione risponda come previsto su ogni VM del MIG. Puoi configurare l'aggiornamento in modo da consentire al massimo 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 sistema operativo con un solo clic per i MIG
Per aggiornare tutte le VM in un gruppo di istanze gestite all'ultima immagine di una famiglia di immagini personalizzate, completa i seguenti passaggi:
Avvia una sostituzione controllata 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 MIG su cui operare.max-surge
: il numero massimo aggiuntivo di VM che possono essere create temporaneamente durante il processo di aggiornamento. Può essere un numero fisso (ad esempio5
) o una percentuale delle dimensioni del MIG (ad esempio10%
).max-unavailable
: il numero massimo di VM che possono non essere 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à utilizzando le
--max-unavailable
e--max-surge
opzioni per interrompere ulteriori aggiornamenti se causano l'indisponibilità delle VM.Monitora l'aggiornamento utilizzando il comando secondario
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 quanto segue:
instance-group-name
: il nome del MIG su cui operare.
Il comando viene restituito quando il gruppo viene 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 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.Se devi eseguire il rollback a un'immagine sistema operativo precedente, devi creare un modello di istanza e specificare l'immagine che vuoi utilizzare. Dopodiché, avvia un aggiornamento in sequenza per aggiornare tutte le istanze gestite in modo che utilizzino questo modello. Per ulteriori informazioni, vedi Rollback di un aggiornamento.
Esempio
Questo esempio copre le seguenti attività:
- Crea un modello di istanza per aggiornamenti semplici delle immagini del sistema operativo:
- Specifica una famiglia di immagini personalizzata nel modello di istanza.
- Crea un gruppo di istanze gestite basato sul modello.
- Configura un controllo di integrità per limitare le interruzioni causate da un aggiornamento dell'immagine.
- Aggiungi una nuova immagine a una famiglia di immagini.
- Richiama un aggiornamento del sistema operativo con un solo comando.
- Monitora l'aggiornamento.
Per attivare ed eseguire gli upgrade del sistema operativo con un solo clic su un gruppo di istanze gestite:
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 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
Crea un gruppo di istanze gestite basato sul modello di istanza. Questo esempio avvia il MIG con tre istanze basate su
example-template
. Poiché il modello di istanza specifica una famiglia di immagini, il MIG 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
(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 impedire ulteriori implementazioni del MIG.
Crea un controllo di integrità che cerca una risposta HTTP
200
sul percorso della richiesta/health
. L'app GitHub presente in ogni istanza gestisce 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"
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 inclusi 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 tuo MIG.
gcloud compute instance-groups managed update example-group \ --zone us-east1-b --health-check example-autohealer-check
Quando un aggiornamento è disponibile, testato e ritenuto 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'ultima immagine in
my-image-family
è oramy-image-v2
, che si basa sul disco di origineboot-disk-1
.Richiama una sostituzione graduale per sostituire tutte le VM nel MIG. Il MIG 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 MIG crea una VM aggiuntiva rispetto alle dimensioni target del gruppo e non rimuove le VM esistenti finché la VM non è in esecuzione.
gcloud compute instance-groups managed rolling-action replace example-group \ --max-surge 1 --max-unavailable 0
Se vuoi monitorare lo stato degli aggiornamenti, utilizza il comando
wait-until
con il flag--version-target-reached
. Il comando viene restituito 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 lo stato, lo stato di integrità, le azioni correnti, il modello di istanza e la 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
Se devi eseguire il rollback a un'immagine precedente, segui questi passaggi:
- Crea un nuovo modello di istanza che specifichi l'immagine che vuoi.
- Avvia un aggiornamento in sequenza per applicare il modello di istanza.
Passaggi successivi
- Scopri di più sulle best practice per le 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.