Best practice per le famiglie di immagini


Questo documento illustra le best practice per l'utilizzo delle famiglie di immagini su Compute Engine.

Prima di iniziare

  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

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. In qualità 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é del nome esatto dell'immagine. Poiché i nomi delle immagini devono essere univoci, le pipeline di compilazione delle immagini spesso creano nomi di immagini con informazioni codificate, ad esempio il nome, la data e la versione dell'applicazione, 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 ti consente di accedere sempre all'immagine più recente della famiglia, ad esempio my-application.

Famiglie di immagini.

Le immagini pubbliche sono agrupate in famiglie di immagini. Una famiglia di immagini pubbliche rimanda sempre 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 ai guasti zonale per i tuoi flussi di lavoro durante gli aggiornamenti delle immagini di Google.

Durante l'implementazione delle immagini, la versione più recente di un'immagine in una famiglia di immagini potrebbe essere diversa in zone diverse. Ad esempio, la famiglia di immagini debian-10 nel progetto debian-cloud fa sempre riferimento all'immagine Debian 10 più recente, ma l'immagine Debian 10 più recente nelle zone 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'immagine più recente disponibile nella zona della VM per la tua richiesta. Quando crei VM utilizzando la console Google Cloud, 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 gcloud CLI e specifica --image-family-scope=global.

Visualizzazione dell'ultima versione dell'immagine disponibile

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

A livello globale

Per visualizzare l'immagine più recente 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 per la quale 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 di immagini. Per un elenco completo dei nomi dei progetti di immagini, consulta Dettagli del sistema operativo.

REST

Invia 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 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 per cui vuoi eseguire la ricerca. Per un elenco completo dei nomi delle famiglie di immagini, consulta Dettagli del sistema operativo.

Per zone

Per visualizzare l'immagine più recente 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 per 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 di immagini. Per un elenco completo dei nomi dei progetti di immagini, consulta Dettagli del sistema operativo.
  • ZONE: la zona per cui vuoi eseguire una 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 cui vuoi eseguire una query.
  • IMAGE_FAMILY_NAME: il nome della famiglia di immagini per la quale 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 famiglie di immagini personalizzate per le tue immagini personalizzate. La famiglia di immagini punta all'immagine più recente utilizzata per creare la famiglia di immagini. Per eseguire il rollback di una famiglia di immagini a una versione precedente, puoi ritirare l'immagine più recente della famiglia (a condizione che l'immagine precedente non sia ritirata). 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 creare una famiglia di immagini se non esiste, devi aggiungere un altro 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 per eseguire un'istanza basata sull'immagine my-application rimandano 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, il che può causare problemi in un ambiente di produzione se non è convalidata. Se vuoi sfruttare i vantaggi delle famiglie di immagini riducendo al contempo i rischi, ti consigliamo di testare l'immagine di riferimento più recente della 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 personalizzata 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.

  1. Nel progetto di test, crea un'immagine dalla famiglia di immagini di origine. Questa nuova famiglia di origini immagine 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 personalizzata, esegui il seguente comando:

    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 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: 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.
  2. Utilizzando la 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: 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.
  3. Dopo aver verificato che questa immagine funziona bene per il tuo carico di lavoro, copiala 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: 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 nel tuo ambiente di produzione.