Prüfpunkte
Create the lab resources
/ 25
Create the repository in Cloud Source Repositories
/ 15
Create the Cloud Build Triggers
/ 20
Deploy the first versions of the application
/ 20
Deploy the second versions of the application
/ 10
Roll back the production deployment
/ 10
DevOps-Workflows in Google Cloud implementieren: Challenge-Lab
- GSP330
- Überblick
- Das Szenario
- Aufgabe 1: Lab-Ressourcen erstellen
- Aufgabe 2: Repository in Cloud Source Repositories erstellen
- Aufgabe 3: Cloud Build-Trigger erstellen
- Aufgabe 4: Erste Versionen der Anwendung bereitstellen
- Aufgabe 5: Zweite Versionen der Anwendung bereitstellen
- Aufgabe 6: Rollback des Produktions-Deployments durchführen
- Das wars! Sie haben das Lab erfolgreich abgeschlossen.
GSP330
Überblick
In einem Challenge-Lab geht es um ein bestimmtes Szenario mit mehreren Aufgaben. Anders als bei einem normalen Lab erhalten Sie jedoch keine Schritt-für-Schritt-Anleitung, sondern nutzen die in den Labs des jeweiligen Kurses erlernten Fähigkeiten, um die Aufgaben selbst zu lösen. Ihre Lösungen werden automatisch bewertet. Die erzielten Punkte finden Sie rechts oben auf dieser Seite.
In Challenge-Labs werden keine neuen Grundlagen zu Google Cloud vermittelt. Sie sollen dabei Ihr Wissen erweitern und es wird erwartet, dass Sie beispielsweise Standardwerte ändern und Fehlermeldungen lesen und recherchieren, um Ihre eigenen Fehler zu beheben.
Die volle Punktzahl erreichen Sie nur, wenn Sie alle Aufgaben innerhalb der vorgegebenen Zeit lösen.
Dieses Lab wird Teilnehmern empfohlen, die sich für den Kurs DevOps-Workflows in Google Cloud implementieren angemeldet haben. Sind Sie bereit?
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 die Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung selbst 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)
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Das Szenario
Als neuer DevOps Engineer bei Cymbal Superstore hatten Sie in den letzten paar Monaten Zeit, sich gründliche Kenntnisse über den Betrieb der E‑Commerce-Website des Unternehmens anzueignen. Das DevOps-Team arbeitet derzeit an einer umfassenden CI/CD-Pipeline und bittet Sie dabei um Ihre Hilfe. Die Pipeline soll Entwickler beim Automatisieren von Aufgaben, beim effektiveren Zusammenarbeiten mit anderen Teams und beim häufigeren und zuverlässigen Veröffentlichen von Software unterstützen. Ihre Fachkenntnisse über Cloud Source Repositories, Artifact Registry, Docker und Cloud Build ist dabei eine große Hilfe, denn Cymbal Superstore möchte gern alle nativen Google Cloud-Dienste für die Pipeline nutzen.
Bevor Sie dieses Projekt in Angriff nehmen, möchte sich das DevOps-Team jedoch von Ihren neuen Kenntnissen überzeugen. Dazu gehört eine Liste mit Aufgaben, die Sie innerhalb eines festgelegten Zeitraums in einer Sandbox-Umgebung durchführen sollen.
Die Aufgabe
Folgende Aufgaben stehen auf der Liste:
- Ein GKE-Cluster anhand einer Reihe vorgegebener Konfigurationen erstellen
- Ein Repository in Cloud Source Repositories erstellen, in dem der Go-Anwendungscode gehostet wird
- Cloud Build-Trigger erstellen, die eine Produktions- und Entwicklungsanwendung bereitstellen
- Aktualisierungen per Push-Befehl an die Anwendung übertragen und neue Builds erstellen
- Ein Rollback der Produktionsanwendung auf eine vorherige Version durchführen
Sie erstellen also unter Verwendung von Cloud Source Repositories, Artifact Registry und Cloud Build eine einfache CI/CD-Pipeline.
Aufgabe 1: Lab-Ressourcen erstellen
In diesem Abschnitt initialisieren Sie das Google Cloud-Projekt für die Demo-Umgebung. Sie aktivieren die erforderlichen APIs, konfigurieren Git in Cloud Shell, erstellen ein Docker-Repository in Artifact Registry sowie ein GKE-Cluster, in dem die Produktions- und Entwicklungsanwendung ausgeführt werden.
- Führen Sie den folgenden Befehl aus, um die APIs für GKE, Cloud Build und Cloud Source Repositories zu aktivieren:
- Fügen Sie die Kubernetes-Entwickler-Rolle dem Cloud Build-Dienstkonto hinzu:
- Führen Sie den folgenden Befehl aus, um Git in Cloud Shell zu konfigurieren. Ersetzen Sie dabei
<email>
durch Ihre erzeugte Lab-E‑Mail-Adresse und<name>
durch Ihren Namen.
-
Erstellen Sie ein Docker-Repository in Artifact Registry mit dem Namen my-repository in der Region
. Dort werden die Container-Images gespeichert. -
Erstellen Sie ein GKE Standard-Cluster mit dem Namen
hello-cluster
und der folgenden Konfiguration:
Einstellung | Wert |
---|---|
Zone | |
Release-Version | Regulär |
Clusterversion |
1.29.1-gke.1589020 oder höher
|
Cluster Autoscaler | Aktiviert |
Anzahl der Knoten | 3 |
Minimale Knotenanzahl | 2 |
Maximale Knotenanzahl | 6 |
- Erstellen Sie die Namespaces
prod
unddev
in Ihrem Cluster.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 2: Repository in Cloud Source Repositories erstellen
In dieser Aufgabe erstellen Sie das Repository sample-app in Cloud Source Repositories und initialisieren es mit einem Beispielcode. In diesem Repository ist Ihr Go-Anwendungscode enthalten. Außerdem dient es als primäre Quelle zum Auslösen von Builds.
-
Erstellen Sie ein leeres Repository mit dem Namen sample-app in Cloud Source Repositories.
-
Klonen Sie sample-app in Cloud Shell.
-
Kopieren Sie mit dem folgenden Befehl den Beispielcode in das Verzeichnis
sample-app
:
- Der folgende Befehl ersetzt automatisch die Platzhalter
<your-region>
und<your-zone>
in den Dateiencloudbuild-dev.yaml
undcloudbuild.yaml
durch die Region und Zone, die Ihrem Projekt zugewiesen sind:
-
Führen Sie den ersten Commit mit dem Beispielcode durch, den Sie dem Verzeichnis
sample-app
hinzugefügt haben. Übertragen Sie dann per Push-Befehl die Änderungen an den master-Zweig. -
Erstellen Sie einen Zweig mit dem Namen dev. Führen Sie einen Commit mit dem Beispielcode durch, den Sie dem Verzeichnis
sample-app
hinzugefügt haben, und übertragen Sie dann per Push-Befehl die Änderungen an den dev-Zweig. -
Überprüfen Sie, ob der Beispielcode und die Zweige im Quell-Repository gespeichert sind.
Der Code, den Sie gerade geklont haben, enthält eine einfache Go-Anwendung mit zwei Einstiegspunkten: rot und blau. Für jeden ist ein einfaches farbiges Rechteck auf der Webseite zu sehen. Die Farbe hängt vom ausgewählten Einstiegspunkt ab.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 3: Cloud Build-Trigger erstellen
In diesem Abschnitt erstellen Sie zwei Cloud Build-Trigger.
-
Der erste Trigger wartet auf Änderungen am
master
-Zweig. Er erstellt ein Docker-Image von Ihrer Anwendung, überträgt dieses per Push-Befehl an Google Artifact Registry und stellt die aktuelle Version des Image dem prod-Namespace in Ihrem GKE-Cluster bereit. -
Der zweite Trigger wartet auf Änderungen am
dev
-Zweig. Er erstellt ein Docker-Image von Ihrer Anwendung, überträgt dieses per Push-Befehl an Google Artifact Registry und stellt die aktuelle Version des Image dem dev-Namespace in Ihrem GKE-Cluster bereit.
-
Erstellen Sie einen Cloud Build-Trigger mit dem Namen sample-app-prod-deploy und den folgenden Konfigurationen:
- Ereignis: Per Push-Befehl an Zweig übertragen
- Quell-Repository:
sample-app
- Zweig:
^master$
- Cloud Build-Konfigurationsdatei:
cloudbuild.yaml
-
Erstellen Sie einen Cloud Build-Trigger mit dem Namen sample-app-dev-deploy und den folgenden Konfigurationen:
- Ereignis: Per Push-Befehl an Zweig übertragen
- Quell-Repository:
sample-app
- Zweig:
^dev$
- Cloud Build-Konfigurationsdatei:
cloudbuild-dev.yaml
Nach dem Einrichten der Trigger löst jede Änderung an den Zweigen die entsprechende Cloud Build-Pipeline aus. Dabei wird die Anwendung so erstellt und bereitgestellt wie in den beiden cloudbuild.yaml
-Dateien angegeben.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 4: Erste Versionen der Anwendung bereitstellen
In diesem Abschnitt erstellen Sie eine erste Version der Produktionsanwendung und der Entwicklungsanwendung.
Erstes Entwicklungs-Deployment erstellen
-
Prüfen Sie in Cloud Shell die Datei
cloudbuild-dev.yaml
, die sich im Verzeichnis sample-app befindet, um sich die Schritte des Build-Prozesses anzusehen. Ersetzen Sie in der Dateicloudbuild-dev.yaml
die<version>
in Zeile 9 und 13 durchv1.0
. -
Gehen Sie zur Datei
dev/deployment.yaml
und aktualisieren Sie<todo>
in Zeile 17 mit dem richtigen Container-Image-Namen. Ersetzen Sie außerdem die VariablePROJECT_ID
durch die tatsächliche Projekt-ID im Container-Image-Namen.
-
Führen Sie einen Commit der Änderungen am
dev
-Zweig durch und übertragen Sie die Änderungen per Push-Befehl, um den Build-Job sample-app-dev-deploy auszulösen. -
Überprüfen Sie die erfolgreiche Ausführung Ihres Builds auf der Seite Verlauf in Cloud Build und ob die Anwendung development-deployment im
dev
-Namespace des Clusters bereitgestellt wurde. -
Führen Sie eine Freigabe des Deployments development-deployment für einen LoadBalancer-Dienst mit dem Namen
dev-deployment-service
auf Port 8080 durch. Legen Sie den Zielport des Containers auf den im Dockerfile angegebenen Port fest. -
Gehen Sie zur IP-Adresse des Load Balancer-Dienstes und fügen Sie an das Ende der URL den Einstiegspunkt
/blue
hinzu, um zu überprüfen, ob die Anwendung erfolgreich ausgeführt wird. Die URL sollte in etwa so aussehen:http://34.135.97.199:8080/blue
.
Erstes Produktions-Deployment erstellen
-
Wechseln Sie zum
master
-Zweig. Prüfen Sie die Dateicloudbuild.yaml
, die sich im Verzeichnis sample-app befindet, um sich die Schritte des Build-Prozesses anzusehen. Ersetzen Sie in der Dateicloudbuild.yaml
die<version>
in Zeile 11 und 16 durchv1.0
. -
Gehen Sie zur Datei
prod/deployment.yaml
und aktualisieren Sie<todo>
in Zeile 17 mit dem richtigen Container-Image-Namen. Ersetzen Sie außerdem die VariablePROJECT_ID
durch die tatsächliche Projekt-ID im Container-Image-Namen.
-
Führen Sie einen Commit der Änderungen am
master
-Zweig durch und übertragen Sie die Änderungen per Push-Befehl, um den Build-Job sample-app-prod-deploy auszulösen. -
Überprüfen Sie die erfolgreiche Ausführung Ihres Builds auf der Seite Verlauf in Cloud Build und ob die Anwendung production-deployment im
prod
-Namespace des Clusters bereitgestellt wurde. -
Führen Sie eine Freigabe des Deployments production-deployment im
prod
-Namespace für einen LoadBalancer-Dienst mit dem Namenprod-deployment-service
auf Port 8080 durch. Legen Sie den Zielport des Containers auf den im Dockerfile angegebenen Port fest. -
Gehen Sie zur IP-Adresse des Load Balancer-Dienstes und fügen Sie an das Ende der URL den Einstiegspunkt
/blue
hinzu, um zu überprüfen, ob die Anwendung erfolgreich ausgeführt wird. Die URL sollte in etwa so aussehen:http://34.135.245.19:8080/blue
.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 5: Zweite Versionen der Anwendung bereitstellen
In diesem Abschnitt erstellen Sie eine zweite Version der Produktionsanwendung und der Entwicklungsanwendung.
Zweites Entwicklungs-Deployment erstellen
- Wechseln Sie zurück zum
dev
-Zweig.
- Aktualisieren Sie in der Datei
main.go
die Funktionmain()
so:
- Fügen Sie in der Datei
main.go
die folgende Funktion hinzu:
-
Prüfen Sie die Datei
cloudbuild-dev.yaml
, um sich die Schritte des Build-Prozesses anzusehen. Aktualisieren Sie die Version des Docker-Image aufv2.0
. -
Gehen Sie zur Datei
dev/deployment.yaml
und aktualisieren Sie den Container-Image-Namen auf die neue Version (v2.0
). -
Führen Sie einen Commit der Änderungen am
dev
-Zweig durch und übertragen Sie die Änderungen per Push-Befehl, um den Build-Job sample-app-dev-deploy auszulösen. -
Überprüfen Sie die erfolgreiche Ausführung Ihres Builds auf der Seite Verlauf in Cloud Build und ob die Anwendung development-deployment im
dev
-Namespace des Clusters bereitgestellt wurde und das Imagev2.0
verwendet. -
Gehen Sie zur IP-Adresse des Load Balancer-Dienstes und fügen Sie an das Ende der URL den Einstiegspunkt
/red
hinzu, um zu überprüfen, ob die Anwendung erfolgreich ausgeführt wird. Die URL sollte in etwa so aussehen:http://34.135.97.199:8080/red
.
Zweites Produktions-Deployment erstellen
- Wechseln Sie zum
master
-Zweig.
- Aktualisieren Sie in der Datei
main.go
die Funktionmain()
so:
- Fügen Sie in der Datei
main.go
die folgende Funktion hinzu:
-
Prüfen Sie die Datei
cloudbuild.yaml
, um sich die Schritte des Build-Prozesses anzusehen. Aktualisieren Sie die Version des Docker-Image aufv2.0
. -
Gehen Sie zur Datei
prod/deployment.yaml
und aktualisieren Sie den Container-Image-Namen auf die neue Version (v2.0
). -
Führen Sie einen Commit der Änderungen am
master
-Zweig durch und übertragen Sie die Änderungen per Push-Befehl, um den Build-Job sample-app-prod-deploy auszulösen. -
Überprüfen Sie die erfolgreiche Ausführung Ihres Builds auf der Seite Verlauf in Cloud Build und ob die Anwendung production-deployment im
prod
-Namespace des Clusters bereitgestellt wurde und das Imagev2.0
verwendet. -
Gehen Sie zur IP-Adresse des Load Balancer-Dienstes und fügen Sie an das Ende der URL den Einstiegspunkt
/red
hinzu, um zu überprüfen, ob die Anwendung erfolgreich ausgeführt wird. Die URL sollte in etwa so aussehen:http://34.135.245.19:8080/red
.
Sehr gut. Sie haben erfolgreich eine voll funktionsfähige CI/CD-Pipeline für Produktion und Entwicklung erstellt.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 6: Rollback des Produktions-Deployments durchführen
In diesem Abschnitt führen Sie ein Rollback des Produktions-Deployments auf eine vorherige Version durch.
- Führen Sie ein Rollback von production-deployment auf die Version
v1.0
der Anwendung durch.
- Gehen Sie zur IP-Adresse des Load Balancer-Dienstes und fügen Sie an das Ende der URL des Produktions-Deployments den Einstiegspunkt
/red
hinzu. Als Ergebnis sollten Sie die Antwort404
auf der Seite erhalten.
Klicken Sie auf Fortschritt prüfen.
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
Glückwunsch! In diesem Lab haben Sie gezeigt, dass Sie DevOps-Workflows in Google Cloud implementieren können. Sie haben zuerst ein GKE-Cluster erstellt, in dem die Anwendung ausgeführt wird, und ein Git-Repository, in dem die Codebasis gehostet wird. Dann haben Sie Cloud Build-Trigger erstellt, den Code und die Vorlagen geändert und die Aktualisierungen per Push-Befehl an das Repository übertragen und so Ihre ersten Builds für die Entwicklungs- und Produktionsanwendung erstellt. Anschließend haben Sie Aktualisierungen per Push-Befehl an die Anwendung übergeben, um neue Builds zu erstellen, und ein Rollback der Produktionsanwendung auf eine vorherige Version durchgeführt. Sie können jetzt DevOps-Aufgaben in Ihrer eigenen Umgebung ausführen.
Nächstes Skill-Logo erwerben
Dieses Lab zum selbstbestimmten Lernen ist Teil des Kurses DevOps-Workflows in Google Cloud implementieren. Wenn Sie diesen Kurs abschließen, erhalten Sie das oben gezeigte Skill-Logo, das Sie in Ihren Lebenslauf oder Ihre Social-Media-Profile einfügen können. Teilen Sie Ihre Leistung mit #GoogleCloudBadge.
Dieses Skill-Logo ist Teil des Google Cloud-Lernpfads für Cloud DevOps Engineers. Setzen Sie Ihren Lernpfad fort und melden Sie sich für den Kurs Monitoring und Logging mit Google Cloud Observability an.
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 13. Mai 2024 aktualisiert
Lab zuletzt am 13. Mai 2024 getestet
© 2024 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.