1. Введение

В этом практическом занятии вы научитесь создавать кластер AlloyDB, развертывать инструментарий MCP и настраивать его для использования AlloyDB в качестве источника данных. Затем вы создадите пример интерактивного RAG-приложения, которое использует развернутый инструментарий для обработки запросов.

Более подробную информацию о MCP Toolbox можно найти на странице документации , а пример приложения Cymbal Air — здесь .
Эта лабораторная работа является частью набора лабораторных работ, посвященных функциям AlloyDB AI. Вы можете узнать больше на странице AlloyDB AI в документации и посмотреть другие лабораторные работы .
Предварительные требования
- Базовое понимание консоли Google Cloud
- Базовые навыки работы с командной строкой и оболочкой Google Cloud.
Что вы узнаете
- Как развернуть кластер AlloyDB с интеграцией Vertex AI
- Как подключиться к AlloyDB
- Как настроить и развернуть службу MCP Toolbox
- Как развернуть пример приложения, используя развернутую службу
Что вам понадобится
- Аккаунт Google Cloud и проект Google Cloud
- Веб-браузер, например Chrome.
2. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



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

Подготовка и подключение к среде займут всего несколько минут. После завершения вы должны увидеть примерно следующее:

Эта виртуальная машина содержит все необходимые инструменты разработки. Она предоставляет постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Вся работа в этом практическом задании может выполняться в браузере. Вам не нужно ничего устанавливать.
3. Прежде чем начать
Включить API
Выход:
Внутри Cloud Shell убедитесь, что идентификатор вашего проекта указан правильно:
Обычно идентификатор проекта отображается в скобках в командной строке облачной оболочки, как показано на рисунке:

gcloud config set project [YOUR-PROJECT-ID]
Затем установите переменную среды PROJECT_ID равным идентификатору вашего проекта Google Cloud:
PROJECT_ID=$(gcloud config get-value project)
Включите все необходимые службы:
gcloud services enable alloydb.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
vpcaccess.googleapis.com \
aiplatform.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
iam.googleapis.com \
secretmanager.googleapis.com
Ожидаемый результат
student@cloudshell:~ (gleb-test-short-004)$ gcloud services enable alloydb.googleapis.com \
compute.googleapis.com \
cloudresourcemanager.googleapis.com \
servicenetworking.googleapis.com \
vpcaccess.googleapis.com \
aiplatform.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
iam.googleapis.com \
secretmanager.googleapis.com
Operation "operations/acf.p2-404051529011-664c71ad-cb2b-4ab4-86c1-1f3157d70ba1" finished successfully.
4. Развертывание кластера AlloyDB
Создание кластера AlloyDB и основного экземпляра. Следующая процедура описывает, как создать кластер и экземпляр AlloyDB с помощью Google Cloud SDK. Если вы предпочитаете использовать консольный подход, вы можете следовать документации здесь .
Перед созданием кластера AlloyDB нам необходим доступный диапазон частных IP-адресов в нашей VPC, который будет использоваться будущим экземпляром AlloyDB. Если его нет, нам нужно его создать, назначить для использования внутренними сервисами Google, после чего мы сможем создать кластер и экземпляр.
Создать частный диапазон IP-адресов
Нам необходимо настроить параметры доступа к частным сервисам (Private Service Access, VPC) в нашей VPC для AlloyDB. Предполагается, что в проекте используется «стандартная» сеть VPC, и она будет применяться для всех действий.
Создайте диапазон частных IP-адресов:
gcloud compute addresses create psa-range \
--global \
--purpose=VPC_PEERING \
--prefix-length=24 \
--description="VPC private service access" \
--network=default
Создайте частное соединение, используя выделенный диапазон IP-адресов:
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range \
--network=default
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-402417)$ gcloud compute addresses create psa-range \
--global \
--purpose=VPC_PEERING \
--prefix-length=24 \
--description="VPC private service access" \
--network=default
Created [https://www.googleapis.com/compute/v1/projects/test-project-402417/global/addresses/psa-range].
student@cloudshell:~ (test-project-402417)$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range \
--network=default
Operation "operations/pssn.p24-4470404856-595e209f-19b7-4669-8a71-cbd45de8ba66" finished successfully.
student@cloudshell:~ (test-project-402417)$
Создание кластера AlloyDB
В этом разделе мы создаём кластер AlloyDB в регионе us-central1.
Задайте пароль для пользователя postgres. Вы можете задать свой собственный пароль или использовать функцию генерации случайных чисел.
export PGPASSWORD=`openssl rand -hex 12`
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-402417)$ export PGPASSWORD=`openssl rand -hex 12`
Запишите пароль от PostgreSQL для дальнейшего использования.
echo $PGPASSWORD
Этот пароль понадобится вам в будущем для подключения к экземпляру под учетной записью postgres. Я рекомендую записать его или скопировать куда-нибудь, чтобы иметь возможность использовать позже.
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-402417)$ echo $PGPASSWORD bbefbfde7601985b0dee5723
Создайте кластер для бесплатной пробной версии
Если вы раньше не использовали AlloyDB, вы можете создать бесплатный пробный кластер:
Определите регион и имя кластера AlloyDB. Мы будем использовать регион us-central1 и имя кластера alloydb-aip-01:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
Выполните команду для создания кластера:
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION \
--subscription-type=TRIAL
Ожидаемый вывод в консоль:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION \
--subscription-type=TRIAL
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.
Создайте основной экземпляр AlloyDB для нашего кластера в той же сессии Cloud Shell. Если вы отключены, вам потребуется заново определить переменные среды для региона и имени кластера.
gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=8 \
--region=$REGION \
--cluster=$ADBCLUSTER
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=8 \
--region=$REGION \
--availability-type ZONAL \
--cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.
Создание кластера AlloyDB Standard
Если это не первый ваш кластер AlloyDB в проекте, перейдите к созданию стандартного кластера.
Определите регион и имя кластера AlloyDB. Мы будем использовать регион us-central1 и имя кластера alloydb-aip-01:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
Выполните команду для создания кластера:
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION
Ожидаемый вывод в консоль:
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
gcloud alloydb clusters create $ADBCLUSTER \
--password=$PGPASSWORD \
--network=default \
--region=$REGION
Operation ID: operation-1697655441138-6080235852277-9e7f04f5-2012fce4
Creating cluster...done.
Создайте основной экземпляр AlloyDB для нашего кластера в той же сессии Cloud Shell. Если вы отключены, вам потребуется заново определить переменные среды для региона и имени кластера.
gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=2 \
--region=$REGION \
--cluster=$ADBCLUSTER
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-402417)$ gcloud alloydb instances create $ADBCLUSTER-pr \
--instance-type=PRIMARY \
--cpu-count=2 \
--region=$REGION \
--availability-type ZONAL \
--cluster=$ADBCLUSTER
Operation ID: operation-1697659203545-6080315c6e8ee-391805db-25852721
Creating instance...done.
Предоставьте необходимые разрешения AlloyDB
Добавьте разрешения Vertex AI для агента службы AlloyDB.
Откройте еще одну вкладку Cloud Shell, используя знак "+" вверху.

В новой вкладке облачной оболочки выполните:
PROJECT_ID=$(gcloud config get-value project)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-001-402417)$ PROJECT_ID=$(gcloud config get-value project) Your active configuration is: [cloudshell-11039] student@cloudshell:~ (test-project-001-402417)$ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:service-$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")@gcp-sa-alloydb.iam.gserviceaccount.com" \ --role="roles/aiplatform.user" Updated IAM policy for project [test-project-001-402417]. bindings: - members: - serviceAccount:service-4470404856@gcp-sa-alloydb.iam.gserviceaccount.com role: roles/aiplatform.user - members: ... etag: BwYIEbe_Z3U= version: 1
Закройте вкладку, выполнив одну из команд, указанных на вкладке, например, «Выход»:
exit
5. Подготовка виртуальной машины GCE.
В качестве платформы для работы с базой данных и развертывания различных частей тестового приложения мы будем использовать виртуальную машину Google Compute Engine (GCE). Использование виртуальной машины обеспечивает большую гибкость в установке компонентов и прямой доступ к частному IP-адресу AlloyDB для этапов подготовки данных.
Создать учетную запись службы
Поскольку мы будем использовать нашу виртуальную машину для развертывания MCP Toolbox в качестве службы и развертывания или размещения тестового приложения, первым шагом является создание учетной записи службы Google (GSA). Учетная запись GSA будет использоваться виртуальной машиной GCE, и нам потребуется предоставить ей необходимые права для работы с другими службами.
В оболочке Cloud Shell выполните:
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create compute-aip --project $PROJECT_ID
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/cloudbuild.builds.editor"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/artifactregistry.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/storage.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/run.admin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/alloydb.viewer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/alloydb.client"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/aiplatform.user"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/serviceusage.serviceUsageConsumer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:compute-aip@$PROJECT_ID.iam.gserviceaccount.com \
--role roles/secretmanager.admin
Развертывание виртуальной машины GCE
Создайте виртуальную машину GCE в том же регионе и VPC, что и кластер AlloyDB.
В Cloud Shell выполните:
ZONE=us-central1-a
PROJECT_ID=$(gcloud config get-value project)
gcloud compute instances create instance-1 \
--zone=$ZONE \
--create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-402417)$ ZONE=us-central1-a
PROJECT_ID=$(gcloud config get-value project)
gcloud compute instances create instance-1 \
--zone=$ZONE \
--create-disk=auto-delete=yes,boot=yes,image=projects/debian-cloud/global/images/$(gcloud compute images list --filter="family=debian-12 AND family!=debian-12-arm64" --format="value(name)") \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--service-account=compute-aip@$PROJECT_ID.iam.gserviceaccount.com
Your active configuration is: [cloudshell-10282]
Created [https://www.googleapis.com/compute/v1/projects/gleb-test-short-002-470613/zones/us-central1-a/instances/instance-1].
NAME: instance-1
ZONE: us-central1-a
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.0.2
EXTERNAL_IP: 34.28.55.32
STATUS: RUNNING
Установите клиент PostgreSQL.
Установите клиентское программное обеспечение PostgreSQL на развернутую виртуальную машину.
Подключитесь к виртуальной машине:
gcloud compute ssh instance-1 --zone=us-central1-a
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a Updating project ssh metadata...working..Updated [https://www.googleapis.com/compute/v1/projects/test-project-402417]. Updating project ssh metadata...done. Waiting for SSH key to propagate. Warning: Permanently added 'compute.5110295539541121102' (ECDSA) to the list of known hosts. Linux instance-1 5.10.0-26-cloud-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. student@instance-1:~$
Установите программное обеспечение, запускаемое командой внутри виртуальной машины:
sudo apt-get update
sudo apt-get install --yes postgresql-client
Ожидаемый вывод в консоль:
student@instance-1:~$ sudo apt-get update sudo apt-get install --yes postgresql-client Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B] Get:4 file:/etc/apt/mirrors/debian-security.list Mirrorlist [39 B] Hit:7 https://packages.cloud.google.com/apt google-compute-engine-bookworm-stable InRelease Get:8 https://packages.cloud.google.com/apt cloud-sdk-bookworm InRelease [1652 B] Get:2 https://deb.debian.org/debian bookworm InRelease [151 kB] Get:3 https://deb.debian.org/debian bookworm-updates InRelease [55.4 kB] ...redacted... update-alternatives: using /usr/share/postgresql/15/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode Setting up postgresql-client (15+248) ... Processing triggers for man-db (2.11.2-2) ... Processing triggers for libc-bin (2.36-9+deb12u7) ...
Подключитесь к экземпляру AlloyDB.
Подключитесь к основному экземпляру с виртуальной машины, используя psql.
Продолжите работу с открытым SSH-соединением с вашей виртуальной машиной. Если соединение прервалось, подключитесь снова, используя ту же команду, что и выше.
Используйте указанную ранее переменную $PGASSWORD и имя кластера для подключения к AlloyDB с виртуальной машины GCE:
export PGPASSWORD=<Noted password>
PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
Ожидаемый вывод в консоль:
student@instance-1:~$ PROJECT_ID=$(gcloud config get-value project)
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres sslmode=require"
psql (15.13 (Debian 15.13-0+deb12u1), server 16.8)
WARNING: psql major version 15, server major version 16.
Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
postgres=>
Завершить сеанс psql, сохранив при этом SSH-соединение:
exit
Ожидаемый вывод в консоль:
postgres=> exit student@instance-1:~$
6. Инициализация базы данных.
Мы будем использовать клиентскую виртуальную машину в качестве платформы для заполнения базы данных данными и размещения нашего приложения. Первым шагом является создание базы данных и ее заполнение данными.
Создать базу данных
Создайте базу данных с именем "assistantdemo".
В сессии виртуальной машины GCE выполните:
psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo"
Ожидаемый вывод в консоль:
student@instance-1:~$ psql "host=$INSTANCE_IP user=postgres" -c "CREATE DATABASE assistantdemo" CREATE DATABASE student@instance-1:~$
Подготовка среды Python
Для продолжения мы будем использовать готовые скрипты Python из репозитория GitHub, но перед этим нам необходимо установить необходимое программное обеспечение.
В виртуальной машине GCE выполните:
sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
Ожидаемый вывод в консоль:
student@instance-1:~$ sudo apt install -y python3.11-venv git
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl
Suggested packages:
git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn ed diffutils-doc
The following NEW packages will be installed:
git git-man liberror-perl patch python3-distutils python3-lib2to3 python3-pip-whl python3-setuptools-whl python3.11-venv
0 upgraded, 9 newly installed, 0 to remove and 2 not upgraded.
Need to get 12.4 MB of archives.
After this operation, 52.2 MB of additional disk space will be used.
Get:1 file:/etc/apt/mirrors/debian.list Mirrorlist [30 B]
...redacted...
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 23.0.1
Uninstalling pip-23.0.1:
Successfully uninstalled pip-23.0.1
Successfully installed pip-24.0
(.venv) student@instance-1:~$
Проверьте версию Python.
В виртуальной машине GCE выполните:
python -V
Ожидаемый вывод в консоль:
(.venv) student@instance-1:~$ python -V Python 3.11.2 (.venv) student@instance-1:~$
Установите MCP Toolbox локально.
MCP Toolbox for Databases (далее MCP toolbox или toolbox) — это сервер MCP с открытым исходным кодом, работающий с различными источниками данных. Он помогает быстрее разрабатывать инструменты, предоставляя уровень абстракции для различных источников данных и добавляя такие функции, как аутентификация и пулы соединений. О всех функциях можно прочитать на официальной странице .
Мы собираемся использовать инструментарий MCP для инициализации нашего тестового набора данных, который впоследствии будет использоваться в качестве MCP-сервера для обработки запросов к источникам данных от нашего приложения в процессе генерации данных с расширенным извлечением (Retrieval Augmented Generation, RAG).
Давайте установим локально пакет инструментов MCP, чтобы заполнить базу данных assistantdemo.
В виртуальной машине GCE выполните:
export VERSION=0.16.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
Ожидаемый вывод в консоль:
(.venv) student@instance-1:~$ export VERSION=0.16.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 133M 100 133M 0 0 158M 0 --:--:-- --:--:-- --:--:-- 158M
Запустите панель инструментов для инициализации данных.
В виртуальной машине GCE выполните:
Экспорт переменных среды для заполнения базы данных:
export ALLOYDB_POSTGRES_PROJECT=$(gcloud config get-value project)
export ALLOYDB_POSTGRES_REGION="us-central1"
export ALLOYDB_POSTGRES_CLUSTER="alloydb-aip-01"
export ALLOYDB_POSTGRES_INSTANCE="alloydb-aip-01-pr"
export ALLOYDB_POSTGRES_DATABASE="assistantdemo"
export ALLOYDB_POSTGRES_USER="postgres"
export ALLOYDB_POSTGRES_PASSWORD=$PGPASSWORD
export ALLOYDB_POSTGRES_IP_TYPE="private"
Запустите панель инструментов для инициализации базы данных. Она запустит процесс локально, что позволит вам беспрепятственно подключиться к целевой базе данных в AlloyDB и заполнить ее тестовыми данными.
./toolbox --prebuilt alloydb-postgres
Ожидаемый вывод в консоль. В последней строке вывода вы должны увидеть: "Сервер готов к обслуживанию!":
student@instance-1:~$ cexport ALLOYDB_POSTGRES_PROJECT=$PROJECT_ID export ALLOYDB_POSTGRES_REGION="us-central1" export ALLOYDB_POSTGRES_CLUSTER="alloydb-aip-01" export ALLOYDB_POSTGRES_INSTANCE="alloydb-aip-01-pr" export ALLOYDB_POSTGRES_DATABASE="assistantdemo" export ALLOYDB_POSTGRES_USER="postgres" export ALLOYDB_POSTGRES_PASSWORD=$PGPASSWORD export ALLOYDB_POSTGRES_IP_TYPE="private" student@instance-1:~$ ./toolbox --prebuilt alloydb-postgres 2025-09-02T18:30:58.957655886Z INFO "Using prebuilt tool configuration for alloydb-postgres" 2025-09-02T18:30:59.507306664Z INFO "Initialized 1 sources." 2025-09-02T18:30:59.50748379Z INFO "Initialized 0 authServices." 2025-09-02T18:30:59.507618807Z INFO "Initialized 2 tools." 2025-09-02T18:30:59.507726704Z INFO "Initialized 2 toolsets." 2025-09-02T18:30:59.508258894Z INFO "Server ready to serve!"
Не закрывайте эту вкладку Cloud Shell, пока не завершится заполнение данных.
Заполнить базу данных
Откройте еще одну вкладку Cloud Shell, используя знак "+" вверху.

И подключитесь к виртуальной машине экземпляра 1 :
gcloud compute ssh instance-1 --zone=us-central1-a
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-402417)$ gcloud compute ssh instance-1 --zone=us-central1-a Linux instance-1 6.1.0-37-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Sep 2 21:44:07 2025 from 35.229.111.9 student@instance-1:~$
Клонируйте репозиторий GitHub с кодом службы получения данных и примером приложения.
В виртуальной машине GCE выполните:
git clone https://github.com/GoogleCloudPlatform/cymbal-air-toolbox-demo.git
Ожидаемый вывод в консоль:
student@instance-1:~$ git clone https://github.com/GoogleCloudPlatform/cymbal-air-toolbox-demo.git Cloning into 'cymbal-air-toolbox-demo'... remote: Enumerating objects: 3481, done. remote: Counting objects: 100% (47/47), done. remote: Compressing objects: 100% (41/41), done. remote: Total 3481 (delta 16), reused 7 (delta 5), pack-reused 3434 (from 3) Receiving objects: 100% (3481/3481), 57.96 MiB | 6.04 MiB/s, done. Resolving deltas: 100% (2549/2549), done. student@instance-1:~
Пожалуйста, обратите внимание, если вы обнаружите какие-либо ошибки.
Подготовьте среду Python и установите необходимые пакеты:
source .venv/bin/activate
cd cymbal-air-toolbox-demo
pip install -r requirements.txt
Укажите путь к корневой папке репозитория в Python и запустите скрипт для заполнения базы данных тестовым набором данных. Первая команда добавляет путь к модулям Python в нашу среду, а вторая команда заполняет базу данных данными.
export PYTHONPATH=$HOME/cymbal-air-toolbox-demo
python data/run_database_init.py
Ожидаемый вывод в консоль (засекречено). В конце вы должны увидеть "инициализация базы данных завершена":
student@instance-1:~$ source .venv/bin/activate (.venv) student@instance-1:~$ (.venv) student@instance-1:~$ cd cymbal-air-toolbox-demo/ (.venv) student@instance-1:~/cymbal-air-toolbox-demo$ pip install -r requirements.txt python run_database_init.py Collecting fastapi==0.115.0 (from -r requirements.txt (line 1)) Downloading fastapi-0.115.0-py3-none-any.whl.metadata (27 kB) Collecting google-auth==2.40.3 (from -r requirements.txt (line 2)) Downloading google_auth-2.40.3-py2.py3-none-any.whl.metadata (6.2 kB) Collecting google-cloud-aiplatform==1.97.0 (from google-cloud-aiplatform[evaluation]==1.97.0->-r requirements.txt (line 3)) Downloading google_cloud_aiplatform-1.97.0-py2.py3-none-any.whl.metadata (36 kB) Collecting itsdangerous==2.2.0 (from -r requirements.txt (line 4)) Downloading itsdangerous-2.2.0-py3-none-any.whl.metadata (1.9 kB) Collecting jinja2==3.1.5 (from -r requirements.txt (line 5)) Downloading jinja2-3.1.5-py3-none-any.whl.metadata (2.6 kB) Collecting langchain-community==0.3.25 (from -r requirements.txt (line 6)) Downloading langchain_community-0.3.25-py3-none-any.whl.metadata (2.9 kB) Collecting langchain==0.3.25 (from -r requirements.txt (line 7)) ... (.venv) student@instance-1:~/cymbal-air-toolbox-demo$ (.venv) student@instance-1:~/cymbal-air-toolbox-demo$ export PYTHONPATH=$HOME/cymbal-air-toolbox-demo python data/run_database_init.py Airports table initialized Amenities table initialized Flights table initialized Tickets table initialized Policies table initialized database init done. (.venv) student@instance-1:~/cymbal-air-toolbox-demo$
Теперь вы можете закрыть эту вкладку.
В сессии виртуальной машины выполните:
exit
В сессии Cloud Shell нажмите Ctrl+D или выполните следующую команду:
exit
На первой вкладке с запущенной программой MCP Toolbox нажмите Ctrl+C, чтобы выйти из сеанса работы программы.
База данных заполнена примерами данных для приложения.
Вы можете проверить это, подключившись к базе данных и проверив количество строк в таблице airports. Вы можете использовать утилиту psql, как мы использовали ранее, или AlloyDB Studio . Вот как это можно проверить с помощью psql.
В SSH-сессии к виртуальной машине instance-1 выполните:
export PGPASSWORD=<Noted AlloyDB password>
REGION=us-central1
ADBCLUSTER=alloydb-aip-01
INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)")
psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "SELECT COUNT(*) FROM airports"
Ожидаемый вывод в консоль:
student@instance-1:~$ REGION=us-central1 ADBCLUSTER=alloydb-aip-01 INSTANCE_IP=$(gcloud alloydb instances describe $ADBCLUSTER-pr --cluster=$ADBCLUSTER --region=$REGION --format="value(ipAddress)") psql "host=$INSTANCE_IP user=postgres dbname=assistantdemo" -c "SELECT COUNT(*) FROM airports" count ------- 7698 (1 row)
База данных готова, и мы можем перейти к развертыванию MCP Toolbox.
7. Разверните MCP Toolbox в Cloud Run.
Теперь мы можем развернуть MCP Toolbox в Cloud Run. Существуют разные способы развертывания MCP Toolbox. Самый простой способ — запустить его из командной строки, но если нам нужен масштабируемый и надежный сервис, то Cloud Run — лучшее решение.
Подготовьте идентификатор клиента.
Для использования функции бронирования в приложении необходимо подготовить идентификатор клиента OAuth 2.0 с помощью Cloud Console. Без него мы не сможем войти в приложение, используя свои учетные данные Google, чтобы совершить бронирование и записать его в базу данных.
В консоли Cloud перейдите в раздел API и сервисы и нажмите «Экран согласия OAuth». Вот ссылка на эту страницу. Откроется страница обзора OAuth, где нужно нажать «Начать».

На следующей странице мы указываем название приложения, адрес электронной почты службы поддержки пользователей и нажимаем «Далее».

На следующем экране мы выбираем «Внутреннее» для нашего приложения и снова нажимаем «Далее».

Затем мы указываем контактный адрес электронной почты и нажимаем «Далее».

Затем мы соглашаемся с политикой сервисов Google API и нажимаем кнопку «Создать».

Это приведет нас на страницу, где мы сможем создать OAuth-клиент.

На экране выбираем из выпадающего меню «Веб-приложение», указываем «Cymbal Air» в качестве приложения и нажимаем кнопку «Добавить URI».

URI представляют собой доверенные источники для приложения и зависят от того, откуда вы пытаетесь получить доступ к приложению. Мы указали "http://localhost:8081" в качестве авторизованного URI и "http://localhost:8081/login/google" в качестве URI перенаправления. Эти значения будут работать, если вы введете в браузере "http://localhost:8081" в качестве URI для подключения. Например, при подключении через SSH-туннель с вашего компьютера. Я покажу вам, как это сделать позже.

После нажатия кнопки «Создать» появится всплывающее окно с учетными данными ваших клиентов. Эти данные будут записаны в систему. Вы всегда можете скопировать идентификатор клиента, чтобы использовать его при запуске приложения.

Позже вы увидите, где нужно указать идентификатор клиента.
Создать учетную запись службы
Для нашего сервиса Cloud Run нам необходима выделенная учетная запись службы со всеми необходимыми привилегиями. Для работы сервиса нам нужен доступ к AlloyDB и Cloud Secret Manager. В качестве имени для учетной записи службы мы будем использовать toolbox-identity.
Откройте еще одну вкладку Cloud Shell, используя знак "+" вверху.

В новой вкладке облачной оболочки выполните:
export PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts create toolbox-identity
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/alloydb.client"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/serviceusage.serviceUsageConsumer"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/secretmanager.secretAccessor"
Пожалуйста, обратите внимание, если возникнут какие-либо ошибки. Эта команда предназначена для создания учетной записи службы для облачной службы и предоставления привилегий для работы с менеджером секретов, базой данных и Vertex AI.
Закройте вкладку, нажав Ctrl+D или выполнив команду «Выход» во вкладке:
exit
Подготовка конфигурации MCP Toolbox
Подготовьте конфигурационный файл для MCP Toolbox. Вы можете ознакомиться со всеми параметрами конфигурации в документации , но здесь мы будем использовать пример файла tools.yaml и заменим некоторые значения, такие как имя кластера и экземпляра, пароль AlloyDB и идентификатор проекта, на наши фактические значения.
Экспорт паролей AlloyDB:
export PGPASSWORD=<noted AlloyDB password>
Экспортируйте идентификатор клиента, подготовленный на предыдущем шаге:
export CLIENT_ID=<noted OAuth 2.0 client ID for our application>
Подготовьте конфигурационный файл.
PROJECT_ID=$(gcloud config get-value project)
ADBCLUSTER=alloydb-aip-01
sed -e "s/project: retrieval-app-testing/project: $(gcloud config get-value project)/g" \
-e "s/cluster: my-alloydb-cluster/cluster: $ADBCLUSTER/g" \
-e "s/instance: my-alloydb-instance/instance: $ADBCLUSTER-pr/g" \
-e "s/password: postgres/password: $PGPASSWORD\\n ipType: private/g" \
-e "s/^ *clientId: .*/ clientId: $CLIENT_ID/g" \
cymbal-air-toolbox-demo/tools.yaml >~/tools.yaml
Если вы посмотрите на раздел файла, определяющий целевой источник данных, вы увидите, что мы также добавили строку для использования частного IP-адреса для подключения.
sources:
my-pg-instance:
kind: alloydb-postgres
project: gleb-test-short-003-471020
region: us-central1
cluster: alloydb-aip-01
instance: alloydb-aip-01-pr
database: assistantdemo
user: postgres
password: L23F...
ipType: private
authServices:
my_google_service:
kind: google
clientId: 96828*******-***********.apps.googleusercontent.com
Создайте секрет, используя конфигурацию tools.yaml в качестве источника.
В консоли SSH виртуальной машины выполните следующую команду:
gcloud secrets create tools --data-file=tools.yaml
Ожидаемый вывод в консоль:
student@instance-1:~$ gcloud secrets create tools --data-file=tools.yaml Created version [1] of the secret [tools].
Разверните MCP Toolbox в качестве облачной службы запуска.
Теперь все готово для развертывания MCP Toolbox в качестве сервиса в Cloud Run. Для локального тестирования можно запустить команду "./toolbox –tools-file=./tools.yaml", но если мы хотим, чтобы наше приложение работало в облаке, развертывание в Cloud Run будет гораздо целесообразнее.
В SSH-сессии виртуальной машины выполните:
export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy toolbox \
--image $IMAGE \
--service-account toolbox-identity \
--region us-central1 \
--set-secrets "/app/tools.yaml=tools:latest" \
--args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
--network default \
--subnet default \
--no-allow-unauthenticated
Ожидаемый вывод в консоль:
student@instance-1:~$ export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy toolbox \
--image $IMAGE \
--service-account toolbox-identity \
--region us-central1 \
--set-secrets "/app/tools.yaml=tools:latest" \
--args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
--network default \
--subnet default \
--no-allow-unauthenticated
Deploying container to Cloud Run service [toolbox] in project [gleb-test-short-002-470613] region [us-central1]
✓ Deploying new service... Done.
✓ Creating Revision...
✓ Routing traffic...
Done.
Service [toolbox] revision [toolbox-00001-l9c] has been deployed and is serving 100 percent of traffic.
Service URL: https://toolbox-868691532292.us-central1.run.app
student@instance-1:~$
Проверьте работу сервиса.
Теперь мы можем проверить, работает ли служба и можем ли мы получить доступ к конечной точке. Для получения конечной точки службы и токена аутентификации мы используем утилиту gcloud. В качестве альтернативы вы можете проверить URI службы в консоли облака.

Вы можете скопировать значение и заменить в команде curl часть "$(gcloud run services list –filter="(toolbox)" –format="value(URL)" .
Вот как получить URL-адрес динамически из командной строки:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(toolbox)" --format="value(URL)")
Ожидаемый вывод в консоль:
student@instance-1:~$ curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $(gcloud run services list --filter="(toolbox)" --format="value(URL)") 🧰 Hello, World! 🧰student@instance-1:~$
Если мы видим сообщение "Hello World", это означает, что наш сервис запущен и обрабатывает запросы.
8. Развертывание тестового приложения
Теперь, когда у нас запущена и работает служба получения информации, мы можем развернуть тестовое приложение. Это приложение представляет собой онлайн-помощник по аэропортам, который может предоставлять информацию о рейсах, аэропортах и даже бронировать рейсы на основе данных о рейсах и аэропортах из нашей базы данных.
Приложение можно развернуть локально, на виртуальной машине в облаке или в любом другом сервисе, таком как Cloud Run или Kubernetes. Здесь мы сначала покажем, как развернуть его на виртуальной машине.
Подготовьте окружающую среду
Мы продолжаем работать на нашей виртуальной машине, используя ту же SSH-сессию. Для запуска нашего приложения нам нужны некоторые модули Python, которые мы уже добавили при инициализации базы данных. Давайте переключимся на нашу виртуальную среду Python и изменим местоположение на каталог приложения.
В SSH-сессии виртуальной машины выполните:
source ~/.venv/bin/activate
cd cymbal-air-toolbox-demo
Ожидаемый результат (засекречено):
student@instance-1:~$ source ~/.venv/bin/activate cd cymbal-air-toolbox-demo (.venv) student@instance-1:~/cymbal-air-toolbox-demo$
Приложение «Помощник запуска»
Перед запуском приложения необходимо настроить несколько переменных среды. Для базовой функциональности приложения, такой как поиск информации о рейсах и услугах аэропорта, требуется только переменная TOOLBOX_URL, которая указывает приложению на службу получения данных. Получить её можно с помощью команды gcloud.
В SSH-сессии виртуальной машины выполните:
export TOOLBOX_URL=$(gcloud run services list --filter="(toolbox)" --format="value(URL)")
Ожидаемый результат (засекречено):
student@instance-1:~/cymbal-air-toolbox-demo$ export BASE_URL=$(gcloud run services list --filter="(toolbox)" --format="value(URL)")
Для использования более продвинутых возможностей приложения, таких как бронирование и изменение авиабилетов, нам необходимо войти в приложение, используя свою учетную запись Google. Для этого нам нужно указать переменную среды CLIENT_ID, используя идентификатор клиента OAuth из главы «Подготовка идентификатора клиента»:
export CLIENT_ID=215....apps.googleusercontent.com
Ожидаемый результат (засекречено):
student@instance-1:~/cymbal-air-toolbox-demo$ export CLIENT_ID=215....apps.googleusercontent.com
Теперь мы можем запустить наше приложение:
python run_app.py
Ожидаемый результат:
student@instance-1:~/cymbal-air-toolbox-demo/llm_demo$ python run_app.py INFO: Started server process [2900] INFO: Waiting for application startup. Loading application... INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8081 (Press CTRL+C to quit)
Подключиться к приложению
Существует несколько способов подключения к приложению, работающему на виртуальной машине. Например, можно открыть порт 8081 на виртуальной машине, используя правила брандмауэра в VPC, или создать балансировщик нагрузки с публичным IP-адресом. В данном случае мы будем использовать SSH-туннель к виртуальной машине, преобразуя локальный порт 8080 в порт 8081 виртуальной машины.
Подключение с локального компьютера
Для подключения с локального компьютера необходимо запустить SSH-туннель. Это можно сделать с помощью команды `gcloud compute ssh` .
gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8081:localhost:8081
Ожидаемый результат:
student-macbookpro:~ student$ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081 Warning: Permanently added 'compute.7064281075337367021' (ED25519) to the list of known hosts. Linux instance-1.us-central1-c.c.gleb-test-001.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. student@instance-1:~$
Теперь мы можем открыть браузер и использовать http://localhost:8081 для подключения к нашему приложению. Мы должны увидеть экран приложения.

Подключение из Cloud Shell
В качестве альтернативы можно использовать Google Cloud Shell для подключения. Откройте еще одну вкладку Cloud Shell, используя знак «+» вверху.

В новой вкладке получите URI источника и перенаправления для вашего веб-клиента, выполнив команду gcloud:
echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google"
Вот ожидаемый результат:
student@cloudshell:~ echo "origin:"; echo "https://8080-$WEB_HOST"; echo "redirect:"; echo "https://8080-$WEB_HOST/login/google" origin: https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev redirect: https://8080-cs-35704030349-default.cs-us-east1-rtep.cloudshell.dev/login/google
Используйте URI источника и перенаправления в качестве « Авторизованных источников JavaScript » и «Авторизованных URI перенаправления » для учетных данных, созданных в главе «Подготовка идентификатора клиента», заменив или дополнив исходные значения http://localhost:8080 .
На странице идентификаторов клиентов OAuth 2.0 нажмите на "Cymbal Air".

Укажите URI источника и перенаправления для Cloud Shell и нажмите кнопку «Сохранить».

В новой вкладке облачной оболочки запустите туннель к вашей виртуальной машине, выполнив команду gcloud:
gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081
Если появится ошибка "Невозможно назначить запрошенный адрес", пожалуйста, проигнорируйте её.
Вот ожидаемый результат:
student@cloudshell:~ gcloud compute ssh instance-1 --zone=us-central1-a -- -L 8080:localhost:8081 bind [::1]:8081: Cannot assign requested address inux instance-1.us-central1-a.c.gleb-codelive-01.internal 6.1.0-21-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Sat May 25 19:15:46 2024 from 35.243.235.73 student@instance-1:~$
Это открывает порт 8080 в вашей облачной оболочке, который можно использовать для «предварительного просмотра веб-страниц».
Нажмите на кнопку «Веб-просмотр» в правом верхнем углу Cloud Shell и в выпадающем меню выберите «Предварительный просмотр на порту 8080».

В вашем веб-браузере откроется новая вкладка с интерфейсом приложения. Вы должны увидеть страницу «Помощник службы поддержки клиентов Cymbal Air».

Войдите в приложение
Когда все настроено и приложение открыто, вы можете использовать кнопку «Войти» в правом верхнем углу экрана приложения, чтобы ввести свои учетные данные. Это необязательно и требуется только в том случае, если вы хотите попробовать функциональность бронирования в приложении.

Откроется всплывающее окно, где мы сможем выбрать свои учетные данные.
После авторизации приложение готово, и вы можете начать отправлять свои запросы в поле внизу окна.
В этой демонстрации показан помощник службы поддержки клиентов Cymbal Air. Cymbal Air — вымышленная пассажирская авиакомпания. Помощник представляет собой чат-бот с искусственным интеллектом, который помогает путешественникам управлять рейсами и находить информацию о хабе Cymbal Air в международном аэропорту Сан-Франциско (SFO).
Без авторизации (без CLIENT_ID) это может помочь ответить на вопросы пользователей, например:
Когда следующий рейс в Денвер?
Есть ли какие-нибудь магазины класса люкс рядом с воротами C28?
Где можно купить кофе рядом с выходом A6?
Где можно купить подарок?
Пожалуйста, найдите рейс из Сан-Франциско в Денвер, вылетающий сегодня.
Войдя в приложение, вы можете попробовать другие функции, например, бронирование авиабилетов или проверку того, является ли назначенное вам место у окна или у прохода.

Приложение использует новейшие модели Google Foundation для генерации ответов и дополнения их информацией о рейсах и услугах из рабочей базы данных AlloyDB. Подробнее об этом демонстрационном приложении можно узнать на странице проекта на Github .
9. Очистка окружающей среды
Теперь, когда все задачи выполнены, мы можем приступить к уборке окружающей среды.
Удалить службу Cloud Run
В Cloud Shell выполните:
gcloud run services delete toolbox --region us-central1
Ожидаемый вывод в консоль:
student@cloudshell:~ (gleb-test-short-004)$ gcloud run services delete retrieval-service --region us-central1 Service [retrieval-service] will be deleted. Do you want to continue (Y/n)? Y Deleting [retrieval-service]...done. Deleted service [retrieval-service].
Удалите учетную запись службы для службы, работающей в облаке.
В Cloud Shell выполните:
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet
Ожидаемый вывод в консоль:
student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project) Your active configuration is: [cloudshell-222] student@cloudshell:~ (gleb-test-short-004)$ gcloud iam service-accounts delete retrieval-identity@$PROJECT_ID.iam.gserviceaccount.com --quiet deleted service account [retrieval-identity@gleb-test-short-004.iam.gserviceaccount.com] student@cloudshell:~ (gleb-test-short-004)$
После завершения лабораторной работы удалите экземпляры AlloyDB и кластер.
Удалите кластер AlloyDB и все его экземпляры.
Если вы использовали пробную версию AlloyDB, не удаляйте пробный кластер, если планируете тестировать другие тестовые среды и ресурсы с его помощью. Вы не сможете создать другой пробный кластер в том же проекте.
Кластер уничтожается с помощью опции force, которая также удаляет все экземпляры, принадлежащие кластеру.
В облачной оболочке укажите переменные проекта и среды на случай, если соединение было разорвано и все предыдущие настройки были потеряны:
gcloud config set project <your project id>
export REGION=us-central1
export ADBCLUSTER=alloydb-aip-01
export PROJECT_ID=$(gcloud config get-value project)
Удалите кластер:
gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-001-402417)$ gcloud alloydb clusters delete $ADBCLUSTER --region=$REGION --force All of the cluster data will be lost when the cluster is deleted. Do you want to continue (Y/n)? Y Operation ID: operation-1697820178429-6082890a0b570-4a72f7e4-4c5df36f Deleting cluster...done.
Удалить резервные копии AlloyDB
Удалите все резервные копии AlloyDB для кластера:
for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-001-402417)$ for i in $(gcloud alloydb backups list --filter="CLUSTER_NAME: projects/$PROJECT_ID/locations/$REGION/clusters/$ADBCLUSTER" --format="value(name)" --sort-by=~createTime) ; do gcloud alloydb backups delete $(basename $i) --region $REGION --quiet; done Operation ID: operation-1697826266108-60829fb7b5258-7f99dc0b-99f3c35f Deleting backup...done.
Теперь мы можем уничтожить нашу виртуальную машину.
Удалить виртуальную машину GCE
В Cloud Shell выполните:
export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
--zone=$ZONE \
--quiet
Ожидаемый вывод в консоль:
student@cloudshell:~ (test-project-001-402417)$ export GCEVM=instance-1
export ZONE=us-central1-a
gcloud compute instances delete $GCEVM \
--zone=$ZONE \
--quiet
Deleted
Удалите учетную запись службы для виртуальной машины GCE и службы восстановления.
В Cloud Shell выполните:
PROJECT_ID=$(gcloud config get-value project)
gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet
Ожидаемый вывод в консоль:
student@cloudshell:~ (gleb-test-short-004)$ PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts delete compute-aip@$PROJECT_ID.iam.gserviceaccount.com --quiet Your active configuration is: [cloudshell-222] deleted service account [compute-aip@gleb-test-short-004.iam.gserviceaccount.com] student@cloudshell:~ (gleb-test-short-004)$
10. Поздравляем!
Поздравляем с завершением практического занятия!
Что мы рассмотрели
- Как развернуть кластер AlloyDB
- Как подключиться к AlloyDB
- Как настроить и развернуть службу MCP Toolbox
- Как развернуть пример приложения, используя развернутую службу
11. Опрос
Выход: