arrow_back

DevOps-Workflows in Google Cloud implementieren: Challenge-Lab

Anmelden Teilnehmen
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

DevOps-Workflows in Google Cloud implementieren: Challenge-Lab

Lab 1 Stunde 30 Minuten universal_currency_alt 5 Guthabenpunkte show_chart Mittelstufe
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP330

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Ü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)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus, 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: Wenn Sie über ein persönliches Google Cloud-Konto oder -Projekt verfügen, verwenden Sie es nicht für dieses Lab. So werden zusätzliche Kosten für Ihr Konto vermieden.

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.

Logo von Cymbal Superstore

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.

  1. Führen Sie den folgenden Befehl aus, um die APIs für GKE, Cloud Build und Cloud Source Repositories zu aktivieren:
gcloud services enable container.googleapis.com \ cloudbuild.googleapis.com \ sourcerepo.googleapis.com
  1. Fügen Sie die Kubernetes-Entwickler-Rolle dem Cloud Build-Dienstkonto hinzu:
export PROJECT_ID=$(gcloud config get-value project) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \ --format="value(projectNumber)")@cloudbuild.gserviceaccount.com --role="roles/container.developer"
  1. 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.
git config --global user.email <email> git config --global user.name <name>
  1. Erstellen Sie ein Docker-Repository in Artifact Registry mit dem Namen my-repository in der Region . Dort werden die Container-Images gespeichert.

  2. 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
  1. Erstellen Sie die Namespaces prod und dev in Ihrem Cluster.

Klicken Sie auf Fortschritt prüfen. Lab-Ressourcen erstellen

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.

  1. Erstellen Sie ein leeres Repository mit dem Namen sample-app in Cloud Source Repositories.

  2. Klonen Sie sample-app in Cloud Shell.

  3. Kopieren Sie mit dem folgenden Befehl den Beispielcode in das Verzeichnis sample-app:

cd ~ gsutil cp -r gs://spls/gsp330/sample-app/* sample-app
  1. Der folgende Befehl ersetzt automatisch die Platzhalter <your-region> und <your-zone> in den Dateien cloudbuild-dev.yaml und cloudbuild.yaml durch die Region und Zone, die Ihrem Projekt zugewiesen sind:
export REGION="{{{project_0.default_region | REGION}}}" export ZONE="{{{project_0.default_zone | ZONE}}}" for file in sample-app/cloudbuild-dev.yaml sample-app/cloudbuild.yaml; do sed -i "s/<your-region>/${REGION}/g" "$file" sed -i "s/<your-zone>/${ZONE}/g" "$file" done
  1. 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.

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

  3. Überprüfen Sie, ob der Beispielcode und die Zweige im Quell-Repository gespeichert sind.

Quell-Repository mit Zweigen

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. Repository in Cloud Source Repositories erstellen

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.

  1. 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
  2. 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. Cloud Build-Trigger erstellen

Aufgabe 4: Erste Versionen der Anwendung bereitstellen

In diesem Abschnitt erstellen Sie eine erste Version der Produktionsanwendung und der Entwicklungsanwendung.

Erstes Entwicklungs-Deployment erstellen

  1. 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 Datei cloudbuild-dev.yaml die <version> in Zeile 9 und 13 durch v1.0.

  2. 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 Variable PROJECT_ID durch die tatsächliche Projekt-ID im Container-Image-Namen.

Hinweis: Achten Sie darauf, dass der Container-Image-Name in der Datei dev/deployment.yaml dem Namen in der Datei cloudbuild-dev.yaml entspricht.
  1. 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.

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

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

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

  1. Wechseln Sie zum master-Zweig. Prüfen Sie die Datei cloudbuild.yaml, die sich im Verzeichnis sample-app befindet, um sich die Schritte des Build-Prozesses anzusehen. Ersetzen Sie in der Datei cloudbuild.yaml die <version> in Zeile 11 und 16 durch v1.0.

  2. 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 Variable PROJECT_ID durch die tatsächliche Projekt-ID im Container-Image-Namen.

Hinweis: Achten Sie darauf, dass der Container-Image-Name in der Datei prod/deployment.yaml dem Namen in der Datei cloudbuild.yaml entspricht.
  1. 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.

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

  3. Führen Sie eine Freigabe des Deployments production-deployment im prod-Namespace für einen LoadBalancer-Dienst mit dem Namen prod-deployment-service auf Port 8080 durch. Legen Sie den Zielport des Containers auf den im Dockerfile angegebenen Port fest.

  4. 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. Erste Versionen der Anwendung bereitstellen

Aufgabe 5: Zweite Versionen der Anwendung bereitstellen

In diesem Abschnitt erstellen Sie eine zweite Version der Produktionsanwendung und der Entwicklungsanwendung.

Zweites Entwicklungs-Deployment erstellen

  1. Wechseln Sie zurück zum dev-Zweig.
Hinweis: Bevor Sie fortfahren, achten Sie darauf, dass Sie sich im dev-Zweig befinden, um ein Deployment für die dev-Umgebung zu erstellen.
  1. Aktualisieren Sie in der Datei main.go die Funktion main() so:
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. Fügen Sie in der Datei main.go die folgende Funktion hinzu:
func redHandler(w http.ResponseWriter, r *http.Request) { img := image.NewRGBA(image.Rect(0, 0, 100, 100)) draw.Draw(img, img.Bounds(), &image.Uniform{color.RGBA{255, 0, 0, 255}}, image.ZP, draw.Src) w.Header().Set("Content-Type", "image/png") png.Encode(w, img) }
  1. Prüfen Sie die Datei cloudbuild-dev.yaml, um sich die Schritte des Build-Prozesses anzusehen. Aktualisieren Sie die Version des Docker-Image auf v2.0.

  2. Gehen Sie zur Datei dev/deployment.yaml und aktualisieren Sie den Container-Image-Namen auf die neue Version (v2.0).

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

  4. Ü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 Image v2.0 verwendet.

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

Hinweis: Es kann einige Minuten dauern, bis die Aktualisierungen an den Load Balancer weitergegeben werden.

Zweites Produktions-Deployment erstellen

  1. Wechseln Sie zum master-Zweig.
Hinweis: Bevor Sie fortfahren, achten Sie darauf, dass Sie sich im master-Zweig befinden, um ein Deployment für die master-Umgebung zu erstellen.
  1. Aktualisieren Sie in der Datei main.go die Funktion main() so:
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. Fügen Sie in der Datei main.go die folgende Funktion hinzu:
func redHandler(w http.ResponseWriter, r *http.Request) { img := image.NewRGBA(image.Rect(0, 0, 100, 100)) draw.Draw(img, img.Bounds(), &image.Uniform{color.RGBA{255, 0, 0, 255}}, image.ZP, draw.Src) w.Header().Set("Content-Type", "image/png") png.Encode(w, img) }
  1. Prüfen Sie die Datei cloudbuild.yaml, um sich die Schritte des Build-Prozesses anzusehen. Aktualisieren Sie die Version des Docker-Image auf v2.0.

  2. Gehen Sie zur Datei prod/deployment.yaml und aktualisieren Sie den Container-Image-Namen auf die neue Version (v2.0).

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

  4. Ü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 Image v2.0 verwendet.

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

Hinweis: Es kann einige Minuten dauern, bis die Aktualisierungen an den Load Balancer weitergegeben werden.

Sehr gut. Sie haben erfolgreich eine voll funktionsfähige CI/CD-Pipeline für Produktion und Entwicklung erstellt.

Klicken Sie auf Fortschritt prüfen. Zweite Versionen der Anwendung bereitstellen

Aufgabe 6: Rollback des Produktions-Deployments durchführen

In diesem Abschnitt führen Sie ein Rollback des Produktions-Deployments auf eine vorherige Version durch.

  1. Führen Sie ein Rollback von production-deployment auf die Version v1.0 der Anwendung durch.
Tipp: Anhand des Verlaufs in Cloud Build können Sie ganz einfach ein Rollback des Deployments auf eine vorherige Version durchführen oder die Deployments neu erstellen.
  1. 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 Antwort 404 auf der Seite erhalten.

Klicken Sie auf Fortschritt prüfen. Rollback des Produktions-Deployments durchführen

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.

Skill-Logo „DevOps-Workflows implementieren“

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.