Best Practices für Image-Familien

In diesem Dokument werden die Best Practices für die Verwendung von Image-Familien in Compute Engine erläutert.

Hinweis

Öffentliche Image-Familien

Compute Engine stellt Image-Familien bereit, mit denen Sie sicherstellen können, dass Ihre Automatisierungssysteme auf die neuesten Images verweisen. Als Administrator können Sie eine Gruppe von Images als Image-Familie zusammenfassen. So müssen die Nutzer der Images nur auf den Namen der Image-Familie statt auf einen genauen Image-Namen achten. Da Image-Namen eindeutig sein müssen, erstellen Image-Build-Pipelines oft Image-Namen mit darin codierten Informationen. So wird beispielsweise der Anwendungsname, das Datum und die Version angegeben: my-application-v3-20210101. In Automatisierungstools können Sie auf den Namen der Image-Familie verweisen, anstatt den Image-Namen in regelmäßigen Abständen aktualisieren zu müssen. Durch die Nutzung von Image-Familien können Sie immer auf das neueste Image in der Familie zugreifen, z. B. my-application.

Image-Familien

Öffentliche Images werden in Image-Familien gruppiert. Eine öffentliche Image-Familie verweist immer auf die neueste Version eines Images, das in jeder Zone verfügbar ist. Wenn neue Images global veröffentlicht werden, ist deren anfängliche Verfügbarkeit in Image-Familien zonenabhängig. Dies verbessert die zonale Fehlertoleranz für Ihre Workflows bei Google-Image-Updates.

Während des Image-Rollouts kann die neueste Version eines Images in einer Image-Familie in verschiedenen Zonen abweichen. Beispielsweise verweist die Image-Familie debian-10 im Projekt debian-cloud immer auf das neueste Debian 10-Image, aber das neueste Debian 10-Image in Zone us-central1-a und southamerica-east1-b könnte abweichen.

Wenn Sie VMs aus Image-Familien mit dem gcloud-Befehlszeilentool erstellen, verwendet Compute Engine für Ihre Anfrage das neueste Image, das in der Zone Ihrer VM verfügbar ist. Wenn Sie VMs mit der Google Cloud Console erstellen, zeigt Compute Engine nur die in Ihrer ausgewählten Zone verfügbaren öffentlichen Images an. Wenn Sie VMs mit dem neuesten global verfügbaren Image erstellen möchten, verwenden Sie den Befehl instances create des gcloud-Tools und geben Sie --image-family-scope=global an.

Neueste verfügbare Image-Version anzeigen lassen

Sie können das neueste global verfügbare Image in einer Image-Familie oder das neueste Image anzeigen lassen, das in einer bestimmten Zone verfügbar ist.

Global

Mit einer der folgenden Methoden können Sie sich das neueste verfügbare Image in einer Image-Familie anzeigen lassen:

gcloud

Führen Sie den Befehl gcloud compute images describe-from-family aus:

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT

Dabei gilt:

  • IMAGE_FAMILY_NAME ist der Name der Image-Familie, nach der Sie suchen möchten. Eine vollständige Liste der Image-Familiennamen finden Sie unter Details zu Betriebssystemen.
  • IMAGE_PROJECT ist der Name des Image-Projekts. Eine vollständige Liste der Image-Projektnamen finden Sie unter Details zu Betriebssystemen.

API

Stellen Sie eine GET-Anfrage an die Methode images.getFromFamily:

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY_NAME

Dabei gilt:

  • IMAGE_PROJECT ist der Name des Image-Projekts. Eine vollständige Liste der Image-Projektnamen finden Sie unter Details zu Betriebssystemen.
  • IMAGE_FAMILY_NAME ist der Name der Image-Familie, nach der Sie suchen möchten. Eine vollständige Liste der Image-Familiennamen finden Sie unter Details zu Betriebssystemen.

Pro Zone

Mit einer der folgenden Methoden können Sie sich das neueste verfügbare Image in einer Image-Familie für eine bestimmte Zone anzeigen lassen:

gcloud

Führen Sie den Befehl gcloud compute images describe-from-family mit dem Flag --zone aus:

gcloud compute images describe-from-family IMAGE_FAMILY_NAME  \
   --project=IMAGE_PROJECT \
   --zone=ZONE

Dabei gilt:

  • IMAGE_FAMILY_NAME ist der Name der Image-Familie, nach der Sie suchen möchten. Eine vollständige Liste der Image-Familiennamen finden Sie unter Details zu Betriebssystemen.
  • IMAGE_PROJECT ist der Name des Image-Projekts. Eine vollständige Liste der Image-Projektnamen finden Sie unter Details zu Betriebssystemen.
  • ZONE ist die Zone, die Sie abfragen möchten.

API

Stellen Sie eine GET-Anfrage an die Methode imageFamilyViews:

GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/zones/ZONE/imageFamilyViews/IMAGE_FAMILY_NAME

Dabei gilt:

  • IMAGE_PROJECT ist der Name des Image-Projekts. Eine vollständige Liste der Image-Projektnamen finden Sie unter Details zu Betriebssystemen.
  • ZONE ist die Zone, die Sie abfragen möchten.
  • IMAGE_FAMILY_NAME ist der Name der Image-Familie, nach der Sie suchen möchten. Eine vollständige Liste der Image-Familiennamen finden Sie unter Details zu Betriebssystemen.

Familien von benutzerdefinierten Images

Sie können eigene Images mit einer benutzerdefinierten Image-Familie erstellen. Die Image-Familie verweist auf das neueste Image, mit dem Sie die Image-Familie erstellt haben. Wenn Sie eine Image-Familie auf eine frühere Image-Version zurücksetzen möchten, können Sie das neueste Image in dieser Familie verwerfen (solange das vorherige Image nicht verworfen wurde). Weitere Informationen finden Sie unter Image-Versionen in einer Image-Familie festlegen.

Wenn Sie ein Image mit einer Image-Familie oder (wenn keine vorhanden ist) die eigentliche Image-Familie erstellen möchten, müssen Sie dem Image-Erstellungsschritt ein zusätzliches Flag --family hinzufügen. Beispiel:

gcloud compute images create my-application-v3-20210101 \
    --source-disk my-application-disk-1 \
    --source-disk-zone us-central1-f \
    --family my-application

Nachdem Sie diesen Befehl ausgeführt haben, verweisen alle Aufrufe zum Ausführen einer auf dem Image my-application beruhenden Instanz auf das neu erstellte Image my-application-v3-20210101.

Image-Familien verwenden

Sie können mit Image-Familien zwar auf das neueste Image verweisen, das neueste Image kann aber eine Inkompatibilität mit Ihrer Anwendung verursachen. Das wiederum führt zu Problemen in der Produktionsumgebung, wenn das Image nicht geprüft wird. Wenn Sie die Vorteile von Image-Familien nutzen und gleichzeitig die Risiken reduzieren möchten, sollten Sie das letzte referenzierte Image aus der Image-Familie testen, bevor Sie es in Ihrer Produktionsumgebung verwenden.

Gehen Sie dazu so vor:

  • Richten Sie eine von Ihrer Produktionsumgebung getrennte Testumgebung ein.
  • Führen Sie in der Testumgebung die folgenden Schritte aus:
    • Erstellen Sie eine benutzerdefinierte Image-Familie aus der Quell-Image-Familie.
    • Prüfen Sie die Stabilität des neuen Images in der benutzerdefinierten Image-Familie auf Basis Ihrer Arbeitslasten.
  • Nach der Prüfung verschieben Sie diese benutzerdefinierte Image-Familie in eine Produktionsumgebung.

Der Prozess könnte beispielsweise so aussehen:

  1. Erstellen Sie in Ihrem Testprojekt ein Image aus der Quell-Image-Familie. Diese neue Quell-Image-Familie muss auch eine eigene benutzerdefinierte Image-Familie haben, auf die in der Testumgebung verwiesen werden kann. Führen Sie den folgenden Befehl aus, um das Image mit einer benutzerdefinierten Image-Familie zu erstellen:

    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
    

    Dabei gilt:

    • test-image-name ist der Name des Test-Images.
    • source-project ist das Projekt, zu dem die Quell-Image-Familie gehört.
    • source-image-family ist der Name der Quell-Image-Familie.
    • test-project ist der Name des Testprojekts, dem Sie die Image-Familie hinzufügen möchten.
    • test-image-family ist der Name der Test-Image-Familie.
  2. Erstellen Sie mit der benutzerdefinierten Image-Familie test-image-family eine VM, um Ihre Arbeitslast zu testen. Führen Sie den folgenden Befehl aus, um die VM zu erstellen:

    gcloud compute instances create test-instance-name \
    --image-family your-test-image-family \
    --project test-project
    

    Dabei gilt:

    • test-instance-name ist der Name der Testinstanz.
    • test-image-family ist der Name der Test-Image-Familie.
    • test-project ist der Name des Testprojekts.
  3. Sobald Sie geprüft haben, ob dieses Image für Ihre Arbeitslast geeignet ist, kopieren Sie das Image in Ihre Produktionsumgebung.

    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
    

    Dabei gilt:

    • prod-image-name ist der Name Ihres Produktions-Images.
    • test-image-family ist der Name der Test-Image-Familie.
    • test-project ist das Projekt, zu dem die Test-Image-Familie gehört.
    • prod-project ist der Name Ihres Projekts in der Produktionsumgebung.
    • prod-image-family ist der Name der Image-Familie, die Sie in Ihrer Produktionsumgebung verwenden möchten.