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.

Vorbereitung

Ö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-20161011. 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 Verwendung von Image-Familien sorgen Sie dafür, dass Sie immer das neueste Image in der Familie zurückgeben, z. B. my-application.

Image-Familien

Eine öffentliche Image-Familie verweist immer auf die neueste, nicht verworfene Version eines Images. Öffentliche Images werden zu einer Image-Familie zusammengefasst. Beispielsweise verweist im Projekt debian-cloud die Image-Familie debian-9 immer auf das neueste Debian 9-Image.

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-20161011 \
    --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-20161011.

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.