Tworzę bazę danych AlloyDB z zadaniem Cloud Run

1. Przegląd

W tym module utworzysz bazę danych AlloyDB za pomocą zadania Cloud Run. Skonfigurujesz prywatny dostęp do usług i bezserwerowy dostęp do VPC, aby umożliwić połączenie między zadaniem Cloud Run a bazą danych AlloyDB za pomocą prywatnego adresu IP.

Czego się nauczysz

W tym module nauczysz się:

  • Konfigurowanie klastra i instancji AlloyDB
  • Wdrażanie zadania Cloud Run w celu utworzenia bazy danych AlloyDB

2. Konfiguracja i wymagania

Konfigurowanie projektu w Google Cloud

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Możesz ją zaktualizować w dowolnym momencie.
  • Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i jest niezmienny (nie można go zmienić po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle jest on oznaczony jako PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i będzie obowiązywać przez cały czas trwania projektu.
  • Warto wiedzieć, że istnieje też trzecia wartość, czyli numer projektu, z której korzystają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub cały projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Konfiguracja środowiska

Aktywuj Cloud Shell, klikając ikonę po prawej stronie paska wyszukiwania.

eb0157a992f16fa3.png

Aby włączyć interfejsy API usług, skopiuj i wklej poniższe polecenie w terminalu, a następnie naciśnij Enter:

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

Ustaw zmienne środowiskowe:

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. Konfigurowanie i tworzenie klastra AlloyDB

Ustaw wymagane uprawnienia do konfiguracji. Umożliwi to zadaniu Cloud Run łączenie się z bazą danych AlloyDB.

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

Konfigurowanie prywatnego dostępu do usług

Dostęp do usług prywatnych jest realizowany jako połączenie równorzędne VPC między Twoją siecią VPC a bazową siecią VPC Google Cloud, w której znajdują się Twoje zasoby AlloyDB (klastry i instancje). Prywatne połączenie umożliwia zasobom w sieci VPC komunikowanie się z zasobami AlloyDB, do których mają dostęp, wyłącznie za pomocą wewnętrznych adresów IP. Zasoby w sieci VPC nie potrzebują dostępu do internetu ani zewnętrznych adresów IP, aby uzyskać dostęp do zasobów AlloyDB.

Aby utworzyć konfigurację prywatnego dostępu do usług w sieci VPC znajdującej się w tym samym projekcie w chmurze co AlloyDB, wykonaj 2 operacje:

Utwórz przydzielony zakres adresów IP w sieci VPC.

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

Utwórz prywatne połączenie między siecią VPC a bazową siecią VPC Google Cloud. Ten krok zajmuje około 2 minut.

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

Utwórz klaster AlloyDB.

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

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

Utwórz instancję AlloyDB. Ten krok zajmuje około 10 minut.

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

Sprawdź utworzony klaster w konsoli Cloud.

568d273c0e0d6408.png

Zapisz adres IP bazy danych w zmiennej”.

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. Poznawanie kodu zadania Cloud Run

Bazę danych AlloyDB można utworzyć na kilka sposobów. Pierwszy sposób polega na utworzeniu maszyny wirtualnej Compute Engine, zainstalowaniu klienta psql, a następnie połączeniu się z instancją w celu utworzenia bazy danych. Więcej informacji o tym podejściu znajdziesz tutaj.

W tym module utworzysz nową bazę danych AlloyDB za pomocą zadania Cloud Run.

Sprawdź pliki poniżej:

  • Dockerfile – instaluje wymagane zależności(postgresql-client)
  • script.sh – używa narzędzi wiersza poleceń do tworzenia bazy danych.

W Cloud Shell utwórz nowy folder:

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

Utwórz nowy plik 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

Utwórz nowy plik script.sh z tą zawartością:

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

psql -h $DB_HOST -l

Zmień uprawnienia do pliku script.sh:

chmod +x script.sh

5. Wdrażanie zadania Cloud Run

Skonfiguruj bezserwerowy dostęp do VPC. Umożliwia to zadaniu Cloud Run komunikowanie się z klastrem AlloyDB za pomocą wewnętrznego lub prywatnego adresu IP. Ten krok zajmuje około 2 minut.

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

Utwórz repozytorium Artifact Registry do przechowywania obrazów kontenerów.

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

Utwórz obraz kontenera i opublikuj go w Artifact Registry.

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

Wdróż zadanie Cloud Run.

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

Sprawdź flagi użyte do utworzenia zadania:

--vpc-connector – zadanie Cloud Run będzie używać oprogramowania sprzęgającego VPC, aby uzyskać dostęp do prywatnego adresu IP AlloyDB.

Sprawdź utworzone zadanie w konsoli Cloud.

93d8224eca8c687f.png

Wykonaj zadanie Cloud Run, aby utworzyć bazę danych test.

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

Sprawdź logi zadania Cloud Run w konsoli Cloud.

3f2269736b53f44c.png

6. Gratulacje!

Gratulacje! Codelab został ukończony.

Omówione zagadnienia:

  • Jak utworzyć klaster i instancję AlloyDB
  • Jak utworzyć bazę danych AlloyDB za pomocą zadania Cloud Run

Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym samouczku, możesz usunąć projekt zawierający te zasoby lub zachować projekt i usunąć poszczególne zasoby.

Usuwanie projektu

Najprostszym sposobem na uniknięcie płatności jest usunięcie projektu utworzonego w tym samouczku.