AlloyDB-Datenbank wird mit Cloud Run-Job erstellt

1. Übersicht

In diesem Lab erstellen Sie eine AlloyDB-Datenbank mit Cloud Run-Job. Sie konfigurieren den Zugriff auf private Dienste und den serverlosen VPC-Zugriff, um die Verbindung zwischen dem Cloud Run-Job und der AlloyDB-Datenbank über eine private IP-Adresse zu ermöglichen.

Lerninhalte

In diesem Lab lernen Sie Folgendes:

  • AlloyDB-Cluster und -Instanz einrichten
  • Cloud Run-Job zum Erstellen einer AlloyDB-Datenbank bereitstellen

2. Einrichtung und Anforderungen

Cloud-Projekt einrichten

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du dich auf die Projekt-ID beziehen, die üblicherweise als PROJECT_ID gekennzeichnet ist. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID erstellen. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte ohne großen Aufwand betrieben werden. Wenn Sie Ressourcen herunterfahren möchten, um über diese Anleitung hinaus keine Kosten zu verursachen, können Sie die von Ihnen erstellten Ressourcen oder das gesamte Projekt löschen. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion von 300$.

Umgebung einrichten

Aktivieren Sie Cloud Shell, indem Sie auf das Symbol rechts neben der Suchleiste klicken.

eb0157a992f16fa3.png

Kopieren Sie den folgenden Befehl, fügen Sie ihn in das Terminal ein und drücken Sie die Eingabetaste, um Dienst-APIs zu aktivieren:

gcloud services enable \
    alloydb.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    run.googleapis.com \
    vpcaccess.googleapis.com \
    compute.googleapis.com \
    servicenetworking.googleapis.com \
    --quiet

Legen Sie Umgebungsvariablen 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)')
export DB_DATABASE=test
export DB_USER=postgres
export DB_PASSWORD=password123
export REGION=us-central1
export CLUSTER=test-cluster
export INSTANCE=test-instance
export VPC_CONNECTOR=vpcconnector

3. AlloyDB-Cluster einrichten und erstellen

Legen Sie die erforderlichen Berechtigungen für die Einrichtung fest. Dadurch kann Cloud Run-Job eine Verbindung zur AlloyDB-Datenbank herstellen.

gcloud projects add-iam-policy-binding $PROJECT_NAME \
  --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role="roles/alloydb.client"

Zugriff auf private Dienste konfigurieren

Der Zugriff auf private Dienste wird als VPC-Peering-Verbindung zwischen Ihrem VPC-Netzwerk und dem zugrunde liegenden Google Cloud-VPC-Netzwerk implementiert, in dem sich Ihre AlloyDB-Ressourcen (Cluster und Instanzen) befinden. Über die private Verbindung können Ressourcen in Ihrem VPC-Netzwerk mit den AlloyDB-Ressourcen kommunizieren, auf die sie ausschließlich über interne IP-Adressen zugreifen. Die Ressourcen in Ihrem VPC-Netzwerk benötigen weder Internetzugriff noch externe IP-Adressen, um AlloyDB-Ressourcen zu erreichen.

Zum Erstellen einer Konfiguration für den Zugriff auf private Dienste in einem VPC-Netzwerk, das sich im selben Cloud-Projekt wie AlloyDB befindet, führen Sie zwei Vorgänge aus:

Erstellen Sie einen zugewiesenen IP-Adressbereich im VPC-Netzwerk.

gcloud compute addresses create google-managed-services-default \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=20 \
    --network=projects/$PROJECT_ID/global/networks/default

Erstellen Sie eine private Verbindung zwischen dem VPC-Netzwerk und dem zugrunde liegenden Google Cloud-VPC-Netzwerk. Dieser Schritt dauert etwa 2 Minuten.

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default \
    --network=default \
    --project=$PROJECT_ID

AlloyDB-Cluster erstellen

gcloud beta alloydb clusters create $CLUSTER \
    --password=$DB_PASSWORD \
    --network=default \
    --region=$REGION \
    --project=$PROJECT_NAME

gcloud beta alloydb clusters describe $CLUSTER --region=$REGION

AlloyDB-Instanz erstellen Dieser Schritt dauert etwa 10 Minuten.

gcloud beta alloydb instances create $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --project=$PROJECT_NAME

gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region $REGION

Prüfen Sie den erstellten Cluster in der Cloud Console.

568d273c0e0d6408.png

Speichern Sie die IP-Adresse der Datenbank in einer Variablen.""

export DB_HOST=$(gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".ipAddress")

echo "DB_HOST=$DB_HOST"

4. Cloud Run-Jobcode kennenlernen

Es gibt mehrere Möglichkeiten, eine AlloyDB-Datenbank zu erstellen. Eine besteht darin, eine Compute Engine-VM zu erstellen, einen psql-Client zu installieren und dann eine Verbindung zur Instanz herzustellen, um eine Datenbank zu erstellen. Weitere Informationen zu diesem Ansatz

In diesem Lab erstellen Sie mit Cloud Run-Job eine neue AlloyDB-Datenbank.

Sehen Sie sich die folgenden Dateien an:

  • Dockerfile – installiert die erforderlichen Abhängigkeiten(postgresql-client)
  • script.sh – verwendet Befehlszeilendienstprogramme zum Erstellen einer Datenbank

Erstellen Sie in Cloud Shell einen neuen Ordner:

mkdir ~/alloy-db-cloud-run-job
cd ~/alloy-db-cloud-run-job 

Neue Datei Dockerfile erstellen:

cat > Dockerfile <<EOF
FROM ubuntu:latest
RUN apt-get update && apt-get install -y postgresql-client && apt-get clean
COPY script.sh /
RUN chmod +x /script.sh
CMD ["/script.sh"]
ENTRYPOINT ["/bin/bash"]
EOF

Neue Datei script.sh mit folgendem Inhalt erstellen:

echo "Connecting to $DB_HOST"
createdb -h $DB_HOST -p 5432 $PGDB
echo "Created $PGDB database"

psql -h $DB_HOST -l

Ändern Sie die Berechtigung für script.sh:

chmod +x script.sh

5. Cloud Run-Job bereitstellen

Konfigurieren Sie den serverlosen VPC-Zugriff. Dadurch kann Cloud Run Job über eine interne/private IP-Adresse mit dem AlloyDB-Cluster kommunizieren. Dieser Schritt dauert etwa 2 Minuten.

gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
    --region=${REGION} \
    --range=10.8.0.0/28

Erstellen Sie ein Artifact Registry-Repository zum Speichern von Container-Images.

gcloud artifacts repositories create db-job-repository \
  --repository-format=docker \
  --location=$REGION

Container-Image erstellen und in Artifact Registry veröffentlichen.

gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest

Stellen Sie Cloud Run-Job bereit.

gcloud beta run jobs create db-job \
    --image=$REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest \
    --set-env-vars DB_HOST=$DB_HOST \
    --set-env-vars PGUSER=$DB_USER \
    --set-env-vars PGPASSWORD=$DB_PASSWORD \
    --set-env-vars PGDB=$DB_DATABASE \
    --vpc-connector $VPC_CONNECTOR \
    --region $REGION

Überprüfen Sie die Flags, mit denen der Job erstellt wurde:

--vpc-connector: Der Cloud Run-Job verwendet den VPC-Connector, um die private IP-Adresse von AlloyDB zu erreichen.

Prüfen Sie den erstellten Job in der Cloud Console.

93d8224eca8c687f.png

Cloud Run-Job ausführen, um die Datenbank test zu erstellen.

gcloud beta run jobs execute db-job --region $REGION

Sehen Sie sich die Logs von Cloud Run-Jobs in der Cloud Console an.

3f2269736b53f44c.png

6. Glückwunsch!

Glückwunsch, du hast das Codelab abgeschlossen.

Behandelte Themen:

  • AlloyDB-Cluster und -Instanz erstellen
  • AlloyDB-Datenbank mit Cloud Run-Job erstellen

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.