Nutzen Sie Image-Familien, um die Versionsverwaltung von Images zu vereinfachen. Wenn Sie ein Image zu einer Image-Familie hinzufügen, wird dieses als neueste Imageversion festgelegt. Wenn Sie feststellen, dass Sie die Image-Familie auf eine frühere Image-Version zurücksetzen müssen, verwerfen Sie das neueste Image in der Familie.
Best Practices für die Arbeit mit Image-Familien finden Sie unter Best Practices für Image-Familien.
Optional können Sie den Image-Speicherort über die Google Cloud Console, den gcloud compute images create
-Befehl mit dem Flag --storage-location
oder die images().insert
-Methode angeben.
Vorbereitung
- Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, gehen Sie so vor:
- Installieren Sie die Google Cloud CLI oder aktualisieren Sie sie auf die neueste Version.
- Legen Sie eine Standardregion und -zone fest.
- Wenn Sie die API-Beispiele dieser Anleitung verwenden möchten, richten Sie den API-Zugang ein.
- Lesen Sie das Dokument zu Images.
Image-Version in einer Image-Familie festlegen
Console
Rufen Sie in der Google Cloud Console die Seite Image erstellen auf.
Geben Sie im Feld Name den Image-Namen an. Beispiel:
image-v1
.Geben Sie die Quelle an, auf deren Grundlage Sie ein Image erstellen möchten. Dies kann ein nichtflüchtiger Speicher, ein Snapshot, ein anderes Image oder eine disk.raw-Datei in Cloud Storage sein.
Wenn Sie ein Image von einem Laufwerk erstellen, das mit einer ausgeführten VM verbunden ist, aktivieren Sie Instanz weiter ausführen, um zu bestätigen, dass Sie das Image erstellen möchten, während die VM ausgeführt wird. Sie können die VM vorbereiten, bevor Sie das Image erstellen.
Geben Sie in der Drop-down-Liste Basierend auf dem Standort des Quelllaufwerks (Standard) den Speicherort für das Image an. Geben Sie beispielsweise
us
an, um das Image in der Multiregionus
zu speichern, oderus-central1
, um es in der Regionus-central1
zu speichern. Wenn Sie keine Auswahl treffen, wird das Image von Compute Engine an dem multiregionalen Standort gespeichert, der dem Quellspeicherort des Images am nächsten liegt.Geben Sie das Image Familie für das neue Image an. Fügen Sie beispielsweise
my-image-family
hinzu, um das Image als Teil einer Image-Familie zu organisieren.Optional: Geben Sie weitere Bildattribute an:
- Beschreibung: Eine Beschreibung für Ihr benutzerdefiniertes Image.
- Label: ein Label, um Ressourcen zu gruppieren.
Geben Sie den Verschlüsselungsschlüssel an. Sie können zwischen einem von Google verwalteten Schlüssel, einem Cloud Key Management Service (Cloud KMS)-Schlüssel oder einem vom Kunden bereitgestellten Verschlüsselungsschlüssel (CSEK) wählen. Wenn kein Verschlüsselungsschlüssel angegeben ist, werden die Images mit einem von Google verwalteten Schlüssel verschlüsselt.
Klicken Sie auf Erstellen, um das Image zu erstellen.
gcloud
gcloud compute images create image-v1 \ --source-disk disk-1 \ --source-disk-zone us-central1-f \ --family my-image-family
Die Image-Familie verweist auf image-v1
. Fügen Sie der Familie ein zweites Image hinzu:
gcloud compute images create image-v2 \ --source-disk disk-2 \ --source-disk-zone us-central1-f \ --family my-image-family
API
Stellen Sie eine POST
-Anfrage an die Methode images().insert
.
Geben Sie im Anfragetext die Image-Familie an.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images { "name": "image-v2", "sourceDisk": "/zones/us-central1-f/disks/disk-2", "family":"my-image-family", }
Die Image-Familie verweist auf image-v2
, weil dies das neueste Image ist, das Sie der Familie hinzugefügt haben.
gcloud
Mit dem Befehl gcloud compute images describe-from-family
können Sie sehen, auf welches Image eine Familie verweist.
Beispiel:
gcloud compute images describe-from-family my-image-family
family: my-image-family
id: '8904691942610171306'
kind: compute#image
name: image-v2
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v2
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v2
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY
API
Stellen Sie eine GET
-Anfrage an die Methode images().getFromFamily
.
Geben Sie im Anfragetext die Image-Familie an.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/family { "resourceId":"my-image-family", }
Wenn Sie feststellen, dass Sie ein Rollback der Image-Familie ausführen müssen, sodass sie nicht mehr auf image-v2
verweist, verwerfen Sie image-v2
und die Familie verweist wieder auf image-v1
.
gcloud compute images deprecate image-v2 \ --state DEPRECATED \ --replacement image-v1
Prüfen Sie, ob die Image-Familie auch wirklich auf image-v1
verweist.
gcloud compute images describe-from-family my-image-family
family: my-image-family
id: '2741732787056801255'
kind: compute#image
name: image-v1
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v1
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v1
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY