1. Einführung
Hallo zusammen, vielen Dank, dass ihr heute hier seid. Sie möchten mehr über Google Compute Engine erfahren?
In diesem Codelab sehen wir uns Compute Engine anhand einer Beispielanwendung für ein Gästebuch an.
Sie erstellen Compute Engine-Instanzen, stellen nginx bereit und platzieren schließlich einen Network Load Balancer im Frontend. Sie können eine Compute Engine-Instanz entweder über die grafische Konsole oder über die Befehlszeile erstellen. In diesem Lab wird die Verwendung der Befehlszeile beschrieben.

Google Compute Engine bietet virtuelle Maschinen, die in den Rechenzentren von Google ausgeführt werden, die mit dem globalen Glasfasernetzwerk von Google verbunden sind. Die angebotenen Tools und Workflows ermöglichen die Skalierung von einzelnen Instanzen bis hin zu globalem Cloud-Computing mit Load-Balancing.
Diese VMs starten schnell und bieten nichtflüchtigen Speicher sowie konsistente Leistung. Die Maschinen sind in vielen Konfigurationen verfügbar, etwa in vordefinierten Größen oder mit der Option zur Erstellung benutzerdefinierter Maschinentypen, die für Ihre spezifischen Anforderungen optimiert sind.
Schließlich sind Compute Engine-VMs auch die Technologie, die von mehreren anderen Google Cloud-Produkten verwendet wird (Kubernetes Engine, Cloud Dataproc, Cloud Dataflow usw.).
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird und den Sie jederzeit aktualisieren können.
- Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich (kann nach der Festlegung nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (die in der Regel als
PROJECT_IDangegeben wird). Wenn Ihnen die ID nicht gefällt, können Sie eine andere zufällige ID generieren oder eine eigene ID ausprobieren und sehen, ob sie verfügbar ist. Nachdem das Projekt erstellt wurde, wird es „eingefroren“. - Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit nach Abschluss dieses Codelabs keine Gebühren anfallen, folgen Sie den Bereinigungsanweisungen am Ende des Codelabs. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.
Google Cloud Shell
Während Sie Google Cloud und Compute Engine von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Diese Debian-basierte virtuelle Maschine verfügt über alle Entwicklungstools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Für dieses Codelab benötigen Sie also nur einen Browser (es funktioniert auch auf einem Chromebook).
- Klicken Sie zum Aktivieren von Cloud Shell in der Cloud Console einfach auf Cloud Shell aktivieren
. Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern.


Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie bereits authentifiziert sind und für das Projekt schon Ihre PROJECT_ID eingestellt ist.
gcloud auth list
Befehlsausgabe
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Befehlsausgabe
[core] project = <PROJECT_ID>
Wenn das Projekt aus irgendeinem Grund nicht festgelegt ist, führen Sie einfach den folgenden Befehl aus:
gcloud config set project <PROJECT_ID>
Suchst du nach deinem PROJECT_ID? Sehen Sie nach, welche ID Sie in den Einrichtungsschritten verwendet haben, oder suchen Sie sie im Cloud Console-Dashboard:

In Cloud Shell werden auch einige Umgebungsvariablen standardmäßig festgelegt, die für zukünftige Befehle nützlich sein können.
echo $GOOGLE_CLOUD_PROJECT
Befehlsausgabe
<PROJECT_ID>
- Legen Sie zum Schluss die Standardzone und die Projektkonfiguration fest.
gcloud config set compute/zone us-central1-f
Sie können verschiedene Zonen auswählen. Weitere Informationen finden Sie unter Regionen und Zonen.
3. Compute Engine-Instanz erstellen
Wie bereits besprochen, verwenden wir in diesem Codelab die gcloud-Befehlszeile. Alles, was hier beschrieben wird, kann auch über die Console (verfügbar unter console.cloud.google.com) erledigt werden.
Erstellen wir zuerst eine Instanz mit Standardeinstellungen :
$ gcloud compute instances create myinstance Created [...]. NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
Notieren Sie sich die EXTERNAL_IP. Das ist später wichtig.
Die Instanz wird mit einer Reihe von Standardeinstellungen erstellt :
- Die von Ihnen ausgewählte Zone. Alle Instanzen befinden sich in einer Zone. Sie können beim Erstellen der Instanz eine Zone mit dem Flag
--zoneauswählen oder eine Standardzone festlegen (wie bei der Ersteinrichtung) und das Flag--zoneweglassen. - Das aktuelle Debian GNU/Linux 9 (Stretch)-Image. Wenn Sie ein eigenes benutzerdefiniertes Image verwenden, geben Sie stattdessen den Namen des Images an. Beispiel:
--image my-own-image - Der Maschinentyp
n1-standard-1. Sie können einen anderen Maschinentyp wien1-highmem-4odern1-highcpu-6auswählen. Wenn keiner der vordefinierten Maschinentypen Ihren Anforderungen entspricht, verwenden Sie einen benutzerdefinierten Maschinentyp. - Einen nichtflüchtigen Root-Speicher mit dem gleichen Namen wie die Instanz. Der Speicher wird automatisch an die Instanz angehängt.
Führen Sie gcloud compute instances create --help aus, um alle verfügbaren Optionen zu sehen.
4. Firewall für Port 80 aktivieren
Standardmäßig sind in der Google Cloud Platform nur wenige Portzugriffe zulässig. Da wir Nginx bald installieren, aktivieren wir zuerst Port 80 in der Firewallkonfiguration.
$ gcloud compute firewall-rules create allow-80 --allow tcp:80 Created [...]. NAME: allow-80 NETWORK: default DIRECTION: INGRESS PRIORITY: 1000 ALLOW: tcp:80 DENY: DISABLED: False
Dadurch wird eine Firewallregel mit dem Namen allow-80 erstellt, für die eine Standardliste von IP-Adressblöcken festgelegt ist, die eingehende Verbindungen herstellen dürfen (--source-ranges). Diese Liste ist auf 0.0.0.0/0 (Überall) festgelegt.
Führen Sie gcloud compute firewall-rules create --help aus, um alle Standardwerte und alle verfügbaren Optionen zu sehen, einschließlich der Möglichkeit, Firewallregeln basierend auf Tags anzuwenden.
5. SSH-Verbindung zur Instanz herstellen
So stellen Sie über die Befehlszeile (weiterhin über Cloud Shell) eine SSH-Verbindung zur Instanz her:
$ gcloud compute ssh myinstance Waiting for SSH key to propagate. Warning: Permanently added 'compute.12345' (ECDSA) to the list of known hosts. ... yourusername@myinstance:~#
Das war's schon. Ganz einfach. (In der Produktion sollten Sie eine Passphrase eingeben.)
Alternativ können Sie auch direkt über die Console ( console.cloud.google.com) eine SSH-Verbindung zur Instanz herstellen. Rufen Sie dazu Compute Engine > VM-Instanzen auf und klicken Sie auf SSH.

6. Nginx installieren
Melden Sie sich bei myinstance, der neu erstellten Instanz, an und installieren Sie nginx:
$ sudo su - # apt update # apt install -y nginx # service nginx start # exit
Prüfen Sie, ob der Server mit curl von myinstance aus ausgeführt wird:
$ curl -s localhost | grep nginx <title>Welcome to nginx!</title> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and <a href="http://nginx.org/">nginx.org</a>.<br/> <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p>
So finden Sie die externe IP-Adresse Ihrer Instanz:

Beenden Sie die SSH-Verbindung und führen Sie diesen Befehl in Cloud Shell aus:
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
Rufen Sie dann http://EXTERNAL_IP/ auf. Dabei ist EXTERNAL_IP die öffentliche IP-Adresse von myinstance. Sie sollten die Nginx-Seite sehen:

7. Startskript
Anstatt die Instanz jedes Mal einzurichten, können Sie ein Startskript verwenden, um die Instanz beim Start zu initialisieren.
Erstellen Sie eine Datei mit dem Namen startup.sh mit dem folgenden Inhalt. Sie können dazu einen beliebigen Texteditor verwenden, z. B. vim, nano oder emacs:
#! /bin/bash apt-get update apt-get install -y nginx service nginx start sed -i -- 's/nginx/Google Cloud Platform - '"$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
Geben Sie Folgendes ein, um eine neue VM-Instanz mit diesem Startskript zu erstellen :
$ gcloud compute instances create nginx \
--metadata-from-file startup-script=startup.sh
Created [...].
NAME: nginx
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING
Rufen Sie http://EXTERNAL_IP/ auf. Dort sollte die aktualisierte Startseite angezeigt werden. Wenn die Seite nicht sofort angezeigt wird, versuchen Sie es nach einigen Sekunden noch einmal. Möglicherweise wird nginx noch gestartet.
8. Servercluster erstellen
Wenn Sie einen Servercluster erstellen möchten, müssen Sie zuerst eine Instanzvorlage erstellen. Nachdem Sie eine Instanzvorlage erstellt haben, können Sie eine Instanzgruppe erstellen, um die Anzahl der zu erstellenden Instanzen zu verwalten.
Erstellen Sie zuerst eine Instanzvorlage mit dem Startskript :
$ gcloud compute instance-templates create nginx-template \
--metadata-from-file startup-script=startup.sh
Created [...].
NAME: nginx-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2022-03-18T15:10:37.621-07:00
Als Nächstes erstellen wir einen Zielpool. Ein Zielpool ermöglicht es, einen einzigen Zugriffspunkt für alle Instanzen einer Gruppe zu verwenden. Außerdem ist dieser für den Lastenausgleich an späterer Stelle in diesem Lab erforderlich.
$ gcloud compute target-pools create nginx-pool Created [...]. NAME: nginx-pool REGION: us-central1 SESSION_AFFINITY: NONE BACKUP: HEALTH_CHECKS:
Erstellen Sie schließlich eine Instanzgruppe mit der Vorlage:
$ gcloud compute instance-groups managed create nginx-group \
--base-instance-name nginx \
--size 2 \
--template nginx-template \
--target-pool nginx-pool
Created [...].
NAME: nginx-group
LOCATION: us-central1-f
SCOPE: zone
BASE_INSTANCE_NAME: nginx
SIZE: 0
TARGET_SIZE: 2
INSTANCE_TEMPLATE: nginx-template
AUTOSCALED: no
Dadurch werden zwei zusätzliche VM-Instanzen erstellt, deren Namen das Präfix nginx- vorangestellt ist.
Sie sollten jetzt alle erstellten Instanzen sehen können.
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-frpl ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-ztg4 ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
9. Netzwerk-Load-Balancer erstellen
Es gibt verschiedene Load-Balancer-Typen in der Google Cloud Platform, darunter :
- a L3 Network Load Balancer
- ein L7-HTTP(S)-Load-Balancer
Als Nächstes erstellen wir einen regionalen Netzwerk-Load-Balancer, der auf die Instanzgruppe ausgerichtet ist:
$ gcloud compute forwarding-rules create nginx-lb \
--ports 80 \
--target-pool nginx-pool
Created [...].
$ gcloud compute forwarding-rules list
NAME: nginx-lb
REGION: us-central1
IP_ADDRESS: X.X.X.X
IP_PROTOCOL: TCP
TARGET: us-central1/targetPools/nginx-pool
Sie können den Load Balancer dann im Browser unter http://IP_ADDRESS/ aufrufen. IP_ADDRESS steht dabei für die IP-Adresse, die der vorherige Befehl ausgegeben hat.
Aus Zeitgründen erstellen wir heute keinen HTTP-Load-Balancer.
10. Cluster bereinigen
Vergessen Sie nicht, Ihren Cluster herunterzufahren, da er sonst weiter ausgeführt wird und Kosten verursacht. Mit den folgenden Befehlen werden die Google Compute Engine-Instanzen, die Instanzgruppe, die Targeting-Gruppe und der Load Balancer gelöscht.
$ gcloud compute forwarding-rules delete nginx-lb $ gcloud compute instance-groups managed delete nginx-group $ gcloud compute target-pools delete nginx-pool $ gcloud compute instance-templates delete nginx-template $ gcloud compute instances delete nginx $ gcloud compute instances delete myinstance $ gcloud compute firewall-rules delete allow-80
Bei jedem der oben genannten Befehle sollten Sie aufgefordert werden, das Löschen der Ressource zu bestätigen.
11. Nächste Schritte
Herzlichen Glückwunsch! Sie haben dieses Compute Engine-Codelab abgeschlossen.
Weitere Compute Engine-Funktionen
Google Compute Engine bietet eine Vielzahl von Funktionen. Hier einige Beispiele :
- VMs auf Abruf – https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- Knoten für einzelne Mandanten – https://cloud.google.com/compute/docs/nodes/create-nodes
- GPUs und TPUs – https://cloud.google.com/compute/docs/gpus/add-gpus
- Windows-Instanzen: https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- Ressourcen mit Labels versehen – https://cloud.google.com/compute/docs/labeling-resources
- VMs zu Compute Engine migrieren – https://cloud.google.com/compute/docs/vm-migration/
Google Kubernetes Engine
Google Kubernetes Engine (GKE) ist das gehostete und vollständig verwaltete Kubernetes-Angebot von Google Cloud. Es gibt mehrere Codelabs, die Ihnen den Einstieg in GKE erleichtern. Hier ist ein guter Ausgangspunkt :
- Google Kubernetes Engine-Codelab: https://codelabs.developers.google.com/codelabs/cloud-gke-workshop-v2
Feedback geben
- Bitte nehmen Sie sich einen Moment Zeit, um an unserer kurzen Umfrage teilzunehmen.