AlloyDB-Datenbank wird mit Cloud Run-Job erstellt

1. Übersicht

In diesem Lab erstellen Sie eine AlloyDB-Datenbank mit einem 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 bereitstellen, um eine AlloyDB-Datenbank zu erstellen

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. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Er ist ein String, der nicht von Google APIs verwendet wird. Sie können ihn jederzeit aktualisieren.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann also nicht mehr geändert werden, nachdem sie festgelegt wurde. In der Cloud Console wird automatisch ein eindeutiger String generiert. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen. Sie wird in der Regel als PROJECT_ID angegeben. 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.
  1. 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 mehr in Rechnung gestellt werden, können Sie die erstellten Ressourcen oder das gesamte Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testprogramm im Wert von 300 $ teilnehmen.

Umgebung einrichten

Klicken Sie rechts neben der Suchleiste auf das Symbol, um Cloud Shell zu aktivieren.

eb0157a992f16fa3.png

Wenn Sie Dienst-APIs aktivieren möchten, kopieren Sie den folgenden Befehl und fügen Sie ihn in das Terminal ein. Drücken Sie dann die Eingabetaste:

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. So kann der 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 eine 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.

Wenn Sie eine Konfiguration für den Zugriff auf private Dienste in einem VPC-Netzwerk erstellen möchten, 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 VPC-Netzwerk von Google Cloud. 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

Erstellen Sie einen AlloyDB-Cluster.

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

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

Erstellen Sie eine AlloyDB-Instanz. 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 ansehen

Es gibt mehrere Möglichkeiten, eine AlloyDB-Datenbank zu erstellen. Eine Möglichkeit 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 finden Sie hier.

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

Prüfen Sie die folgenden Dateien:

  • Dockerfile: Installiert die erforderlichen Abhängigkeiten(postgresql-client)
  • script.sh: Verwendet Befehlszeilenprogramme, um eine Datenbank zu erstellen

Erstellen Sie in der Cloud Shell einen neuen Ordner:

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

Erstellen Sie die neue Datei Dockerfile:

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

Erstellen Sie die neue Datei script.sh mit dem folgenden Inhalt:

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. So kann der 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

Erstellen Sie ein Container-Image und veröffentlichen Sie es in Artifact Registry.

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

Stellen Sie den 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

Prüfen Sie die Flags, die zum Erstellen des Jobs verwendet wurden:

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

Führen Sie den Cloud Run-Job aus, um die Datenbank test zu erstellen.

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

Prüfen Sie die Cloud Run-Job logs in der Cloud Console.

3f2269736b53f44c.png

6. Das wars!

Sie haben das Codelab abgeschlossen.

Inhalt:

  • AlloyDB-Cluster und ‑Instanz erstellen
  • AlloyDB-Datenbank mit einem 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.