Anleitung und Anforderungen für Lab-Einrichtung
Schützen Sie Ihr Konto und Ihren Fortschritt. Verwenden Sie immer den privaten Modus und Lab-Anmeldedaten, um dieses Lab auszuführen.

Website in Google Kubernetes Engine bereitstellen, skalieren und aktualisieren

Lab 25 Minuten universal_currency_alt 1 Guthabenpunkt show_chart Einsteiger
info Dieses Lab kann KI-Tools enthalten, die den Lernprozess unterstützen.
Dieser Inhalt ist noch nicht für Mobilgeräte optimiert.
Die Lernumgebung funktioniert am besten, wenn Sie auf einem Computer über einen per E‑Mail gesendeten Link darauf zugreifen.

GSP663

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Ü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:

  1. GKE-Cluster erstellen
  2. Docker-Container erstellen
  3. Container in GKE bereitstellen
  4. Container über einen Dienst freigeben
  5. Container auf mehrere Replikate skalieren
  6. Website modifizieren
  7. Neue Version ohne Ausfallzeit einführen

Architekturdiagramm

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

  1. 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
  2. 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.
  3. 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“.

  4. Klicken Sie auf Weiter.

  5. 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“.

  6. 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.
  7. 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. Symbol für das Navigationsmenü und Suchfeld

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.

  1. Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren Symbol für Cloud Shell-Aktivierung.

  2. 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.

  1. (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
  1. 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`
  1. (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.

  1. 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.

  1. 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
  1. Suchen Sie Ihren Kubernetes-Cluster und die zugehörigen Informationen in der Console.

  2. Klicken Sie auf das Navigationsmenü (Symbol für 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.

  1. 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
  1. Wechseln Sie in das entsprechende Verzeichnis.

  2. 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.

  1. Prüfen Sie, ob Sie die Cloud Shell mit der aktuellen Version von npm ausführen:
nvm install --lts
  1. 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!
  1. 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:

„Vorschau auf Port 8080“ hervorgehoben

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

Willkommensseite des Fancy Store

Lassen Sie diesen Tab geöffnet, Sie benötigen ihn später in diesem Lab noch.

  1. 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.

  1. Als Erstes sollten Sie prüfen, ob die Cloud Build API aktiviert ist:
gcloud services enable cloudbuild.googleapis.com
  1. 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 .
  1. 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
  1. 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.

  2. 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:

Seite „Ausführungsdetails“ mit hervorgehobenem Image-Namen

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

  1. 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!

  1. 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.

  1. Klicken Sie auf den Namen der Arbeitslast.

  2. 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.

  1. 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.

  1. 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.

  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um das Deployment zu skalieren:
kubectl scale deployment monolith --replicas=3
  1. 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.

  1. 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
  1. 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.

  1. 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.

  1. 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

  1. 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.

  1. Testen Sie Ihre Anwendung, indem Sie den folgenden Befehl zum Starten des Webservers ausführen:
npm start
  1. 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.

Startseite des Fancy Store

  1. 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.

  1. Löschen Sie das Git-Repository:
cd ~ rm -rf monolith-to-microservices
  1. 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
  1. 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
  1. Löschen Sie den GKE-Dienst:
kubectl delete service monolith kubectl delete deployment monolith
  1. Löschen Sie den GKE-Cluster:
gcloud container clusters delete fancy-cluster {{{project_0.default_region | lab region}}}
  1. 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.

Vorbereitung

  1. Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
  2. Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
  3. Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen

Privates Surfen verwenden

  1. Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
  2. Klicken Sie im privaten Modus auf Konsole öffnen

In der Konsole anmelden

  1. Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
  2. Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
  3. Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.

Diese Inhalte sind derzeit nicht verfügbar

Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail

Sehr gut!

Bei Verfügbarkeit kontaktieren wir Sie per E-Mail

Es ist immer nur ein Lab möglich

Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten

Privates Surfen für das Lab verwenden

Am besten führen Sie dieses Lab in einem Inkognito- oder privaten Browserfenster aus. So vermeiden Sie Konflikte zwischen Ihrem privaten Konto und dem Teilnehmerkonto, die zusätzliche Kosten für Ihr privates Konto verursachen könnten.