Diese Reihe von Anleitungen richtet sich an IT-Administratoren und Operatoren, die moderne Anwendungsumgebungen, die in Google Kubernetes Engine (GKE) ausgeführt werden, bereitstellen, ausführen und verwalten möchten. In diesen Anleitungen erfahren Sie, wie Sie Monitoring und Benachrichtigungen konfigurieren, Arbeitslasten skalieren und Fehler simulieren – und zwar anhand der Beispiel-Mikrodienstanwendung „Cymbal Bank“:
- Cluster erstellen und Beispielanwendung bereitstellen (diese Anleitung)
- Umgebungen mit Google Cloud Managed Service for Prometheus überwachen
- Arbeitslasten skalieren
- Fehler simulieren
Übersicht und Ziele
Cymbal Bank verwendet Python und Java, um die verschiedenen Dienste auszuführen, und enthält ein PostgreSQL-Backend. Sie müssen keine Erfahrung mit diesen Sprachen oder Datenbankplattformen haben, um die Reihe der Anleitungen durchzugehen, da Cymbal Bank nur eine Beispielanwendung ist, die zeigt, wie GKE die Anforderungen Ihres Unternehmens erfüllen kann.
In dieser Anleitung erfahren Sie, wie Sie einen einzelnen GKE-Cluster erstellen und eine auf Mikrodiensten basierende Beispielanwendung namens „Cymbal Bank“ in einem GKE-Cluster bereitstellen. Sie lernen, wie Sie die folgenden Aufgaben ausführen:
Erstellen Sie einen GKE-Cluster, der Autopilot verwendet.
Stellen Sie eine Beispielanwendung namens „Cymbal Bank“ bereit, die auf Mikrodiensten basiert.
Entdecken Sie mit der Google Cloud Console die von der Beispielanwendung „Cymbal Bank“ verwendeten GKE-Ressourcen.
Kosten
Wenn Sie GKE aktivieren und die Beispielanwendung „Cymbal Bank“ für diese Reihe von Anleitungen bereitstellen, fallen für GKE in Google Cloud Gebühren pro Cluster an. Weitere Informationen finden Sie auf der Preisseite, bis Sie GKE deaktivieren oder das Projekt löschen.
Sie sind auch für andere Google Cloud-Kosten verantwortlich, die während der Ausführung der Cymbal Bank-Beispielanwendung anfallen, z. B. Gebühren für Compute Engine-VMs und Load-Balancer.
Vorbereitung
Führen Sie in dieser ersten Anleitung der Reihe alle folgenden „Vorab“-Einrichtungsschritte aus, bevor Sie loslegen. Sie müssen die folgenden „Vorab“-Schritte nur einmal ausführen.
Shell und Tools konfigurieren
In dieser Reihe von Anleitungen verwenden Sie die folgenden Tools, um Ihre Umgebung bereitzustellen und zu verwalten:
- gcloud CLI: Erstellen und Verwalten von GKE-Clustern und ‑Flotten sowie anderer Google Cloud-Dienste.
kubectl
: Verwaltet Kubernetes, das von GKE verwendete Cluster-Orchestrierungssystem.
Richten Sie die Google Cloud CLI und kubectl
in einer der folgenden Entwicklungsumgebungen ein, um die Befehle auf dieser Seite auszuführen:
Cloud Shell
Um ein Onlineterminal mit bereits eingerichteter gcloud CLI und kubectl
zu nutzen aktivieren Sie Cloud Shell.
Unten auf dieser Seite wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Lokale Shell
So verwenden Sie eine lokale Entwicklungsumgebung:
- Installieren Sie die gcloud CLI.
- Initialisieren Sie die gcloud CLI.
Installieren Sie
kubectl
die gcloud CLI:gcloud components install kubectl
Projekt einrichten
Führen Sie die folgenden Schritte aus, um ein Google Cloud-Projekt einzurichten, einschließlich der Aktivierung der Abrechnung und der GKE-Dienste. In diesem Projekt aktivieren Sie GKE.
Möglicherweise muss ein Google Cloud-Administrator in Ihrer Organisation Ihnen Zugriff gewähren, damit Sie ein Projekt erstellen oder verwenden und APIs aktivieren können.
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf:
Erstellen Sie ein Projekt oder wählen Sie eines aus. In diesem Projekt aktivieren Sie GKE.
Aktivieren Sie bei entsprechender Aufforderung die GKE API.
Warten Sie, bis die API und die zugehörigen Dienste aktiviert worden sind. Dieser Vorgang kann einige Minuten dauern.
Make sure that billing is enabled for your Google Cloud project.
IAM-Rollen zuweisen
Wenn Sie der Projektinhaber sind (z. B. wenn Sie das Projekt selbst erstellt haben), haben Sie bereits alle Berechtigungen, die Sie für die Durchführung dieser Anleitungen benötigen. Wenn Sie nicht der Inhaber sind, prüfen Sie, ob Ihr Google Cloud-Konto die erforderlichen IAM-Rollen für das ausgewählte Projekt für diese Anleitungen hat. Möglicherweise muss Ihnen ein Google Cloud-Administrator Ihrer Organisation die erforderlichen Rollen zuweisen.
Ersetzen Sie in den folgenden Befehlen PROJECT_ID
durch die automatisch generierte ID des Projekts, das Sie im vorherigen Abschnitt erstellt oder ausgewählt haben. Die Projekt-ID unterscheidet sich oft vom Projektnamen. Ihr Projekt könnte beispielsweise scalable-apps sein, Ihre Projekt-ID jedoch scalable-apps-567123.
Grant roles to your user account. Run the following command once for each of the following
IAM roles:
roles/resourcemanager.projectIamAdmin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/iam.securityAdmin, roles/serviceusage.serviceUsageAdmin, roles/container.admin, roles/logging.logWriter, roles/gkehub.admin, roles/viewer, roles/monitoring.viewer
$ gcloud projects add-iam-policy-binding PROJECT_ID --member="USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
Klonen Sie die Beispielanwendung
Klonen Sie das Git-Repository mit allen Beispielmanifesten für die Cymbal Bank:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos
cd bank-of-anthos/
Cluster erstellen
Nachdem Sie alle erforderlichen Schritte in den vorherigen Abschnitten ausgeführt haben, können Sie jetzt einen GKE-Cluster erstellen und eine Beispielanwendung bereitstellen.
GKE ist ein verwalteter Kubernetes-Dienst, mit dem Sie containerisierte Anwendungen bereitstellen und betreiben können. Eine GKE-Umgebung besteht aus Knoten, bei denen es sich um virtuelle Compute Engine-Maschinen (VMs) handelt, die zusammen einen Cluster bilden.
Sie erstellen nun einen GKE-Cluster, den Sie in den restlichen Anleitungen dieser Reihe verwenden werden:
gcloud container clusters create-auto scalable-apps \ --project=PROJECT_ID \ --region=REGION
Ersetzen Sie dabei Folgendes:
PROJECT_ID
durch die automatisch generierte ID des Projekts ersetzen, das Sie im vorherigen Abschnitt erstellt haben. Die Projekt-ID unterscheidet sich oft vom Projektnamen. Ihr Projekt könnte beispielsweise scalable-apps sein, Ihre Projekt-ID jedoch scalable-apps-567123.REGION
durch die Region, in der Sie den Cluster erstellen möchten, z. B.us-central1
.
Es dauert einige Minuten, bis der Cluster erstellt ist und geprüft wurde, ob alles richtig funktioniert.
In diesen Anleitungen verwenden Sie Cluster im Autopilot-Modus sowie einige Standard-IP-Adressbereiche, wenn Sie Cluster erstellen. Eine Produktionsbereitstellung Ihrer eigenen Anwendungen erfordert eine sorgfältigere IP-Adressplanung. Im Autopilot-Modus verwaltet Google Ihre Clusterkonfiguration, einschließlich Autoskalierung, Sicherheit und andere vorkonfigurierte Einstellungen. Cluster im Autopilot-Modus sind für die Ausführung der meisten Produktionsarbeitslasten optimiert und Rechenressourcen bereitstellen, die auf Ihren Kubernetes-Manifesten basieren.
Cymbal Bank bereitstellen
Sie verpacken Anwendungen (auch Arbeitslasten genannt) in Container. Containergruppen werden als Pods auf Ihren Knoten bereitgestellt.
In dieser Anleitungsreihe stellen Sie eine auf Mikrodiensten basierende Beispielanwendung namens „Cymbal Bank“ in einem oder mehreren GKE-Clustern bereit. Cymbal Bank verwendet Python und Java, um die verschiedenen Dienste auszuführen, und enthält ein PostgreSQL-Backend. Sie müssen keine Erfahrung mit diesen Sprachen oder Datenbankplattformen haben, um die Anleitungsserie durchzugehen. Cymbal Bank ist nur eine Beispielanwendung, die zeigt, wie GKE die Anforderungen Ihres Unternehmens ansprechen kann.
Wenn Sie Cymbal Bank als Teil dieser Anleitungen verwenden, werden die folgenden Dienste in Ihrem GKE-Cluster bereitgestellt:
Dienst | Sprache | Beschreibung |
---|---|---|
frontend |
Python | Stellt einen HTTP-Server zur Bereitstellung der Website bereit. Enthält eine Anmelde-, eine Registrierungs- und eine Startseite. |
ledger-writer |
Java | Akzeptiert und validiert eingehende Transaktionen, bevor sie in das Verzeichnis geschrieben werden. |
balance-reader |
Java | Stellt einen effizienten lesbaren Cache von Nutzerausgleichen bereit, wie aus ledger-db gelesen. |
transaction-history |
Java | Bietet einen effizienten lesbaren Cache früherer Transaktionen, wie aus ledger-db gelesen. |
ledger-db |
PostgreSQL | Hauptbuch mit allen Transaktionen. Option zum vorab ausfüllen mit Transaktionen für Demonutzer. |
user-service |
Python | Verwaltet Nutzerkonten und Authentifizierung. Signiert JWTs, die von anderen Diensten zur Authentifizierung verwendet werden. |
contacts |
Python | Liste der anderen Konten, die mit einem Nutzer verknüpft sind. Wird für das Drop-down-Menü in den Formularen „Zahlung senden“ und „Einzahlungen“ verwendet. |
accounts-db |
PostgreSQL | Datenbank für Nutzerkonten und zugehörige Daten. Option zum vorab ausfüllen mit Demonutzern |
loadgenerator |
Python/Locust | Sendet kontinuierlich Nutzer nachahmende Anfragen an das Frontend. Es werden regelmäßig neue Konten erstellt und Transaktionen zwischen ihnen simuliert. |
Führen Sie die folgenden Schritte aus, um Cymbal Bank in Ihrem GKE-Cluster bereitzustellen:
Cymbal Bank verwendet JSON Web Tokens (JWTs) für die Nutzerauthentifizierung. JWTs verwenden asymmetrische Schlüsselpaare, um Tokens zu signieren und zu überprüfen. In der Cymbal Bank erstellt und signiert
userservice
Tokens mit einem privaten RSA-Schlüssel, wenn sich ein Nutzer anmeldet. Die anderen Dienste verwenden den entsprechenden öffentlichen Schlüssel, um den Nutzer zu authentifizieren.Erstellen Sie ein RS256-JWT mit einer Stärke von 4.096 Bit:
openssl genrsa -out jwtRS256.key 4096 openssl rsa -in jwtRS256.key -outform PEM -pubout -out jwtRS256.key.pub
Laden Sie bei Bedarf die OpenSSL-Tools für Ihre Plattform herunter und installieren Sie sie.
In einem Kubernetes-Secret können sensible Daten wie Schlüssel oder Passwörter gespeichert werden. Arbeitslasten, die in Ihrem Cluster ausgeführt werden, können dann auf das Secret zugreifen, um die sensiblen Daten abzurufen, anstatt dass sie in die Anwendung hartcodiert werden.
Erstellen Sie ein Kubernetes-Secret aus der Schlüsseldatei, die Sie im vorherigen Schritt erstellt haben, damit Cymbal Bank sie für Authentifizierungsanfragen verwenden kann:
kubectl create secret generic jwt-key --from-file=./jwtRS256.key --from-file=./jwtRS256.key.pub
Stellen Sie Cymbal Bank in Ihrem Cluster bereit. Mit dem folgenden Befehl werden alle Manifestdateien im
kubernetes-manifests
-Verzeichnis bereitgestellt. In jeder Manifestdatei wird einer der Dienste bereitgestellt und konfiguriert:kubectl apply -f kubernetes-manifests/accounts-db.yaml kubectl apply -f kubernetes-manifests/balance-reader.yaml kubectl apply -f kubernetes-manifests/config.yaml kubectl apply -f kubernetes-manifests/contacts.yaml kubectl apply -f extras/postgres-hpa/kubernetes-manifests/frontend.yaml kubectl apply -f kubernetes-manifests/ledger-db.yaml kubectl apply -f kubernetes-manifests/ledger-writer.yaml kubectl apply -f extras/postgres-hpa/loadgenerator.yaml kubectl apply -f kubernetes-manifests/transaction-history.yaml kubectl apply -f kubernetes-manifests/userservice.yaml
Wenn die Manifeste auf Ihren Cluster angewendet werden, werden möglicherweise Nachrichten zu Autopilot-Limits in der
kubectl
-Ausgabe angezeigt. Autopilot verwendet die in Ihrer Arbeitslastkonfiguration angegebenen Ressourcenanfragen, um die Knoten zu konfigurieren, die Ihre Arbeitslasten ausführen. Autopilot erzwingt Mindest- und maximale Ressourcenanforderungen basierend auf der Compute-Klasse oder der Hardwarekonfiguration, die Ihre Arbeitslasten verwenden. Wenn Sie für einige Container keine Anfragen angeben, weist Autopilot Standardwerte zu, damit diese Container ordnungsgemäß ausgeführt werden.Sehen Sie sich das folgende Beispielmanifest für den
frontend
-Dienst an:Dieses Manifest für den
frontend
-Dienst fordert100m
CPUs und64Mi
an und legt Limits von250m
CPUs und128Mi
pro Pod fest.Wenn Sie eine Arbeitslast in einem Autopilot-Cluster bereitstellen, prüft GKE die Arbeitslastkonfiguration anhand der zulässigen Mindest- und Höchstwerte für die ausgewählte Compute-Klasse oder Hardwarekonfiguration (wie z. B. GPUs). Wenn Ihre Anfragen unter dem Mindestwert liegen, ändert Autopilot Ihre Arbeitslastkonfiguration automatisch, um Ihre Anfragen innerhalb des zulässigen Bereichs zu bringen. Diese Meldungen geben an, dass die entsprechenden Limits automatisch zugewiesen werden.
Warten Sie, bis die Pods bereit sind. Verwenden Sie
kubectl
, um den Status der Pods zu prüfen:kubectl get pods
Die
STATUS
-Spalte wechselt vonPending
zuContainerCreating
. Es dauert einige Minuten, bis alle Pods denRunning
-Status haben, wie in der folgenden Beispielausgabe zu sehen:NAME READY STATUS RESTARTS AGE accounts-db-6f589464bc-6r7b7 1/1 Running 0 99s balancereader-797bf6d7c5-8xvp6 1/1 Running 0 99s contacts-769c4fb556-25pg2 1/1 Running 0 98s frontend-7c96b54f6b-zkdbz 1/1 Running 0 98s ledger-db-5b78474d4f-p6xcb 1/1 Running 0 98s ledgerwriter-84bf44b95d-65mqf 1/1 Running 0 97s loadgenerator-559667b6ff-4zsvb 1/1 Running 0 97s transactionhistory-5569754896-z94cn 1/1 Running 0 97s userservice-78dc876bff-pdhtl 1/1 Running 0 96s
Wenn alle Pods den
Running
-Status haben, fahren Sie mit dem nächsten Schritt fort. Es dauert einige Minuten, bis alle Pods den StatusRunning
haben. Es ist normal, dass einige Pods den0/1
-StatusREADY
melden, bis die Cymbal-Bank bereit ist, Traffic korrekt zu verarbeiten.Der
frontend
-Dienst stellt einen HTTP-Server für die Bereitstellung der Website der Cymbal Bank bereit, einschließlich der Anmelde-, Registrierungs- und Startseite. Ein Ingress-Objekt definiert Regeln zum Weiterleiten von HTTP(S)-Traffic an Anwendungen, die in einem Cluster mit einem Google Cloud HTTP(S)-Load Balancer ausgeführt werden.Rufen Sie die externe IP-Adresse für den
frontend
-Ingress ab:kubectl get ingress frontend | awk '{print $4}'
Öffnen Sie im Fenster eines Webbrowsers die IP-Adresse, die in der Ausgabe des
kubectl get ingress
-Befehls angezeigt wird, um auf Ihre Cymbal Bank-Instanz zuzugreifen.Die Standardanmeldedaten werden automatisch ausgefüllt, sodass Sie sich in der App anmelden und sich einige der Beispieltransaktionen und ‑salden ansehen können. Sie müssen nichts weiter tun, als zu prüfen, ob Cymbal-Bank ordnungsgemäß funktioniert. Es kann ein bis zwei Minuten dauern, bis alle Dienste richtig kommunizieren und Sie sich anmelden können.
Bereitstellung untersuchen
Nachdem Sie einen GKE-Cluster erstellt und Arbeitslasten bereitgestellt haben, müssen Sie möglicherweise Einstellungen ändern oder die Leistung Ihrer Anwendung prüfen. In diesem Abschnitt erfahren Sie, wie Sie in der Google Cloud Console die Ressourcen prüfen, die zu Ihrem Cluster und der Cymbal Bank-Beispielanwendung gehören.
Cluster
In dieser Anleitung haben Sie einen GKE-Cluster erstellt und die Cymbal Bank-Arbeitslasten bereitgestellt.
Rufen Sie in der Google Cloud Console auf der Seite „Google Kubernetes Engine“ die Seite Cluster auf.
Klicken Sie auf den neu bereitgestellten Cluster scalable-apps. Auf der Seite mit den Clusterdetails sehen Sie grundlegende Clusterdetails sowie die Netzwerk- und Sicherheitskonfigurationen des Clusters. Im Abschnitt Funktionen sehen Sie außerdem, welche GKE-Funktionen in diesem Cluster aktiviert sind.
Beobachtbarkeit
Sie können sich grundlegende Messwerte zum Zustand und zur Leistung Ihres Clusters ansehen. Im nächsten Tutorial dieser Reihe aktivieren Sie Google Cloud Managed Service for Prometheus für ein detaillierteres Monitoring und eine bessere Beobachtbarkeit.
Wählen Sie in der Google Cloud Console auf der Seite Cluster der Google Kubernetes Engine Ihren Cluster aus und gehen Sie dann zum Tab Beobachtbarkeit.
Sehen Sie sich einige der Messwertgrafiken für Elemente wie CPU und Arbeitsspeicher an. In dieser Ansicht können Sie die Leistung der verschiedenen Teile Ihrer Clusterarbeitslasten überwachen, ohne zusätzliche Monitoringfunktionen bereitstellen zu müssen.
Wenn Sie Logs aufrufen möchten, die von Ihrem Cluster gestreamt werden, wählen Sie den Tab Logs aus. Sie können nach dem Schweregrad der Protokolle filtern oder eigene Filter erstellen, um bestimmte Namespaces, Dienste oder Pods anzuzeigen. Wie bei Pod-Warnungen und -Ereignissen kann diese zusammengeführte Ansicht von Protokollen aus Ihrem Cluster dazu beitragen, Probleme schnell über die Google Cloud Console zu beheben.
Es ist normal, dass bei der Erstimplementierung von Cymbal Bank Protokolleinträge angezeigt werden, wenn einige Dienste noch nicht kommunizieren können.
Wählen Sie den Tab App-Fehler aus. Während der Ausführung Ihrer Arbeitslasten können Sie die zusammengefassten Warnungen und Ereignisse in der Google Cloud Console aufrufen. Dieser Ansatz kann bei der Fehlerbehebung helfen, ohne dass Sie einzeln eine Verbindung zum Cluster, zu Knoten oder zu Pods herstellen müssen.
Es ist normal, dass bei der Erstimplementierung von Cymbal Bank Ereignisse protokolliert werden, wenn einige Dienste noch nicht kommunizieren können.
Arbeitslasten
Auf der GKE-Seite der Google Cloud Console finden Sie den Bereich Arbeitslasten mit einer zusammengefassten Ansicht der Arbeitslasten, die auf allen Ihren GKE-Clustern ausgeführt werden.
Rufen Sie in der Google Cloud Console auf der Seite „Google Kubernetes Engine“ die Seite Arbeitslasten auf.
Auf dem Tab Übersicht sehen Sie eine Liste der Arbeitslasten und Namespaces aus dem GKE-Cluster. Sie können nach Namespaces filtern, um zu sehen, welche Arbeitslasten in den einzelnen Namespaces ausgeführt werden.
Dienste und Ingress
Die Ansicht Services und Ingress zeigt die Service- und Ingress-Ressourcen des Projekts an. Ein Service stellt eine Reihe von Pods als Netzwerkdienst mit einem Endpunkt bereit, während ein Ingress den externen Zugriff auf die Dienste in einem Cluster verwaltet.
Rufen Sie in der Google Cloud Console auf der Seite „Google Kubernetes Engine“ die Seite Gateways, Dienste und Ingress auf.
Klicken Sie auf den Tab Ingress und suchen Sie nach dem eingehenden Traffic mit dem Namen
frontend
, um den Cymbal Bank-Ingress zu finden. Ein Ingress verwaltet den eingehenden Traffic für Ihre Anwendung. Sie können sich Informationen zum Load Balancer, zu Ports und zu externen Endpunkten ansehen.Klicken Sie auf die IP-Adresse für den
frontend
-Ingress, z. B.198.51.100.143:80
. Über diese Adresse wird die Cymbal Bank-Weboberfläche geöffnet.
Bereinigen
Die Cymbal Bank-Anleitungen sind so konzipiert, dass sie nacheinander abgeschlossen werden. Während Sie die einzelnen Anleitungen durcharbeiten, lernen Sie neue Fähigkeiten kennen und nutzen zusätzliche Google Cloud-Produkte und -Dienste.
Wenn Sie eine Pause beim Durcharbeiten der Anleitungen einlegen möchten und nicht möchten, dass Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen in Rechnung gestellt werden, löschen Sie das erstellte Projekt.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
Im nächsten Tutorial erfahren Sie, wie Sie Ihre Arbeitslasten in GKE mit Google Cloud Managed Service for Prometheus und Cloud Monitoring überwachen.