Best practice per le famiglie di immagini

Questo documento illustra le best practice quando si utilizzano famiglie di immagini su Compute Engine.

Prima di iniziare

Famiglie di immagini pubbliche

Compute Engine fornisce famiglie di immagini per garantire che i vostri sistemi di automazione possano fare riferimento alle immagini più recenti. In qualità di amministratore, puoi raggruppare un insieme di immagini come famiglia di immagini. Gli utenti delle immagini devono solo tenere traccia del nome della famiglia di immagini, invece che del nome esatto dell'immagine. Poiché i nomi delle immagini devono essere univoci, le pipeline di build dell'immagine spesso creano nomi di immagini con informazioni codificate al suo interno, 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 invece di dover aggiornarlo a intervalli. Le famiglie di immagini ti consentono di accedere sempre all'immagine più recente della famiglia, ad esempio my-application.

Famiglie di immagini.

Le immagini pubbliche sono raggruppate in famiglie di immagini. Una famiglia di immagini pubbliche rimanda sempre alla versione più recente di un'immagine disponibile in ciascuna zona. Quando vengono rilasciate nuove immagini in tutto il mondo, la loro disponibilità iniziale nelle famiglie di immagini dipende dalla zona, migliorando la tolleranza di errore a livello di zona per i vostri flussi di lavoro durante gli aggiornamenti delle immagini di Google.

Durante l'implementazione dell'immagine, la versione più recente di un'immagine in una famiglia di immagini potrebbe variare a seconda della zona. Ad esempio, la debian-10 famiglia di immagini nel progettodebian-cloud rimanda sempre all'immagine Debian 10 più recente, ma l'immagine Debian 10 più recente nella zona us-central1-a e southamerica-east1-b

Quando crei VM dalle famiglie di immagini utilizzando l'interfaccia a riga di comando di Google Cloud, Compute Engine utilizza l'ultima immagine disponibile nella zona della VM per la tua richiesta. Quando crei VM utilizzando Google Cloud Console, Compute Engine mostra solo le immagini pubbliche disponibili nella zona selezionata. Se vuoi creare VM utilizzando l'immagine più recente disponibile a livello globale, utilizza il comando instances create dell'interfaccia a riga di comando gcloud e specifica --image-family-scope=global.

Visualizzazione della versione più recente dell'immagine disponibile

Puoi visualizzare l'ultima immagine disponibile a livello globale in una famiglia di immagini oppure l'immagine più recente disponibile in una determinata zona.

Globale

Per visualizzare l'immagine più recente disponibile a livello globale in una famiglia di immagini, utilizza uno dei seguenti metodi:

gcloud

Usa 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 in cui vuoi eseguire la ricerca. Per un elenco completo dei nomi delle famiglie di immagini, consulta Dettagli del sistema operativo.
  • IMAGE_PROJECT: il nome del progetto dell'immagine. Per un elenco completo dei nomi dei progetti di immagini, consulta i dettagli del sistema operativo.

API

Fai una richiesta GET al metodo images.getFromFamily:

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 dell'immagine. Per un elenco completo dei nomi di 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 comando gcloud compute images describe-from-family con il flag --zone:

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 dell'immagine. Per un elenco completo dei nomi di progetti di immagini, consulta Dettagli del sistema operativo.
  • ZONE: la zona in cui vuoi eseguire la query.

API

Fai 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 dell'immagine. Per un elenco completo dei nomi dei progetti di immagini, consulta i dettagli del sistema operativo.
  • ZONE: la zona in cui vuoi eseguire la query.
  • IMAGE_FAMILY_NAME: il nome della famiglia di immagini in cui vuoi eseguire la ricerca. Per un elenco completo dei nomi delle famiglie di immagini, consulta Dettagli del sistema operativo.

Famiglie di immagini personalizzate

Puoi creare immagini personalizzate con una famiglia di immagini personalizzate. La famiglia di immagini rimanda all'immagine più recente che hai utilizzato per crearla. Per eseguire il rollback di una famiglia di immagini a una versione precedente, puoi ritirare l'immagine più recente di quella famiglia (a condizione che l'immagine precedente non sia deprecata). Per ulteriori informazioni, consulta Impostare le versioni delle immagini in una famiglia di immagini.

Per creare un'immagine con una famiglia di immagini o per crearne una se non ne esiste una, devi aggiungere un ulteriore flag --family 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 a un'istanza basata sull'immagine my-application rimandano all'immagine appena creata, my-application-v3-20210101.

Come utilizzare le famiglie di immagini

Le famiglie di immagini ti consentono di fare riferimento all'immagine più recente, ma l'ultima immagine potrebbe introdurre incompatibilità con la tua applicazione, il che può causare problemi in un ambiente di produzione se non viene convalidata. Se vuoi usare i vantaggi delle famiglie di immagini riducendo al contempo i rischi, ti consigliamo di testare l'ultima immagine di riferimento della famiglia di immagini prima di utilizzarla nel tuo ambiente di produzione.

In breve, puoi prendere in considerazione il seguente approccio:

  • Configura un ambiente di test separato dal tuo 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.
  • Dopo aver eseguito la verifica, sposta questa famiglia di immagini personalizzate in un ambiente di produzione.

Ad esempio, il processo potrebbe essere simile alla seguente procedura.

  1. Nel progetto di test, crea un'immagine dalla famiglia di immagini di origine. Questa nuova famiglia di origini immagine deve avere anche la 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: nome dell'immagine di prova.
    • source-project: progetto a cui appartiene la famiglia di immagini di origine.
    • source-image-family: nome della famiglia di immagini di origine.
    • test-project: nome del progetto di test a cui vuoi aggiungere la famiglia di immagini.
    • test-image-family: nome della famiglia di immagini di test.
  2. Con la tua famiglia di immagini personalizzate test-image-family, crea una VM per testare il tuo 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: nome dell'istanza di test.
    • test-image-family: nome della famiglia di immagini di test.
    • test-project: nome del progetto di test.
  3. Dopo aver verificato che questa immagine funziona bene per il tuo carico di lavoro, copiala nel tuo 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: nome dell'immagine di produzione.
    • test-image-family: nome della famiglia di immagini di test.
    • test-project: progetto a cui appartiene la famiglia di immagini di test.
    • prod-project: nome del progetto presente nell'ambiente di produzione.
    • prod-image-family: nome della famiglia di immagini che vuoi utilizzare nell'ambiente di produzione.