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 Zugriff auf private Dienste und serverlosen VPC-Zugriff, um die Verbindung zwischen Cloud Run Job und 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. 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 Teilnehmer dieses Projekts. Es handelt sich um einen 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 (kann nach der Festlegung nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. 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 es mit einem eigenen versuchen und sehen, ob es verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
  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 keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit Ihnen nach Abschluss dieser Anleitung keine Kosten mehr in Rechnung gestellt werden, können Sie die von Ihnen erstellten Ressourcen oder das gesamte Projekt löschen. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.

Umgebung einrichten

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

eb0157a992f16fa3.png

Kopieren Sie den folgenden Befehl und fügen Sie ihn in das Terminal ein, um die 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 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 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 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 externe 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 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

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

Sehen Sie sich den erstellten Cluster in der Cloud Console an.

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

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

Sehen Sie sich die Dateien unten an:

  • Dockerfile – installiert erforderliche Abhängigkeiten(postgresql-client)
  • script.sh – verwendet Befehlszeilenprogramme 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

Erstellen Sie eine neue Datei mit dem Namen script.sh und folgendem 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. Dadurch 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

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

Cloud Run-Job bereitstellen

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

Sehen Sie sich die Flags an, 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.

Sehen Sie sich den erstellten Job in der Cloud Console an.

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

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

3f2269736b53f44c.png

6. Glückwunsch!

Herzlichen Glückwunsch! Sie haben 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.