Создание базы данных AlloyDB с помощью Cloud Run Job

1. Обзор

В ходе этой лабораторной работы вы создадите базу данных AlloyDB с помощью Cloud Run Job. Вы настроите доступ к частным сервисам и доступ к бессерверному VPC, чтобы обеспечить возможность подключения между Cloud Run Job и базой данных AlloyDB с использованием частного IP-адреса.

Что вы узнаете

В этой лабораторной работе вы научитесь делать следующее:

  • Настройка кластера и экземпляра AlloyDB
  • Разверните задание Cloud Run для создания базы данных AlloyDB.

2. Настройка и требования

Настройка облачного проекта

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы можете обновить его в любое время.
  • Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Кроме того, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага, и он останется в силе на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и не взимать плату за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить весь проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Настройка среды

Активируйте Cloud Shell, щелкнув значок справа от панели поиска.

eb0157a992f16fa3.png

Чтобы включить сервисные API, скопируйте и вставьте приведенную ниже команду в терминал и нажмите 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

Установите переменные среды:

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.

Установите необходимые разрешения для установки. Это позволит Cloud Run Job подключиться к базе данных AlloyDB.

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

Настройка доступа к частным сервисам

Доступ к частным сервисам реализуется как пиринговое соединение VPC между вашей сетью VPC и базовой сетью Google Cloud VPC, где находятся ваши ресурсы AlloyDB (кластеры и экземпляры). Частное соединение позволяет ресурсам в вашей сети VPC взаимодействовать с ресурсами AlloyDB, к которым они получают доступ, исключительно с использованием внутренних IP-адресов. Ресурсам в вашей сети VPC не требуется доступ к Интернету или внешние IP-адреса для доступа к ресурсам AlloyDB.

Чтобы создать конфигурацию доступа к частным сервисам в сети VPC, которая находится в том же облачном проекте, что и AlloyDB, вы выполняете две операции:

Создайте выделенный диапазон IP-адресов в сети VPC.

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

Создайте частное соединение между сетью VPC и базовой сетью Google Cloud VPC. Этот шаг занимает ~2 минуты.

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

Создайте кластер 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

Создайте экземпляр AlloyDB. Этот шаг занимает ~10 минут.

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

Просмотрите созданный кластер в облачной консоли.

568d273c0e0d6408.png

Сохраните IP-адрес базы данных в переменную.""

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.

Существует несколько способов создания базы данных AlloyDB. Один из них — создать виртуальную машину Compute Engine, установить клиент psql, а затем подключиться к экземпляру для создания базы данных. Подробнее об этом подходе можно прочитать здесь .

В ходе этой лабораторной работы вы создадите новую базу данных AlloyDB с помощью Cloud Run Job .

Просмотрите файлы ниже:

  • Dockerfile — устанавливает необходимые зависимости (postgresql-клиент)
  • script.sh — использует утилиты командной строки для создания базы данных.

В Cloud Shell создайте новую папку:

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

Создайте новый файл 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

Создайте новый файл script.sh с содержимым ниже:

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

psql -h $DB_HOST -l

Измените разрешение для script.sh:

chmod +x script.sh

5. Развертывание задания облачного запуска

Настройте бессерверный доступ к VPC . Это позволяет Cloud Run Job взаимодействовать с кластером AlloyDB, используя внутренний/частный IP-адрес. Этот шаг занимает ~2 минуты.

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

Создайте репозиторий реестра артефактов для хранения образов контейнеров.

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

Создайте и опубликуйте образ контейнера в реестре артефактов.

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

Разверните задание 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

Просмотрите флаги, которые использовались для создания задания:

--vpc-connector — задание Cloud Run будет использовать коннектор VPC для доступа к частному IP-адресу AlloyDB.

Просмотрите созданное задание в облачной консоли.

93d8224eca8c687f.png

Выполните задание Cloud Run, чтобы создать test базу данных.

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

Просмотрите журналы заданий Cloud Run в Cloud Console.

3f2269736b53f44c.png

6. Поздравляем!

Поздравляем, вы завершили работу над кодом!

Что мы рассмотрели:

  • Как создать кластер и экземпляр AlloyDB
  • Как создать базу данных AlloyDB с помощью Cloud Run Job

Очистить

Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий ресурсы, либо сохраните проект и удалите отдельные ресурсы.

Удаление проекта

Самый простой способ избавиться от выставления счетов — удалить проект, созданный вами для этого руководства.