GSP663
Übersicht
Das Betreiben von Websites und Anwendungen ist nicht leicht. Es läuft nicht immer alles nach Plan, Server stürzen ab, Bedarfsspitzen treiben den Ressourcenverbrauch in die Höhe und die Implementierung von Änderungen ohne Ausfallzeit ist kompliziert und stressig. Kubernetes vereinfacht diesen Vorgang und ermöglicht sogar dessen Automatisierung.
In diesem Lab übernehmen Sie in die Rolle eines Entwicklers in dem fiktiven Unternehmen Fancy Store, das eine E-Commerce-Website betreibt. Aufgrund von Skalierungsproblemen und häufigen Ausfällen wurden Sie beauftragt, Ihre Anwendung in Google Kubernetes Engine (GKE) bereitzustellen.
Die Reihenfolge der Übungen in diesem Lab entspricht der üblichen Vorgehensweise eines Cloud-Entwicklers:
- GKE-Cluster erstellen
- Docker-Container erstellen
- Container in GKE bereitstellen
- Container über einen Dienst freigeben
- Container auf mehrere Replikate skalieren
- Website modifizieren
- Neue Version ohne Ausfallzeit einführen
Architekturdiagramm

Vorbereitung
- Grundlegende Kenntnisse von Docker und Kubernetes sind hilfreich, um die Informationen besser zu verstehen.
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
- Legen Sie die Standardzone und die Projektkonfiguration fest:
gcloud config set compute/zone {{{project_0.default_zone|lab zone}}}
Weitere Informationen finden Sie unter Regionen und Zonen.
Aufgabe 1: GKE-Cluster erstellen
Sie benötigen einen Kubernetes-Cluster, auf dem Sie Ihre Website bereitstellen können. Überprüfen Sie zuerst, ob die richtigen APIs aktiviert sind.
- Führen Sie den folgenden Befehl aus, um einen GKE-Cluster namens
fancy-cluster mit drei Knoten zu erstellen:
gcloud container clusters create fancy-cluster --num-nodes 3
Hinweis: Wenn Sie die Fehlermeldung erhalten, dass keine Region oder Zone angegeben wurde, sollten Sie prüfen, ob Sie die standardmäßige Computing-Zone festgelegt haben. Informationen dazu finden Sie im Abschnitt über die Einrichtung der Umgebung.
Es dauert einige Minuten, bis der Cluster angelegt ist.
- Führen Sie anschließend den folgenden Befehl aus, um die drei Worker-VM-Instanzen des Clusters aufzurufen:
gcloud compute instances list
Ausgabe:
NAME: gke-fancy-cluster-default-pool-fb932da6-4sk6
ZONE: us-central1-f
MACHINE_TYPE: e2-medium
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.3
EXTERNAL_IP: 34.172.106.173
STATUS: RUNNING
NAME: gke-fancy-cluster-default-pool-fb932da6-d6qc
ZONE: us-central1-f
MACHINE_TYPE: e2-medium
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.4
EXTERNAL_IP: 34.133.99.176
STATUS: RUNNING
NAME: gke-fancy-cluster-default-pool-fb932da6-ztnh
ZONE: us-central1-f
MACHINE_TYPE: e2-medium
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.5
EXTERNAL_IP: 34.136.180.45
STATUS: RUNNING
-
Suchen Sie Ihren Kubernetes-Cluster und die zugehörigen Informationen in der Console.
-
Klicken Sie auf das Navigationsmenü (
) > Kubernetes Engine > Cluster.
Sie sollten den Cluster fancy-cluster sehen.
Klicken Sie auf Fortschritt prüfen.
GKE-Cluster erstellen
Aufgabe 2: Quell-Repository klonen
Da die Website bereits vorhanden ist, müssen Sie nur die Quelle klonen. Der Schwerpunkt der Aufgabe liegt darauf, Docker-Images zu erstellen und in GKE bereitzustellen.
- Führen Sie die folgenden Befehle aus, um das Git-Repository in Ihre Cloud Shell-Instanz zu klonen:
cd ~
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
-
Wechseln Sie in das entsprechende Verzeichnis.
-
Sie werden auch die NodeJS-Abhängigkeiten installieren, damit Sie die Anwendung testen können, bevor sie bereitgestellt wird:
cd ~/monolith-to-microservices
./setup.sh
Warten Sie einige Minuten, bis das Script vollständig ausgeführt wurde.
- Prüfen Sie, ob Sie die Cloud Shell mit der aktuellen Version von
npm ausführen:
nvm install --lts
- Wechseln Sie in das entsprechende Verzeichnis und testen Sie die Anwendung. Führen Sie dazu den folgenden Befehl aus, um den Webserver zu starten:
cd ~/monolith-to-microservices/monolith
npm start
Ausgabe:
Monolith listening on port 8080!
- Sie können eine Vorschau Ihrer Anwendung öffnen, indem Sie auf das Symbol für die Webvorschau klicken und Vorschau auf Port 8080 auswählen:

Dadurch sollte ein neues Fenster geöffnet werden, in dem Sie den Fancy Store im Einsatz sehen können.

Lassen Sie diesen Tab geöffnet, Sie benötigen ihn später in diesem Lab noch.
- Drücken Sie in der Cloud Shell Strg + C, um den Webserverprozess zu beenden.
Aufgabe 3: Docker-Container mit Cloud Build erstellen
Nachdem jetzt die Quelldateien zur Verfügung stehen, kann im nächsten Schritt der Docker-Container für Ihre Anwendung erstellt werden.
Normalerweise sind dafür zwei Schritte erforderlich. Zunächst muss ein Docker-Container erstellt und dann per Push in eine Registry übertragen werden, um das Image für GKE zum Abruf zu speichern. Mit Cloud Build können Sie den Docker-Container erstellen und das Image mit einem einzigen Befehl in Artifact Registry platzieren.
Google Cloud Build komprimiert die Dateien aus dem Verzeichnis und verschiebt sie in einen Google Cloud Storage-Bucket. Beim Erstellen werden dann alle Dateien aus dem Bucket abgerufen und mit dem Dockerfile wird der Docker-Build-Prozess ausgeführt. Da Sie für den Host das Flag --tag als gcr.io für das Docker-Image angegeben haben, wird das fertige Docker-Image per Push nach Artifact Registry übertragen.
- Als Erstes sollten Sie prüfen, ob die Cloud Build API aktiviert ist:
gcloud services enable cloudbuild.googleapis.com
- Führen Sie anschließend folgenden Befehl aus, um den Build-Prozess zu starten:
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
- Dieser Vorgang dauert einige Minuten.
Die Ausgabe im Terminal sollte in etwa so aussehen:
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
1ae295d9-63cb-482c-959b-bc52e9644d53 2019-08-29T01:56:35+00:00 33S gs://_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz gcr.io//monolith:1.0.0 SUCCESS
-
Wenn Sie den Build-Verlauf einsehen oder den Vorgang in Echtzeit beobachten möchten, klicken Sie auf das Navigationsmenü und scrollen Sie zum Abschnitt „Tools“. Dann klicken Sie auf Cloud Build > Verlauf. Hier sehen Sie eine Liste aller bisherigen Builds.
-
Sie können auf den Build-Namen klicken, um die dazugehörigen Details abzurufen, einschließlich der Logausgabe.
Optional: Klicken Sie auf der Seite „Build-Details“ im Abschnitt „Build-Informationen“ auf Build-Zusammenfassung > Ausführungsdetails > Image-Name, um das Container-Image aufzurufen:

Klicken Sie auf Fortschritt prüfen.
Docker-Container mit Cloud Build erstellen
Aufgabe 4: Container in GKE bereitstellen
Nachdem Sie einen Container für Ihre Website erstellt und per Push nach Artifact Registry übertragen haben, können Sie ihn in Kubernetes bereitstellen.
Für das Deployment und die Verwaltung von Anwendungen in einem GKE-Cluster müssen Sie mit dem Kubernetes-Clusterverwaltungssystem kommunizieren. In der Regel verwenden Sie dafür das kubectl-Befehlszeilentool.
Kubernetes stellt Anwendungen als sogenannte Pods dar – als Einheiten, die wiederum einen Container (bzw. eine Gruppe eng gekoppelter Container) darstellen. Der Pod ist die kleinste bereitstellbare Einheit in Kubernetes. In diesem Lab enthält jeder Pod nur Ihren monolithischen Container.
Erstellen Sie eine Deployment-Ressource, um Ihre Anwendung bereitzustellen. Das Deployment verwaltet mehrere Kopien Ihrer Anwendung, sogenannte Replikate, und plant deren Ausführung auf den einzelnen Knoten im Cluster. In diesem Lab wird in dem Deployment nur ein einziger Pod Ihrer Anwendung ausgeführt. Daher erstellen Deployments ein ReplicaSet. Das ReplicaSet sorgt dafür, dass immer die vorgegebene Anzahl von Replikaten ausgeführt wird.
Mit dem nächsten kubectl create deployment-Befehl weisen Sie Kubernetes an, auf dem Cluster ein Deployment namens monolith mit einem Replikat zu erstellen.
- Führen Sie den folgenden Befehl aus, um die Anwendung bereitzustellen:
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0
Hinweis: Als Best Practice wird empfohlen, zum Speichern dieser Änderungen eine YAML-Datei und ein Versionsverwaltungssystem wie GitHub zu verwenden. Weitere Informationen zu diesen Ressourcen finden Sie in der Dokumentation zu Deployments.
Klicken Sie auf Fortschritt prüfen.
Container in GKE bereitstellen
Deployment prüfen
- Prüfen Sie, ob das Deployment erfolgreich erstellt wurde:
kubectl get all
Führen Sie den Befehl so lange aus, bis der Pod-Status „Wird ausgeführt“ lautet.
Ausgabe:
NAME READY STATUS RESTARTS AGE
pod/monolith-7d8bc7bf68-htm7z 1/1 Running 0 6m21s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/monolith 1 1 1 1 20m
NAME DESIRED CURRENT READY AGE
replicaset.apps/monolith-7d8bc7bf68 1 1 1 20m
Diese Ausgabe zeigt Folgendes:
- Das aktuelle Deployment
- Das ReplicaSet mit der gewünschten Pod-Anzahl von 1
- Den Pod, der ausgeführt wird
Der Vorgang war also erfolgreich.
Hinweis: Sie können Ihre Kubernetes-Deployments auch über die Console aufrufen. Öffnen Sie dazu das Navigationsmenü > Kubernetes Engine > Arbeitslasten.
Hinweis: Wenn Fehler oder unerwartete Statusmeldungen angezeigt werden, können Sie Ihre Ressourcen mit den folgenden Befehlen debuggen, um detaillierte Hinweise zu erhalten:
kubectl describe pod monolith
kubectl describe pod/monolith-7d8bc7bf68-2bxts
kubectl describe deployment monolith
kubectl describe deployment.apps/monolith
Ganz am Ende der Ausgabe sehen Sie eine Liste der Ereignisse, durch die Fehler ausgegeben wurden, und ausführliche Informationen zu Ihren Ressourcen.
Optional: Sie können Befehle für Ihre Deployments auch getrennt ausführen:
# Show pods
kubectl get pods
# Show deployments
kubectl get deployments
# Show replica sets
kubectl get rs
#You can also combine them
kubectl get pods,deployments
Der volle Nutzen von Kubernetes wird deutlich, wenn Sie einen Pod löschen, um einen Serverabsturz zu simulieren. Probieren Sie es aus!
- Kopieren Sie den Namen eines Pods aus der vorherigen Ausgabe und fügen Sie ihn in den folgenden Befehl ein, um den Pod zu löschen:
kubectl delete pod/<POD_NAME>
Sie können den Löschvorgang auf der Seite Arbeitslasten beobachten.
-
Klicken Sie auf den Namen der Arbeitslast.
-
Falls die Zeit ausreicht, können Sie noch einmal den Befehl get all ausführen. Sie sollten zwei Pods sehen: einen mit dem Status „Wird beendet“ und einen anderen, der erstellt oder ausgeführt wird:
kubectl get all
Ausgabe:
NAME READY STATUS RESTARTS AGE
pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 4s
pod/monolith-7d8bc7bf68-htm7z 1/1 Terminating 0 9m35s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/monolith 1 1 1 1 24m
NAME DESIRED CURRENT READY AGE
replicaset.apps/monolith-7d8bc7bf68 1 1 1 24m
Was ist da passiert? Das ReplicaSet hat erkannt, dass der Pod beendet wurde, und hat die Erstellung eines neuen Pods ausgelöst, damit weiterhin die gewünschte Anzahl von Replikaten vorhanden ist. Später werden Sie erfahren, wie Sie das Deployment horizontal skalieren können, sodass beim Ausfall einer Instanz keine Unterbrechung für die Nutzer entsteht.
Aufgabe 5: GKE-Deployment freigeben
Sie haben die Anwendung in GKE bereitgestellt, aber es gibt keine Möglichkeit, von außerhalb des Clusters darauf zuzugreifen. Standardmäßig sind die Container, die Sie in GKE ausführen, nicht über das Internet zugänglich, da sie keine externen IP-Adressen haben. Darum müssen Sie die Anwendung mit einer Dienstressource explizit für Traffic aus dem Internet freigeben. Ein Dienst bietet Netzwerk- und IP-Unterstützung für die Pods Ihrer Anwendung. GKE erstellt eine externe IP-Adresse und einen Load-Balancer für die Anwendung.
- Führen Sie den folgenden Befehl aus, um die Website für das Internet freizugeben:
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080
Auf den Dienst zugreifen
GKE weist die externe IP-Adresse der Dienstressource zu, nicht dem Deployment.
- Um die externe IP-Adresse zu ermitteln, die GKE der Anwendung zugewiesen hat, können Sie den Dienst mit dem Befehl
kubectl get service prüfen:
kubectl get service
Ausgabe:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
monolith 10.3.251.122 203.0.113.0 80:30877/TCP 3d
Führen Sie den Befehl so lange aus, bis der Dienst eine externe IP-Adresse hat.
- Kopieren Sie diese externe IP-Adresse für Ihre Anwendung anschließend als URL in Ihren Browser (z. B. http://203.0.113.0), um zu prüfen, ob die Anwendung aufgerufen werden kann.
Sie sollten dieselbe Website sehen, die Sie bereits getestet haben. Sie wird jetzt vollständig in Kubernetes ausgeführt.
Klicken Sie auf Fortschritt prüfen.
GKE-Deployment freigeben
Aufgabe 6: GKE-Deployment skalieren
Ihr Anwendung wird jetzt in GKE ausgeführt und kann über das Internet aufgerufen werden. Wir gehen davon aus, dass Ihre Website sehr beliebt ist. Damit der hohe Traffic verarbeitet werden kann, müssen Sie die Anwendung also auf mehrere Instanzen skalieren. Als Nächstes erfahren Sie, wie Sie die Anwendung auf bis zu drei Replikate ausweiten können.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um das Deployment zu skalieren:
kubectl scale deployment monolith --replicas=3
- Prüfen Sie, ob die Umsetzung erfolgreich war:
kubectl get all
Ausgabe:
NAME READY STATUS RESTARTS AGE
pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 36m
pod/monolith-7d8bc7bf68-7ds7q 1/1 Running 0 45s
pod/monolith-7d8bc7bf68-c5kxk 1/1 Running 0 45s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.27.240.1 443/TCP 25h
service/monolith LoadBalancer 10.27.253.64 XX.XX.XX.XX 80:32050/TCP 6m7s
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/monolith 3 3 3 3 61m
NAME DESIRED CURRENT READY AGE
replicaset.apps/monolith-7d8bc7bf68 3 3 3 61m
Sie sollten jetzt drei Instanzen Ihres Pods mit dem Status „Wird ausgeführt“ sehen. Die gewünschte Anzahl von Deployments und ReplicaSets lautet jetzt 3.
Klicken Sie auf Fortschritt prüfen.
GKE-Deployment skalieren
Aufgabe 7: Website modifizieren
Szenario: Ihr Marketingteam hat Sie gebeten, die Startseite Ihrer Website zu ändern. Diese Seite soll mehr Informationen zu Ihrem Unternehmen und den angebotenen Produkten enthalten.
Aufgabe: Fügen Sie der Startseite neue Texte hinzu, um dem Wunsch des Marketingteams nachzukommen. Offenbar hat einer der Entwickler die Änderungen bereits unter dem Dateinamen index.js.new erstellt. Sie können diese Datei einfach nach index.js kopieren, sodass die Änderungen darin enthalten sind. Die nachstehenden Anleitung hilft bei der Umsetzung.
- Führen Sie die folgenden Befehle aus, um die aktualisierte Datei in den korrekten Dateinamen umzubenennen:
cd ~/monolith-to-microservices/react-app/src/pages/Home
mv index.js.new index.js
- Geben Sie den Inhalt aus, um die Änderungen zu prüfen:
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js
Der Code sollte dann in etwa so aussehen:
/*
Copyright 2019 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
\*/
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Paper from "@material-ui/core/Paper";
import Typography from "@material-ui/core/Typography";
const useStyles = makeStyles(theme => ({
root: {
flexGrow: 1
},
paper: {
width: "800px",
margin: "0 auto",
padding: theme.spacing(3, 2)
}
}));
export default function Home() {
const classes = useStyles();
return (
Fancy Fashion & Style Online
Tired of mainstream fashion ideas, popular trends and societal norms?
This line of lifestyle products will help you catch up with the Fancy trend and express your personal style.
Start shopping Fancy items now!
);
}
Sie haben die React-Komponenten aktualisiert, müssen aber noch die React-Anwendung erstellen, um die statischen Dateien zu generieren.
- Führen Sie den folgenden Befehl aus, um die React-Anwendung zu erstellen und in das öffentliche monolith-Verzeichnis zu kopieren:
cd ~/monolith-to-microservices/react-app
npm run build:monolith
Nachdem der Code aktualisiert wurde, müssen Sie den Docker-Container neu erstellen und in Artifact Registry veröffentlichen. Sie können dazu den gleichen Befehl wie zuvor verwenden. Nur das Versionslabel muss geändert werden.
- Geben Sie Folgendes ein, um ein neues Cloud Build mit der aktualisierten Image-Version 2.0.0 anzustoßen:
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .
Im nächsten Abschnitt verwenden Sie dieses Image, um die Anwendung ohne Ausfallzeit zu aktualisieren.
Klicken Sie auf Fortschritt prüfen.
Website modifizieren
Aufgabe 8: Website ohne Ausfallzeit aktualisieren
Die Änderungen wurden durchgeführt und das Marketingteam ist mit dem Ergebnis sehr zufrieden. Nun soll die Website unterbrechungsfrei aktualisiert werden.
Der Rolling-Update-Mechanismus von GKE sorgt dafür, dass die Anwendung jederzeit verfügbar ist, auch wenn das System die Instanzen des alten Container-Images bei allen ausgeführten Replikaten durch das neue Image ersetzt.
- Führen Sie den folgenden Befehl aus, um Kubernetes anzuweisen, das Image Ihres Deployments auf eine neue Version zu aktualisieren:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0
Deployment prüfen
- Sie können das aktualisierte Deployment mit dem folgenden Befehl prüfen:
kubectl get pods
Ausgabe:
NAME READY STATUS RESTARTS AGE
monolith-584fbc994b-4hj68 1/1 Terminating 0 60m
monolith-584fbc994b-fpwdw 1/1 Running 0 60m
monolith-584fbc994b-xsk8s 1/1 Terminating 0 60m
monolith-75f4cf58d5-24cq8 1/1 Running 0 3s
monolith-75f4cf58d5-rfj8r 1/1 Running 0 5s
monolith-75f4cf58d5-xm44v 0/1 ContainerCreating 0 1s
Hier sehen Sie, dass drei neue Pods erstellt und die alten Pods beendet werden. Anhand der AGE-Werte können Sie die neuen von den alten Pods unterscheiden. Am Ende sehen Sie nur noch die drei aktualisierten Pods.
- Testen Sie Ihre Anwendung, indem Sie den folgenden Befehl zum Starten des Webservers ausführen:
npm start
- Rufen Sie wieder den Tab mit der Webvorschau auf und aktualisieren Sie die Seite, um die Änderungen zu verifizieren. Die Anwendung sollte aktualisiert sein.
Auf Ihrer Website sollte nun der Text dargestellt sein, den Sie gerade der Startseite hinzugefügt haben.

- Drücken Sie in der Cloud Shell
Strg + C, um den Webserverprozess zu beenden.
Klicken Sie auf Fortschritt prüfen.
Website ohne Ausfallzeit aktualisieren
Aufgabe 9: Bereinigen
Wenn Sie dieses Lab beenden, werden alle Ressourcen automatisch gelöscht. In Ihrer eigenen Umgebung sollten Sie nicht mehr benötigte Ressourcen aber immer selbst entfernen.
- Löschen Sie das Git-Repository:
cd ~
rm -rf monolith-to-microservices
- Artifact Registry-Images löschen:
# Delete the container image for version 1.0.0 of the monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --quiet
# Delete the container image for version 2.0.0 of the monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet
- Löschen Sie Google Cloud Build-Artefakte aus Google Cloud Storage:
# The following command will take all source archives from all builds and delete them from cloud storage
# Run this command to print all sources:
# gcloud builds list | awk 'NR > 1 {print $4}'
gcloud builds list | grep 'SOURCE' | cut -d ' ' -f2 | while read line; do gsutil rm $line; done
- Löschen Sie den GKE-Dienst:
kubectl delete service monolith
kubectl delete deployment monolith
- Löschen Sie den GKE-Cluster:
gcloud container clusters delete fancy-cluster {{{project_0.default_region | lab region}}}
- Geben Sie
Y ein, um die Aktion zu bestätigen. Die Ausführung dieses Befehls kann eine Weile dauern.
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
Sie haben Ihre Website in GKE bereitgestellt, skaliert und aktualisiert. Sie sind jetzt mit Docker und Kubernetes vertraut.
Weitere Informationen
Anleitung zuletzt am 26. April 2024 aktualisiert
Lab zuletzt am 21. Februar 2025 getestet
© 2026 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.