1. Übersicht
In diesem Lab stellen Sie einen zweistufigen Mikrodienst mit einem Pod bereit, der in GKE Autopilot ausgeführt wird, und verbinden ihn mit einer privaten Instanz der AlloyDB-Datenbank. Die Anwendung „Customer Service“ ist Teil des Cymbal Eats-Systems und bietet Funktionen zum Verwalten registrierter Nutzer. Die Anwendung „Customer Service“ ist ein Java-basierter Mikrodienst, der das Quarkus-Framework verwendet.

AlloyDB unterstützt die Netzwerkkonnektivität über private, interne IP-Adressen, die für den Zugriff auf private Dienste konfiguriert sind.
Der Zugriff auf private Dienste wird als VPC-Peering-Verbindung zwischen Ihrem VPC-Netzwerk und dem zugrunde liegenden VPC-Netzwerk von Google Cloud implementiert, in dem sich Ihre AlloyDB-Ressourcen (Cluster und Instanzen) befinden. Über die private Verbindung können Ressourcen in Ihrem VPC-Netzwerk ausschließlich über interne IP-Adressen mit den AlloyDB-Ressourcen kommunizieren, auf die sie zugreifen. Die Ressourcen in Ihrem VPC-Netzwerk benötigen keinen Internetzugriff oder keine externen IP-Adressen, um AlloyDB-Ressourcen zu erreichen.

Was ist GKE Autopilot?
GKE Autopilot ist ein Betriebsmodus in GKE, in dem Google Ihre Clusterkonfiguration verwaltet, einschließlich Knoten, Skalierung, Sicherheit und anderer vorkonfigurierter Einstellungen. Autopilot-Cluster sind für die Ausführung der meisten Produktionsarbeitslasten optimiert und stellen Rechenressourcen basierend auf Ihren Kubernetes-Manifesten bereit. Die optimierte Konfiguration folgt den Best Practices und Empfehlungen der GKE für die Einrichtung von Clustern und Arbeitslasten, Skalierbarkeit und Sicherheit. Eine Liste der integrierten Einstellungen finden Sie in der Vergleichstabelle für Autopilot und Standard.
Was ist AlloyDB?
Ein vollständig verwalteter PostgreSQL-kompatibler Datenbankdienst für die anspruchsvollsten Datenbankarbeitslasten Ihres Unternehmens. AlloyDB kombiniert das Beste von Google mit einer der beliebtesten Open-Source-Datenbank-Engines, PostgreSQL. Das sorgt für hervorragende Leistung, Skalierbarkeit und Verfügbarkeit.
Lerninhalte
In diesem Lab lernen Sie Folgendes:
- Private Instanz der AlloyDB-Datenbank erstellen
- Anwendung in einem GKE Autopilot-Cluster bereitstellen, die eine Verbindung zur AlloyDB-Instanz herstellt
Vorbereitung
- Für dieses Lab wird davon ausgegangen, dass Sie mit der Cloud Console und mit Cloud Shell-Umgebungen vertraut sind.
- Vorherige Erfahrung mit GKE und AlloyDB ist hilfreich, aber nicht erforderlich.
2. Einrichtung und Anforderungen
Cloud-Projekt einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Er ist ein String, der von Google APIs nicht verwendet wird. Sie können ihn jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann also nicht geändert werden, nachdem sie festgelegt wurde. Die Cloud Console generiert automatisch einen eindeutigen String. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen. Sie wird in der Regel als
PROJECT_IDangegeben. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie eine eigene ID verwenden und prüfen, ob sie verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Es gibt noch einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/APIs zu verwenden. Die Durchführung dieses Codelabs sollte nicht viel kosten, wenn überhaupt. Wenn Sie Ressourcen herunterfahren möchten, damit Ihnen nach dieser Anleitung keine Kosten entstehen, können Sie die erstellten Ressourcen oder das gesamte Projekt löschen. Neue Google Cloud-Nutzer können das kostenlose Testprogramm im Wert von 300$ nutzen.
Umgebung einrichten
Klicken Sie rechts neben der Suchleiste auf das Symbol, um Cloud Shell zu aktivieren.

Klonen Sie das Repository und wechseln Sie zum Verzeichnis. Kopieren Sie den folgenden Befehl und fügen Sie ihn in das Terminal ein. Drücken Sie die Eingabetaste:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Stellen Sie die erforderlichen Abhängigkeiten mit gke-lab-setup.sh bereit.
Die folgenden Ressourcen werden erstellt:
- AlloyDB-Cluster und ‑Instanz
- Artifact Registry zum Speichern von Container-Images für Cloud Run-Job und Customer Service
- VPC-Zugriffsconnector für Cloud Run-Job zur Kommunikation mit der AlloyDB-Datenbank
- Cloud Run-Job zum Erstellen der AlloyDB-Datenbank
- GKE Autopilot-Cluster
./gke-lab-setup.sh
Wenn Sie zur Autorisierung aufgefordert werden, klicken Sie auf „Autorisieren“, um fortzufahren.

Die Einrichtung dauert etwa 10 Minuten. Sehen Sie sich das Einrichtungsskript an, mit dem die erforderlichen Abhängigkeiten erstellt werden.
gke-lab-setup.sh
Warten Sie, bis das Skript abgeschlossen ist und die folgende Ausgabe angezeigt wird, bevor Sie mit den nächsten Schritten fortfahren.
Job [db-job] has successfully been created. To execute this job, use: gcloud beta run jobs execute db-job OK Creating execution... Done. OK Provisioning resources... Done. Execution [db-job-k94ps] has successfully started running.
3. Anwendung bereitstellen
AlloyDB-Cluster prüfen
Führen Sie den folgenden Befehl aus, um die erstellte AlloyDB-Instanz zu prüfen:
gcloud alloydb instances describe customer-instance --cluster=customer-cluster --region=us-central1
Beispielausgabe:
createTime: '2023-01-06T14:40:07.213288293Z' instanceType: PRIMARY ipAddress: 10.77.176.2 machineConfig: cpuCount: 2 name: projects/cymbal-eats-20056-16671/locations/us-central1/clusters/customer-cluster/instances/customer-instance nodes: - zoneId: us-central1-f queryInsightsConfig: queryPlansPerMinute: 5 queryStringLength: 1024 recordApplicationTags: true recordClientAddress: true reconciling: false state: READY uid: df90d57d-88df-49be-a626-6dfec0513e64 updateTime: '2023-01-06T14:49:40.907977843Z' writableNode: zoneId: us-central1-b
Sehen Sie sich die verfügbaren Funktionen(Query Insight, Monitoring) in der Console an.

GKE Autopilot-Cluster prüfen
Legen Sie Umgebungsvariablen für das Projekt fest:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
Im Rahmen der Ersteinrichtung wurde der Cluster mit dem folgenden Befehl erstellt. Sie müssen diesen Befehl nicht ausführen:
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Führen Sie den Befehl aus, um den erstellten GKE Autopilot-Cluster anzusehen:
gcloud container clusters list
Beispielausgabe:

Führen Sie den Befehl aus, um die Anmeldedaten für den Cluster zu speichern:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Anwendung bereitstellen
Als Nächstes stellen Sie eine Customer Service-Anwendung bereit.
Die Anwendung „Customer Service“ ist ein Java-basierter Mikrodienst, der das Quarkus-Framework verwendet.
Wechseln Sie zum Ordner cymbal-eats/customer-service und führen Sie die Befehle aus, um das Container-Image zu erstellen und hochzuladen:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
Öffnen Sie Cloud Build in der Console, um die Details für den letzten Build zu prüfen.

Legen Sie die Umgebungsvariable unten mit dem Wert der privaten IP-Adresse von AlloyDB fest:
export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
--cluster=customer-cluster \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo $DB_HOST
Führen Sie die folgenden Befehle aus, um ein Kubernetes-Secret-Objekt zu erstellen, in dem die Datenbankanmeldedaten gespeichert werden, die von der Customer Service-Anwendung verwendet werden, um eine Verbindung zur Datenbank herzustellen:
DB_NAME=customers
DB_USER=postgres
DB_PASSWORD=password123
kubectl create secret generic gke-alloydb-secrets \
--from-literal=database=$DB_NAME \
--from-literal=username=$DB_USER \
--from-literal=password=$DB_PASSWORD \
--from-literal=db_host=$DB_HOST
Führen Sie den Befehl aus, um CUSTOMER_SERVICE_IMAGE in der Datei deployment.yaml zu ersetzen:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Führen Sie den Befehl aus, um die Anwendung bereitzustellen:
kubectl apply -f customer-service-deployment.yaml
Es dauert einige Zeit, bis die Anwendung den Status „Wird ausgeführt“ erreicht.
Führen Sie den Befehl aus, um eine externe IP-Adresse zu erstellen, die in den Testschritten verwendet wird:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Führen Sie den Befehl aus, um die erstellten Ressourcen zu prüfen:
kubectl get all
Beispielausgabe:

4. App testen
Führen Sie die folgenden Befehle aus, um die Customer Service-URL zu speichern.
kubectl get svc
Legen Sie die Umgebungsvariable unten mit dem Wert der externen IP-Adresse aus der vorherigen Ausgabe fest.
CUSTOMER_SERVICE_URL=$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Führen Sie die folgenden Befehle aus, um einen neuen Kundendatensatz zu erstellen:
curl -X POST $CUSTOMER_SERVICE_URL/customer \
-H 'Content-Type: application/json' \
-d '{"id": "id1","rewardPoints": 3,"address": "1845 Denise St","city": "Mountain View","createDateTime": "2022-11-11T15:56:45.487566","email": "ajensen9090+eats@gmail.com","name": "Angela Jensen","state": "CA","updateDateTime": "2022-11-11T15:56:45.866125","zip": "94043"}'
Führen Sie den obigen Befehl mehrmals aus, um Logmeldungen zu generieren, die Sie später im Log-Explorer ansehen.
Kundendatensätze prüfen
Führen Sie die folgenden Befehle aus, um den erstellten Kundendatensatz anzusehen.
curl $CUSTOMER_SERVICE_URL/customer | jq
Beispielausgabe:
[
{
"address": "1845 Denise St",
"city": "Mountain View",
"createDateTime": "2023-01-06T16:13:19.118744",
"email": "ajensen9090+eats@gmail.com",
"id": "id1",
"name": "Angela Jensen",
"rewardPoints": 3,
"state": "CA",
"updateDateTime": "2023-01-06T16:13:19.118896",
"zip": "94043"
}
]
GKE-Arbeitslasten und ‑Dienste prüfen
Öffnen Sie Kubernetes Engine in der Cloud Console und prüfen Sie die erstellten Arbeitslasten und Dienste.


Anwendungslogs
Öffnen Sie den Log-Explorer und suchen Sie nach Logs, die den Text „Customer already exists“ (Kunde ist bereits vorhanden) enthalten.

5. Glückwunsch!
Sie haben das Codelab abgeschlossen.
Behandelte Themen:
- Private Instanz der AlloyDB-Datenbank erstellen
- Anwendung in einem GKE Autopilot-Cluster bereitstellen, die eine Verbindung zur AlloyDB-Instanz herstellt
Nächste Schritte:
Weitere Cymbal Eats-Codelabs ansehen:
- Cloud-Workflows mit Eventarc auslösen
- Ereignisverarbeitung über Cloud Storage auslösen
- Verbindung von Cloud Run zu privatem Cloud SQL herstellen
- Verbindung zu vollständig verwalteten Datenbanken über Cloud Run herstellen
- Serverlose Anwendung mit Identity-Aware Proxy (IAP) sichern
- Cloud Run-Jobs mit Cloud Scheduler auslösen
- Sichere Bereitstellung in Cloud Run
- Eingehenden Cloud Run-Traffic sichern
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, können Sie entweder das Projekt löschen, das die Ressourcen enthält, oder das Projekt beibehalten und die einzelnen Ressourcen löschen.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten durch Löschen des für die Anleitung erstellten Projekts.