Questo documento fornisce le best practice per l'utilizzo delle famiglie di immagini per gestire le versioni in evoluzione delle immagini del sistema operativo (OS) su Compute Engine. Le famiglie di immagini consentono di raggruppare le immagini correlate, in modo che gli strumenti di automazione possano fare riferimento alle versioni più recenti mantenendo la possibilità di eseguire il rollback.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Cloud de Confiance by S3NS . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa alla modalità di utilizzo degli esempi in questa pagina:
gcloud
-
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud init
-
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella Cloud de Confiance documentazione sull'autenticazione di.
Famiglie di immagini pubbliche
Compute Engine fornisce famiglie di immagini per fare in modo che i sistemi di automazione possano fare riferimento alle immagini più recenti.
Nel tuo ruolo di amministratore, puoi raggruppare una serie di immagini in una famiglia. In questo modo, gli utenti delle immagini devono tenere traccia solo del nome della famiglia di immagini, anziché di un nome immagine esatto. Poiché i nomi delle immagini devono essere univoci, le pipeline di creazione delle immagini spesso creano nomi di immagini con informazioni codificate, come il nome dell'applicazione, la data e la versione, ad esempio my-application-v3-20210101.
Negli strumenti di automazione, puoi fare riferimento al nome della famiglia di immagini anziché dover aggiornare il nome dell'immagine a intervalli. L'utilizzo delle famiglie di immagini garantisce l'accesso sempre all'immagine più recente della famiglia, ad esempio my-application.
Le immagini pubbliche sono raggruppate in famiglie di immagini. Una famiglia di immagini pubbliche fa sempre riferimento all'ultima versione di un'immagine disponibile in ogni zona. Quando vengono rilasciate nuove immagini a livello globale, la loro disponibilità iniziale nelle famiglie di immagini dipende dalla zona, il che migliora la tolleranza agli errori zonali per i workflow durante gli aggiornamenti delle immagini di Google.
Durante l'implementazione delle immagini, l'ultima versione di un'immagine in una famiglia di immagini potrebbe essere diversa in zone diverse. Ad esempio, la
debian-12 famiglia di immagini nel
debian-cloud progetto fa sempre riferimento all'immagine Debian 12 più recente, ma la
immagine Debian 12 più recente nella zona us-central1-a e southamerica-east1-b
potrebbe essere diversa.
Quando crei VM da famiglie di immagini utilizzando Google Cloud CLI, Compute Engine utilizza l'ultima immagine disponibile nella zona della VM per la tua richiesta. Quando crei VM utilizzando la Cloud de Confiance console, Compute Engine
mostra solo le immagini pubbliche disponibili nella zona selezionata. Se vuoi
creare VM utilizzando l'ultima immagine disponibile a livello globale, utilizza il
comando instances create di gcloud CLI
e specifica --image-family-scope=global.
Visualizzare l'ultima versione dell'immagine disponibile
Puoi visualizzare l'ultima immagine disponibile a livello globale in una famiglia di immagini o l'ultima immagine disponibile in una zona specifica.
in tutto il mondo
Per visualizzare l'ultima immagine disponibile a livello globale in una famiglia di immagini, utilizza uno dei seguenti metodi:
gcloud
Utilizza il
comando gcloud compute images describe-from-family:
gcloud compute images describe-from-family IMAGE_FAMILY_NAME \ --project=IMAGE_PROJECT
Sostituisci quanto segue:
IMAGE_FAMILY_NAME: il nome della famiglia di immagini che vuoi cercare. Per un elenco completo dei nomi delle famiglie di immagini, consulta Dettagli del sistema operativo.IMAGE_PROJECT: il nome del progetto di immagini. Per un elenco completo dei nomi dei progetti di immagini, consulta Dettagli del sistema operativo.
REST
Invia una richiesta GET al
images.getFromFamily metodo:
GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME
Sostituisci quanto segue:
IMAGE_PROJECT: il nome del progetto di immagini. Per un elenco completo dei nomi dei progetti di immagini, consulta Dettagli del sistema operativo.IMAGE_FAMILY_NAME: il nome della famiglia di immagini che vuoi cercare. Per un elenco completo dei nomi delle famiglie di immagini, consulta Dettagli del sistema operativo.
per zona
Per visualizzare l'ultima immagine disponibile in una famiglia di immagini per una zona specifica, utilizza uno dei seguenti metodi:
gcloud
Utilizza il
gcloud compute images describe-from-family comando
con il --zone flag:
gcloud compute images describe-from-family IMAGE_FAMILY_NAME \ --project=IMAGE_PROJECT \ --zone=ZONE
Sostituisci quanto segue:
IMAGE_FAMILY_NAME: il nome della famiglia di immagini che vuoi cercare. Per un elenco completo dei nomi delle famiglie di immagini, consulta Dettagli del sistema operativo.IMAGE_PROJECT: il nome del progetto di immagini. Per un elenco completo dei nomi dei progetti di immagini, consulta Dettagli del sistema operativo.ZONE: la zona per la quale vuoi eseguire la query.
REST
Invia una richiesta GET al metodo
imageFamilyViews:
GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/zones/ZONE/imageFamilyViews/IMAGE_FAMILY_NAME
Sostituisci quanto segue:
IMAGE_PROJECT: il nome del progetto di immagini. Per un elenco completo dei nomi dei progetti di immagini, consulta Dettagli del sistema operativo.ZONE: la zona per la quale vuoi eseguire la query.IMAGE_FAMILY_NAME: il nome della famiglia di immagini che vuoi cercare. Per un elenco completo dei nomi delle famiglie di immagini, consulta Dettagli del sistema operativo.
Famiglie di immagini personalizzate
Puoi creare famiglie di immagini personalizzate per le tue immagini personalizzate. La famiglia di immagini fa riferimento all'immagine più recente che hai utilizzato per creare la famiglia di immagini. Per eseguire il rollback di una famiglia di immagini a una versione immagine precedente, puoi ritirare l'immagine più recente della famiglia, a condizione che l'immagine precedente non sia ritirata. Per saperne di più, consulta Impostare le versioni delle immagini in una famiglia di immagini.
Per creare un'immagine con una famiglia di immagini o per creare una famiglia di immagini se non esiste, devi aggiungere un flag --family aggiuntivo al passaggio di creazione dell'immagine, ad esempio:
gcloud compute images create my-application-v3-20210101 \
--source-disk my-application-disk-1 \
--source-disk-zone us-central1-f \
--family my-application
Dopo aver eseguito questo comando, tutte le chiamate per eseguire un'istanza basata sull'immagine
my-application fanno riferimento all'immagine appena creata, my-application-v3-20210101.
Quando selezioni un nome per la famiglia di immagini, consulta la convenzione di denominazione.
Come utilizzare le famiglie di immagini
Sebbene le famiglie di immagini ti consentano di fare riferimento all'immagine più recente, quest'ultima potrebbe introdurre incompatibilità con la tua applicazione, causando problemi in un ambiente di produzione se non viene convalidata. Se vuoi sfruttare al meglio i vantaggi delle famiglie di immagini riducendo al contempo i rischi, ti consigliamo di testare l'ultima immagine a cui viene fatto riferimento dalla famiglia di immagini prima di utilizzarla nell'ambiente di produzione.
In sintesi, puoi prendere in considerazione il seguente approccio:
- Configura un ambiente di test separato dall'ambiente di produzione.
- Nell'ambiente di test, completa i seguenti passaggi:
- Crea una famiglia di immagini personalizzate dalla famiglia di immagini di origine.
- Verifica la stabilità della nuova immagine nella famiglia di immagini personalizzate rispetto ai tuoi carichi di lavoro.
- Una volta verificata, sposta questa famiglia di immagini personalizzate in un ambiente di produzione.
Ad esempio, la procedura potrebbe essere simile alla seguente.
Nel progetto di test, crea un'immagine dalla famiglia di immagini di origine. Questa nuova famiglia di immagini di origine deve avere anche una propria famiglia di immagini personalizzate a cui fare riferimento nell'ambiente di test. Per creare l'immagine con una famiglia di immagini personalizzate, esegui il comando seguente:
gcloud compute images create test-image-name \ --source-image-project source-project \ --source-image-family source-image-family \ --project test-project \ --family test-image-family
Sostituisci quanto segue:
test-image-name: il nome dell'immagine di test.source-project: il progetto a cui appartiene la famiglia di immagini di origine.source-image-family: il nome della famiglia di immagini di origine.test-project: il nome del progetto di test a cui vuoi aggiungere la famiglia di immagini.test-image-family: il nome della famiglia di immagini di test.
Utilizzando la famiglia di immagini personalizzate
test-image-family, crea una VM per testare il carico di lavoro. Per creare la VM, esegui il comando seguente:gcloud compute instances create test-instance-name \ --image-family your-test-image-family \ --project test-project
Sostituisci quanto segue:
test-instance-name: il nome dell'istanza di test.test-image-family: il nome della famiglia di immagini di test.test-project: il nome del progetto di test.
Dopo aver verificato che questa immagine funziona correttamente per il tuo carico di lavoro, copia l'immagine nell'ambiente di produzione.
gcloud compute images create prod-image-name \ --source-image-family test-image-family \ --source-image-project test-project \ --project prod-project \ --family prod-image-family
Sostituisci quanto segue:
prod-image-name: il nome dell'immagine di produzione.test-image-family: il nome della famiglia di immagini di test.test-project: il progetto a cui appartiene la famiglia di immagini di test.prod-project: il nome del progetto nell'ambiente di produzione.prod-image-family: il nome della famiglia di immagini che vuoi utilizzare nell'ambiente di produzione.