Diese Lösung bietet einen ausführlichen Leitfaden zur Verwaltung von Compute Engine-Images. Images stellen die grundlegende Betriebsumgebung für Anwendungen bereit, die in Compute Engine ausgeführt werden. Sie sind von entscheidender Bedeutung für eine schnelle und zuverlässige Bereitstellung und Skalierung Ihrer Anwendung. Sie können Images auch zum Archivieren von Anwendungsversionen für Notfallwiederherstellungs- oder Rollback-Szenarien verwenden.
Images verstehen
Ein Image in Compute Engine ist eine Cloudressource, die einen Verweis auf ein unveränderliches Laufwerk bietet. Diese Laufwerkdarstellung wird dann mit verschiedenen Datenformaten gekapselt.
Ein Image besteht aus einer Gruppe von RAW-Byte, die zum Erzeugen eines vorbespielten Laufwerks dient. Auf ein beliebiges formatiertes Laufwerk wird eine partitionierte Tabelle geschrieben, die auf mindestens eine Daten enthaltende Partition verweist. Ein Image ist nur dann bootfähig, wenn es Folgendes enthält:
- Eine Partitionstabelle: entweder Master Boot Record oder eine GUID-Partitionstabelle
- Eine bootfähige Partition
Damit eine Festplatte als Compute Engine-Image importiert werden kann, müssen die darauf enthaltenen Bytes in eine Datei mit dem Namen disk.raw
geschrieben werden.
Nachdem die vollständige Byte-Sequenz von der Festplatte in die Datei geschrieben wurde, wird die Datei im tar-Format archiviert und dann im GZIP-Format komprimiert. Anschließend können Sie die resultierende *.tar.gz
-Datei in Cloud Storage hochladen und als Image in Compute Engine registrieren, wie im vorherigen Diagramm dargestellt. Ein registriertes Image kann dazu verwendet werden, genaue Replikate der Originalfestplatte in einer beliebigen Region von Google Cloud zu erstellen. Neu registrierte Images werden häufig als Start-Volumes für Compute Engine-Instanzen eingesetzt.
Eine grundlegende Einführung in diese Compute Engine-Begriffe finden Sie unter VM-Instanzen und Images.
Boot-Image auswählen
Der erste Schritt bei der Verwendung von Compute Engine besteht darin, ein Image auszuwählen, das Sie als Betriebssystem für Ihre VM-Instanzen verwenden möchten. Sie können öffentliche, von Google Cloud bereitgestellte Images verwenden, die regelmäßig aktualisiert werden. Google Cloud bietet eine Vielzahl von Betriebssystemen einschließlich Debian, Ubuntu und CentOS, die Sie ohne zusätzliche Gebühr verwenden können. Einige Betriebssysteme, wie etwa Red Hat Enterprise Linux und Microsoft Windows, sind Premium-Images, für die pro Betriebsstunde der Instanzen zusätzliche Gebühren anfallen.
Weitere Informationen zu einem bestimmten Image, zum Beispiel in Bezug auf Richtlinien für automatische Aktualisierungen, Sicherheits-Patching sowie Support-Kanäle, finden Sie im Abschnitt Details zu Betriebssystemen der Produktdokumentation.
Sie können die öffentlichen Images von Google Cloud zum Starten einer Compute Engine-Instanz verwenden. Anschließend können Sie die Instanz für die Ausführung Ihrer Anwendung anpassen.
Ein Ansatz für die Konfiguration einer Instanz besteht darin, mithilfe eines Startskripts die Befehle auszuführen, die Ihre Anwendung beim Starten bereitstellen. Denken Sie daran, dass dieses Skript bei jedem Starten der Instanz ausgeführt wird. Deshalb müssen Sie das Skript idempotent gestalten, um einen inkonsistenten oder nur teilweise konfigurierten Zustand zu vermeiden. Wenn Ihre Instanzen zu einer Gruppe von verwalteten Instanzen gehören, können Sie Instance Group Updater verwenden, um die Instanzen neu zu starten oder neu zu erstellen, wodurch das Startskript noch einmal ausgeführt wird. Ein übliches Vorgehen ist es, das Startskript zu verwenden, um ein Konfigurationsmanagement-Tool wie etwa Chef oder Ansible auszuführen.
Benutzerdefinierte Images erstellen
Die Konfiguration eines Instanz-Startskripts ist zwar eine durchaus akzeptable Methode zur Bereitstellung Ihrer Infrastruktur, wenn Sie aber eine effizientere Vorgehensweise wünschen, dann erstellen Sie ein neues benutzerdefiniertes Image, bei dem Ihre Konfiguration im öffentlichen Image integriert ist. Sie können Images auf verschiedene Weise anpassen:
- Manuell
- Automatisiert
- Import
Das Erstellen eines benutzerdefinierten Images wird als Verankern bezeichnet.
Das Verankern Ihrer Images bietet die folgenden Vorteile:
- Kürzere Anlaufzeit vom Booten bis zur Bereitschaft der Anwendung.
- Verbesserte Zuverlässigkeit für Anwendungsbereitstellungen.
- Einfacheres Rollback zu vorherigen Versionen.
- Weniger Abhängigkeiten von externen Diensten beim Anwendungs-Bootstrap.
- Beim Hochskalieren werden Instanzen erzeugt, die identische Softwareversionen enthalten.
Manuelles Verankern
Sie können ein einfaches benutzerdefiniertes Image erstellen, indem Sie aus einem öffentlichen Image eine neue VM-Instanz erzeugen, die gewünschten Anwendungen und Einstellungen auf der Instanz konfigurieren und dann ein benutzerdefiniertes Image aus dieser Instanz erstellen. Verwenden Sie diese Methode und nicht die automatisierte Verankerung oder den Import vorhandener Images, wenn Sie Ihre Images vollständig neu manuell konfigurieren können.
Mit den folgenden Schritten können Sie ein einfaches benutzerdefiniertes Image erstellen:
- Erstellen Sie eine Instanz aus einem öffentlichen Image.
- Stellen Sie eine Verbindung zur Instanz her.
- Passen Sie die Instanz an Ihre Bedürfnisse an.
- Beenden Sie die Instanz.
- Erstellen Sie ein benutzerdefiniertes Image aus dem Bootlaufwerk dieser Instanz. Dazu müssen Sie die Instanz löschen, aber das Bootlaufwerk beibehalten.
Automatisiertes Verankern
Das manuelle Verankern erleichtert den Einstieg, wenn Sie es mit wenigen Images zu tun haben. Bei einer größeren Anzahl von Images gestalten sich die Prüfung und Verwaltung aber schwieriger. Packer ist ein Open-Source-Tool, das die Imageerstellung zu einem leichter reproduzierbaren, prüfbaren, konfigurierbaren und zuverlässigeren Vorgang macht. Weitere Informationen zum Erzeugen einer Pipeline für die automatisierte Imageerstellung finden Sie unter Automatisierte Image-Builds mit Jenkins, Packer und Kubernetes. Außerdem können Sie Packer als Teil einer Spinnaker-Pipeline einsetzen, um Images zu erzeugen, die in Instanz-Clustern bereitgestellt werden.
Vorhandene Images importieren
Sie können Bootlaufwerk-Images aus ihrer vorhandenen Infrastruktur nach Compute Engine importieren, indem Sie das Tool zum Importieren virtueller Laufwerke verwenden, das den Image-Importprozess automatisiert. Für Linux-Rechner finden Sie hier einen ausführlichen Leitfaden zur manuellen Migration von RAW-Laufwerk-Images, Amazon Machine Images (AMI) und VirtualBox-Images.
Eine weitere Möglichkeit zum Importieren vorhandener Images ist die Verwendung von Google Cloud Migrate for Compute Engine.
Migrate for Compute Engine ist eine Toolkette und ein Dienst, der die Migration von Maschinen von einer Plattform zu einer anderen mit minimalen Ausfallzeiten durch kontinuierliche Replikation auf Blockebene erleichtert. Sie können Ihre Maschinen zu Compute Engine migrieren und dann Images manuell erstellen.
Images verschlüsseln
Alle Laufwerke in Compute Engine werden standardmäßig mit den Verschlüsselungsschlüsseln von Google verschlüsselt. Auch aus Festplatten erstellte Images werden verschlüsselt. Alternativ können Sie bei der Erstellung Ihrer Laufwerke eigene Verschlüsselungsschlüssel bereitstellen. Nachdem Sie das Laufwerk erstellt haben, können Sie ein verschlüsseltes Image erstellen, indem Sie dem Befehl zur Imageerstellung Ihre Verschlüsselungsschlüssel bereitstellen. Weitere Informationen zur Verschlüsselung inaktiver Daten und zu vom Kunden bereitgestellten Verschlüsselungsschlüsseln finden Sie in der Google Cloud-Dokumentation unter Verschlüsselung inaktiver Daten.
Image-Lebenszyklus
Wenn Sie eine Image-Build-Pipeline eingerichtet haben, können Sie Images verwenden, um Instanzen einer Anwendung zuverlässig zu starten. Während die Pipeline die Erstellung von Images erledigen kann, müssen Sie außerdem dafür sorgen, dass Ihre Bereitstellungsmechanismen die neuesten Versionen der Images verwenden. Außerdem benötigen Sie einen Prozess, der Images auswählt, sodass nicht versehentlich alte und veraltete Images verwendet werden.
Imagefamilien
Mithilfe von Image-Familien können Sie Images in Ihrem Projekt so verwalten, dass ähnliche Images zusammengefasst werden und Rollforwards und Rollbacks zwischen bestimmten Image-Versionen möglich sind. Weitere Informationen finden Sie unter Best Practices für Image-Familien.
Image verwerfen
Als Administrator können Sie auch ein Rollback des Images durchführen, auf das die Image-Familie verweist. Dazu verwerfen Sie das Image mit folgendem Befehl:
gcloud compute images deprecate my-application-v3-20161011 --state DEPRECATED
Beim Verwerfen von Versionen können Sie aus verschiedenen Status wählen:
Status | Beschreibung |
---|---|
VERWORFEN | Images, die zwar nicht mehr aktuell sind, aber noch von Nutzern gestartet werden können. Nutzer sehen beim Start eine Warnung, die besagt, dass sie nicht mehr das neueste Image verwenden. |
VERALTET | Images, die von Nutzern oder Automatisierungstools nicht mehr gestartet werden sollten. Ein Versuch, eine Instanz aus diesen Images zu erstellen, schlägt fehl. Sie können diesen Image-Status verwenden, um Images zu archivieren, damit ihre Daten beim Bereitstellen als Nicht-Boot-Festplatte weiterhin verfügbar sind. |
GELÖSCHT | Images, die bereits gelöscht wurden oder zum baldigen Löschen markiert sind. Diese können nicht gestartet werden und Sie sollten sie so schnell wie möglich löschen. |
Lebenszyklusrichtlinien durchsetzen
Mit dem Befehl gcloud compute images deprecate
können Sie Images zum Löschen oder zur Veralterung markieren. Sie können Metadaten an Images anhängen, um sie zum späteren Löschen zu markieren, indem Sie eines der Flags --delete-in
oder --delete-on
angeben. Geben Sie das Flag --obsolete-in
oder --obsolete-on
an, um Metadaten anzuhängen und Images zur künftigen Veralterung vorzumerken. Sie können diesen Befehl in einen Image-Build-Prozess einbinden, um eine Image-Lebenszyklusrichtlinie durchzusetzen, die eine Verbreitung von älteren und abgelaufenen Images in Ihrem Projekt beschränkt. Beispielsweise können Sie am Ende Ihrer Image-Build-Pipeline eine zusätzliche Prüfung von Images durchführen, die verworfen oder gelöscht werden müssen, und diese Aktionen dann explizit ausführen.
Veraltete und gelöschte Images werden zwar nicht mehr standardmäßig über die API und die Benutzeroberfläche angezeigt, Sie können sie jedoch weiterhin sehen, indem Sie das Flag --show-deprecated
angeben.
Wenn Sie das Image und seine Daten vollständig löschen möchten, müssen Sie einen ausdrücklichen Löschbefehl für dieses Image senden.
Images projektübergreifend freigeben
Organisationen erstellen häufig mehrere Google Cloud-Projekte, um ihre Ressourcen, Umgebungen und den Nutzerzugriff zu partitionieren. Durch die Isolierung von Ressourcen in Projekte werden eine detaillierte Abrechnung, Sicherheitsdurchsetzung und eine Unterteilung der Netzwerke möglich. Die meisten Cloudressourcen müssen zwar nicht für mehrere Projekte bereitstehen, doch sind Images gute Kandidaten für eine projektübergreifende Freigabe. Durch die Verwendung eines freigegebenen Satzes von Images können Sie einen gemeinsamen Prozess einsetzen, mit dem Sie vorkonfigurierte Images mit Best Practices für Sicherheit, Autorisierung, Paketverwaltung und operativen Vorgängen für den Rest der Organisation bereitstellen.
Sie geben Images frei, indem Sie den Projekten der Organisation IAM-Rollen zuweisen. Auf das Projekt, das die an andere Projekte freizugebenden Images enthält (im obigen Schaubild als "Image Creation Project" bezeichnet), müssen die folgenden IAM-Rollen und Richtlinien angewendet werden:
- Erlauben Sie Nutzern aus "Image User Group", Instanzen aus diesen Images zu erstellen, indem Sie ihnen die Rolle
compute.imageUser
zuweisen. - Erlauben Sie Nutzern aus "Image Creation User", Instanzen in diesem Projekt zu erzeugen, indem Sie ihnen die Rolle
compute.instanceAdmin
zuweisen. - Erlauben Sie Nutzern aus "Image Creation User", in diesem Projekt Images und Laufwerke zu erstellen, indem Sie ihnen die Rolle
compute.storageAdmin
zuweisen.
Projekte, die die freigegebenen Images verwenden sollen, müssen Nutzern mit der Rolle compute.imageUser
erlauben, Instanzen zu erstellen, indem ihnen die Rolle compute.instanceAdmin
zugewiesen wird.
Ausführliche Anweisungen zur projektübergreifenden Freigabe von Images finden Sie in der Compute Engine-Dokumentation unter "Images projektübergreifend freigeben".
Nächste Schritte
- Root-Festplatten und -Images personalisieren
- Virtuelle Laufwerke automatisch importieren
- Bootlaufwerke manuell importieren
- Images erstellen, löschen und verwerfen
- Image projektübergreifend teilen
- Mehr über Referenzarchitekturen, Diagramme, Anleitungen und Best Practices zu Google Cloud und Weitere Informationen zu Cloud Architecture Center