1. Обзор
В этой лабораторной работе вы создадите базу данных AlloyDB с использованием Cloud Run Job. Вы настроите доступ к частным сервисам и доступ к бессерверной VPC для обеспечения связи между Cloud Run Job и базой данных AlloyDB с использованием частного IP-адреса.
Что вы узнаете
В этой лабораторной работе вы научитесь выполнять следующие действия:
- Настройка кластера и экземпляра AlloyDB.
- Разверните задание Cloud Run для создания базы данных AlloyDB.
2. Настройка и требования
Настройка облачного проекта
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



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

Чтобы включить 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
Проверьте созданный кластер в консоли Cloud.

"Сохраните 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 Job.
Существует несколько способов создания базы данных AlloyDB. Один из них — создать виртуальную машину Compute Engine, установить клиент psql, а затем подключиться к экземпляру для создания базы данных. Подробнее об этом подходе можно прочитать здесь .
В этой лабораторной работе вы создадите новую базу данных AlloyDB, используя задание Cloud Run Job .
Ознакомьтесь с файлами ниже:
- Dockerfile — устанавливает необходимые зависимости (postgresql-client)
- 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. Развертывание задания Cloud Run
Настройте доступ к 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 Job будет использовать коннектор VPC для доступа к частному IP-адресу AlloyDB.
Просмотрите созданное задание в консоли Cloud.

Выполните задание Cloud Run для создания test базы данных.
gcloud beta run jobs execute db-job --region $REGION
Просмотрите журналы заданий Cloud Run в консоли Cloud.

6. Поздравляем!
Поздравляем, вы завершили практическое занятие!
Что мы рассмотрели:
- Как создать кластер и экземпляр AlloyDB
- Как создать базу данных AlloyDB с помощью задания Cloud Run Job
Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, используемые в этом руководстве, либо удалите проект, содержащий эти ресурсы, либо сохраните проект и удалите отдельные ресурсы.
Удаление проекта
Самый простой способ избежать выставления счетов — удалить проект, созданный для этого урока.