GSP053

Übersicht
Im Zuge der Best Practices für DevOps werden häufig mehrere Deployments genutzt, um verschiedene Szenarien des Anwendungs-Deployments zu verwalten, z. B. kontinuierliche Deployments, Blau/Grün-Deployments und Canary-Deployments. In diesem Lab wird gezeigt, wie Sie Container für diese gängigen Szenarien skalieren und verwalten, bei denen mehrere heterogene Deployments verwendet werden.
Lernziele
Aufgaben in diesem Lab:
-
kubectl
-Tool verwenden
-
yaml
-Dateien für das Deployment erstellen
- Deployments bereitstellen, aktualisieren und skalieren
- Deployments aktualisieren und mehr über Deployment-Stile erfahren
Vorbereitung
Für einen maximalen Lernerfolg empfehlen wir bei diesem Lab Folgendes:
- Sie haben folgende Google Cloud Skills Boost-Labs absolviert:
- Sie haben Kenntnisse der Linux-Systemverwaltung.
- Sie wissen über die DevOps-Theorie sowie über die Konzepte des kontinuierlichen Deployments Bescheid.
Einführung in Deployments
Bei heterogenen Deployments werden in der Regel mindestens zwei Infrastrukturumgebungen oder Regionen miteinander verbunden. Auf diese Art lassen sich bestimmte technische oder betriebliche Anforderungen erfüllen. Heterogene Deployments werden je nach Typ auch als Hybrid-Cloud, Multi-Cloud oder öffentliche/private Cloud bezeichnet.
In diesem Lab umfasst der Begriff Deployments, die in Regionen innerhalb einer einzelnen Cloud-Umgebung, in mehreren öffentlichen Cloud-Umgebungen (Multi-Cloud) oder in lokalen und öffentlichen Cloud-Umgebungen (hybrid oder öffentlich/privat) bereitgestellt werden.
In Deployments, die auf eine einzelne Umgebung oder Region beschränkt sind, können verschiedene geschäftliche und technische Probleme auftreten:
-
Ausgeschöpfte Ressourcen: Eine einzelne Umgebung verfügt möglicherweise nicht über die notwendigen Rechen-, Netzwerk- und Speicherressourcen, um Ihren Produktionsanforderungen gerecht zu werden. Dies gilt insbesondere für lokale Umgebungen.
-
Eingeschränkte geografische Reichweite: Bei Deployments in einer einzelnen Umgebung müssen Personen, die geografisch voneinander getrennt sind, auf dasselbe Deployment zugreifen können. Der dabei erzeugte Traffic wird an einen zentralen Ort übertragen.
-
Eingeschränkte Verfügbarkeit: Trafficmuster auf Webebene erfordern fehlertolerante und belastbare Anwendungen.
-
Anbieterabhängigkeit: Anbietereigene Plattform- und Infrastrukturabstraktionen können das Portieren von Anwendungen verhindern.
-
Unflexible Ressourcen: Ressourcen sind möglicherweise auf bestimmte Rechen-, Speicher- und Netzwerkangebote beschränkt.
Heterogene Deployments können dabei helfen, diese Herausforderungen zu bewältigen. Sie müssen jedoch mit programmatischen und deterministischen Prozessen und Verfahren entworfen werden. Einmalige oder Ad-hoc-Deployment-Verfahren können dazu führen, dass Deployments oder Prozesse problemanfällig und fehlerintolerant sind. Bei Ad-hoc-Prozessen besteht die Gefahr, dass Daten verloren gehen oder dass der Traffic abgeschnitten wird. Ein gut geeigneter Deployment-Prozess muss wiederholbar sein und bewährte Ansätze für die Verwaltung der Bereitstellung, Konfiguration und Wartung enthalten.
Für heterogene Deployments gibt es drei gängige Szenarien:
- Multi-Cloud-Deployments
- Verfügbarmachung von lokalen Daten
- Prozesse für Continuous Integration/Continuous Delivery (CI/CD)
In den folgenden Übungen lernen Sie häufige Anwendungsfälle von heterogenen Deployments kennen und erfahren, wie Sie Kubernetes und andere Infrastrukturressourcen in diesen Situationen nutzen.
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
- Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.
Lab starten und bei der Google Cloud Console anmelden
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können.
Auf der linken Seite befindet sich der Bereich „Details zum Lab“ mit diesen Informationen:
- Schaltfläche „Google Cloud Console öffnen“
- Restzeit
- Temporäre Anmeldedaten für das Lab
- Ggf. weitere Informationen für dieses Lab
-
Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
-
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}}
Sie finden den Nutzernamen auch im Bereich „Details zum Lab“.
-
Klicken Sie auf Weiter.
-
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
{{{user_0.password | "Password"}}}
Sie finden das Passwort auch im Bereich „Details zum Lab“.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos.
Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
-
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein.
Cloud Shell aktivieren
Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
-
Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren
.
-
Klicken Sie sich durch die folgenden Fenster:
- Fahren Sie mit dem Informationsfenster zu Cloud Shell fort.
- Autorisieren Sie Cloud Shell, Ihre Anmeldedaten für Google Cloud API-Aufrufe zu verwenden.
Wenn eine Verbindung besteht, sind Sie bereits authentifiziert und das Projekt ist auf Project_ID, eingestellt. Die Ausgabe enthält eine Zeile, in der die Project_ID für diese Sitzung angegeben ist:
Ihr Cloud-Projekt in dieser Sitzung ist festgelegt als {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
- (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
- Klicken Sie auf Autorisieren.
Ausgabe:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Um das aktive Konto festzulegen, führen Sie diesen Befehl aus:
$ gcloud config set account `ACCOUNT`
- (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project
Ausgabe:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Hinweis: Die vollständige Dokumentation für gcloud
finden Sie in Google Cloud in der Übersicht zur gcloud CLI.
Zone festlegen
Die Arbeitszone für Google Cloud legen Sie fest, indem Sie den folgenden Befehl ausführen und dabei us‑central1‑a durch die lokale Zone ersetzen:
gcloud config set compute/zone {{{project_0.default_zone | ZONE}}}
Beispielcode für dieses Lab abrufen
- Rufen Sie den Beispielcode zum Erstellen und Ausführen von Containern und Deployments aus dem Lab-Bucket ab:
gcloud storage cp -r gs://spls/gsp053/kubernetes .
cd kubernetes
- Erstellen Sie einen Cluster mit drei Knoten (das kann einige Minuten dauern):
gcloud container clusters create bootcamp \
‑‑machine-type e2‑small \
‑‑num-nodes 3 \
‑‑scopes "https://www.googleapis.com/auth/projecthosting,storage‑rw"
Aufgabe 1: Das Deployment-Objekt
Als Erstes prüfen Sie das Deployment-Objekt.
- Mit dem Befehl
explain
in kubectl
lassen sich dazu weitere Informationen abrufen.
kubectl explain deployment
- Sie können auch alle Felder aufrufen, indem Sie die Option
‑‑recursive
verwenden:
kubectl explain deployment ‑‑recursive
- Sie haben im Laufe des Labs die Möglichkeit, sich mit dem Befehl „explain“ die Struktur von Deployment-Objekten anzusehen. So lernen Sie die Funktion der einzelnen Felder kennen.
kubectl explain deployment.metadata.name
Aufgabe 2: Deployment erstellen
- Erstellen Sie das Deployment
fortune-app
. Sehen Sie sich dazu die Konfigurationsdatei an:
cat deployments/fortune-app-blue.yaml
Ausgabe:
# orchestrate-with-kubernetes/kubernetes/deployments/fortune-app-blue.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: fortune-app-blue
spec:
replicas: 3
selector:
matchLabels:
app: fortune-app
template:
metadata:
labels:
app: fortune-app
track: stable
version: "1.0.0"
spec:
containers:
- name: fortune-app
# The new, centralized image path
image: "us-central1-docker.pkg.dev/qwiklabs-resources/spl-lab-apps/fortune-service:1.0.0"
ports:
- name: http
containerPort: 8080
...
Mit dem Deployment werden drei Replikate erstellt und die Version 1.0.0 des fortune-service-Containers verwendet.
- Erstellen Sie jetzt mit
kubectl create
ein eigenes Deployment-Objekt:
kubectl create -f deployments/fortune-app-blue.yaml
- Anschließend können Sie prüfen, ob es erstellt wurde:
kubectl get deployments
- Danach wird in Kubernetes ein
ReplicaSet
für das Deployment erstellt. Sie können nun prüfen, ob ein ReplicaSet
für das Deployment angelegt wurde:
kubectl get replicasets
Der Name des ReplicaSet
muss das Format fortune-app-blue-xxxxxxx
haben.
- Prüfen Sie die Pods, die im Rahmen des Deployments erstellt wurden.
kubectl get pods
- Erstellen Sie nun einen Dienst, um das
fortune-app
-Deployment extern freizugeben.
kubectl create -f services/fortune-app.yaml
- Rufen Sie die externe IP-Adresse von
fortune-app
ab und senden Sie den folgenden curl-Befehl an den Endpunkt /version
:
kubectl get services frontend
Hinweis: Es kann einige Sekunden dauern, bis das Feld „External‑IP“ für Ihren Dienst ausgefüllt wird. Dies ist normal. Führen Sie den obigen Befehl einfach in Abständen von wenigen Sekunden so lange wiederholt aus, bis das Feld ausgefüllt ist.
curl http://<EXTERNAL-IP>/version
Sie sollten eine JSON-Antwort mit {"version":"1.0.0"}
erhalten.
- Mit der Funktion für Ausgabevorlagen in
kubectl
lässt sich der Befehl „curl“ als Einzeiler schreiben:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Abgeschlossene Aufgabe testen
Klicken Sie unten auf Fortschritt prüfen. Wenn Sie einen Kubernetes-Cluster sowie das Deployment und den Dienst für die „fortune-app“ erstellt haben, erhalten Sie ein Testergebnis.
Kubernetes-Cluster und Deployments („fortune-app“) erstellen
Deployment skalieren
Nachdem Sie ein Deployment erstellt haben, können Sie es skalieren. Aktualisieren Sie dazu das Feld spec.replicas
.
- Das Feld „spec.replicas“ lässt sich am einfachsten mit dem Befehl
kubectl scale
aktualisieren:
kubectl scale deployment fortune-app-blue ‑‑replicas=5
Hinweis: Es dauert etwa eine Minute, bis alle neuen Pods ausgeführt sind.
- Prüfen Sie, ob jetzt fünf Pods für
fortune-app-blue
ausgeführt werden:
kubectl get pods | grep fortune-app-blue | wc -l
- Skalieren Sie die Anwendung nun wieder herunter:
kubectl scale deployment fortune-app-blue --replicas=3
- Prüfen Sie noch einmal, ob die richtige Anzahl Pods ausgeführt wird:
kubectl get pods | grep fortune-app-blue | wc -l
In diesem Abschnitt haben Sie Kubernetes-Deployments kennengelernt und erfahren, wie Sie eine Gruppe von Pods verwalten und skalieren.
Aufgabe 3: Rolling Update
In Deployments lassen sich Images mithilfe von Rolling Updates auf eine neuere Version aktualisieren.
Rolling Update ausführen
- Um ein Rolling Update auszulösen, können Sie einfach die Konfiguration des „grünen“ Deployments anwenden. Kubernetes erkennt das Deployment (
fortune-app-blue
) und überträgt die Änderungen aus der neuen Datei darauf.
kubectl edit deployment fortune-app-blue
- Suchen Sie im Editor die Zeile
image
und ändern Sie das Versionstag von 1.0.0
in 2.0.0
. Sie können die Datei bearbeiten, indem Sie i
auf der Tastatur drücken, um in den Einfügemodus zu wechseln.
-
Speichern Sie die Datei und schließen Sie den Editor. Drücken Sie dazu die Esc
-Taste, geben Sie :wq
ein und drücken Sie die Eingabetaste
. Dadurch wird das Rolling Update für das richtige Deployment ausgelöst und der Verlauf wird ordnungsgemäß aufgezeichnet. Dadurch wird das Rolling Update für das richtige Deployment ausgelöst und der Verlauf wird ordnungsgemäß aufgezeichnet.
-
So rufen Sie das neue ReplicaSet
auf, das in Kubernetes erstellt wurde:
kubectl get replicaset
- Sie können sich auch den neuen Eintrag im Roll-out-Verlauf ansehen:
kubectl rollout history deployment/fortune-app-blue
Rolling Update pausieren
- Führen Sie den folgenden Befehl aus, um das Roll-out zu pausieren:
kubectl rollout pause deployment/fortune-app-blue
- Prüfen Sie den aktuellen Status des Roll-outs:
kubectl rollout status deployment/fortune-app-blue
Hinweis: Der Statusbefehl meldet möglicherweise sofort „deployment "fortune-app-blue" successfully rolled out“. Das ist normal und zeigt, dass der Pausenbefehl erfolgreich war. Das bedeutet nicht, dass das Versionsupdate abgeschlossen ist.
- Prüfen Sie die Version jedes Pods. Es werden Pods der Versionen 1.0.0 und 2.0.0 angezeigt, was bestätigt, dass das Roll-out mittendrin angehalten wurde.
for p in $(kubectl get pods -l app=fortune-app -o=jsonpath='{.items[*].metadata.name}'); do echo $p && curl -s http://$(kubectl get pod $p -o=jsonpath='{.status.podIP}')/version; echo; done
- Drücken Sie
Strg + C
, um die Schleife zu beenden.
Rolling Update fortsetzen
- Mit dem Befehl
resume
können Sie es fortsetzen:
kubectl rollout resume deployment/fortune-app-blue
- Wenn das Roll-out abgeschlossen ist, sollten Sie für den Befehl
status
die folgende Ausgabe erhalten:
kubectl rollout status deployment/fortune-app-blue
Rollback für ein Update ausführen
Beispiel: In einer neuen Version wurde ein Programmfehler erkannt.
- Verwenden Sie dafür den Befehl
rollout
:
kubectl rollout undo deployment/fortune-app-blue
Hinweis: Der Rollback kann einige Sekunden dauern.
- Prüfen Sie, ob für alle Pods ein Rollback auf Version 1.0.0 ausgeführt wurde:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Sehr gut. Sie haben gelernt, wie ein Rolling Update für Kubernetes-Deployments ausgeführt wird.
Aufgabe 4: Canary-Deployments
Wenn bestimmte Nutzer in der Produktion ein neues Deployment testen sollen, bietet sich ein Canary-Deployment an.
Canary-Deployments erstellen
- Erstellen Sie zuerst ein Canary-Deployment für die neue Version mit der Datei
fortune-app-canary.yaml
:
cat deployments/fortune-app-canary.yaml
- Erstellen Sie nun das Canary-Deployment:
kubectl create ‑f deployments/fortune-app-canary.yaml
- Anschließend sollten Sie zwei Deployments haben. Prüfen Sie dies mit dem folgenden Befehl:
kubectl get deployments
Der Dienst fortune-app
hat einen Selektor für app: fortune-app
, der Pods in beiden Deployments fortune-app-blue
(prod) und fortune-app-canary
zuordnet.
Canary-Deployment prüfen
- Sie können die bereitgestellte Version überprüfen, indem Sie Anfragen an den Dienst senden.
for i in {1..10}; do curl -s http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version; echo;
done
- Führen Sie die Anfrage mehrmals aus. Sie werden sehen, dass die meisten Anfragen von Version 1.0.0 und ein Teil von Version 2.0.0 beantwortet werden.
Abgeschlossene Aufgabe testen
Klicken Sie unten auf Fortschritt prüfen. Wenn Sie ein Canary-Deployment erstellt haben, erhalten Sie ein Testergebnis.
Canary-Deployment
Aufgabe 5: Blau/Grün-Deployments
Bei Blau/Grün-Deployments erstellen Sie zwei separate Deployments und leiten den Traffic zwischen ihnen um, indem Sie die Dienstauswahl aktualisieren.
Der Dienst
- Aktualisieren Sie zuerst den Dienst, sodass er nur auf die „blaue“ Version (1.0.0) verweist.
kubectl apply -f services/fortune-app-blue-service.yaml
Updates mithilfe eines Blau/Grün-Deployments
- Erstellen Sie nun das neue „grüne“ Deployment für Version 2.0.0.
kubectl create ‑f deployments/fortune-app-green.yaml
- Wenn das neue Deployment richtig ausgeführt wird, sollten Sie prüfen, ob die aktuelle Version 1.0.0 weiterhin verwendet wird.
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
- Aktualisieren Sie den Dienst, sodass er auf die neue „grüne“ Version verweist:
kubectl apply -f services/fortune-app-green-service.yaml
- Anschließend wird sofort das neue „grüne“ Deployment verwendet. Sie können nun prüfen, ob immer Version 2.0.0 bereitgestellt wird:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Blau/Grün-Rollback
- Um ein Rollback durchzuführen, wenden Sie einfach das Dienstmanifest für die „blaue“ Bereitstellung erneut an:
kubectl apply -f services/fortune-app-blue-service.yaml
- Durch das Update wird auch das Rollback wirksam. Prüfen Sie, ob jetzt Version 1.0.0 verwendet wird:
curl http://`kubectl get svc fortune-app -o=jsonpath="{.status.loadBalancer.ingress[0].ip}"`/version
Geschafft! Sie kennen sich jetzt mit Blau/Grün-Deployments aus und wissen, wie Sie Updates bereitstellen, wenn gleichzeitig bei mehreren Anwendungen die Version geändert werden soll.
Blau/Grün-Bereitstellung
Glückwunsch!
Sie haben das Befehlszeilentool kubectl
praktisch angewendet und gelernt, wie Sie mithilfe von YAML-Dateien und vielen verschiedenen Deployment-Konfigurationen Deployments starten, aktualisieren und skalieren.
Google Cloud-Schulungen und -Zertifizierungen
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Anleitung zuletzt am 11. August 2025 aktualisiert
Lab zuletzt am 11. August 2025 getestet
© 2025 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.