От намерений к инфраструктуре: миграция в GKE с помощью агентов

1. Введение

В этом практическом занятии вы узнаете, как использовать ИИ-агента для автоматического выполнения сложной миграции инфраструктуры. Вместо того чтобы вручную писать манифесты Kubernetes или запускать скрипты автоматизации, вы выразите свои намерения на естественном языке, а агент, используя протокол контекста модели (MCP) и сервер Gemini Cloud Assist , сгенерирует и применит конфигурацию за вас.

Возможности сервера GCA MCP

Сервер GCA MCP предоставляет агенту ряд специализированных инструментов:

  • ask_cloud_assist : Это основной интерфейс для получения помощи от Google Cloud Platform и для агента Gemini Cloud Assist. Весь функционал Gemini Cloud Assist доступен через этот инструмент и включает в себя функциональность других инструментов MCP.
  • design_infra : Этот компонент поддерживает рабочие процессы проектирования и архитектуры инфраструктуры на платформе Google Cloud Platform.
  • investigate_issue : Этот параметр поддерживает рабочие процессы для устранения неполадок в Google Cloud. Он может выполнять как быструю, так и более глубокую диагностику с помощью ресурса Investigation.
  • invoke_operation : Этот инструмент поддерживает рабочие процессы для создания, обновления и удаления ресурсов в Google Cloud. Он работает только при включенных действиях агента. Операции записи в Gemini Cloud Assist могут быть выполнены только путем вызова этого инструмента.
  • optimize_costs : Этот параметр поддерживает рабочие процессы для анализа, отслеживания и оптимизации затрат Google Cloud. Он предоставляет подробную разбивку расходов и выявляет возможности для повышения эффективности затрат путем обнаружения простаивающих или недоиспользуемых ресурсов.

Вы начнете с предварительно подготовленной среды, включающей кластер GKE и загруженную модель. Затем вы используете gemini-cli , чтобы дать команду агенту перенести рабочую нагрузку из Cloud Run в GKE и запустить экземпляр вывода Gemma с vLLM, используя подготовленную модель из вашего хранилища.

Что вы будете делать

  • Разверните кластер GKE и загрузите модель Gemma с помощью Terraform.
  • Настройте gemini-cli с правилами агента и сервером MCP.
  • Используйте конкретную подсказку на естественном языке, чтобы дать агенту указание выполнить полную миграцию и развертывание.
  • Проверьте развертывание, выполненное агентом.

Что вам понадобится

  • Веб-браузер, например Chrome .
  • Проект Google Cloud с включенной функцией выставления счетов.
  • Токен "Обнимающее лицо" (необходим для загрузки модели Джеммы на этапе подготовки).

Этот практический семинар предназначен для разработчиков всех уровней, включая начинающих.

Ориентировочная продолжительность: 45-60 минут.

2. Прежде чем начать

Создайте или выберите проект Google Cloud.

  1. В консоли Google Cloud выберите или создайте проект Google Cloud .
  2. Убедитесь, что для вашего облачного проекта включена функция выставления счетов.

Запустить Cloud Shell

  1. В верхней части консоли Google Cloud нажмите кнопку «Активировать Cloud Shell» .
  2. Проверка подлинности:
gcloud auth list
  1. Подтвердите свой проект:
gcloud config get project
  1. При необходимости установите значение:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID

Включить API

Выполните эту команду, чтобы включить все необходимые API:

gcloud services enable \
  run.googleapis.com \
  container.googleapis.com \
  aiplatform.googleapis.com \
  compute.googleapis.com \
  cloudbuild.googleapis.com \
  cloudresourcemanager.googleapis.com

Кроме того, включите службу Gemini Cloud Assist MCP:

gcloud beta services mcp enable geminicloudassist.googleapis.com

3. Создайте соответствующую обстановку.

На этом этапе вы подготовите среду, создав пользовательский образ чат-бота, сформировав кластер GKE и загрузив модель Gemma в хранилище Cloud Storage.

Часто организации начинают с API Gemini, но позже решают перейти на модель самостоятельного размещения для большего контроля, персонализации или использования оптимизированной версии, специально разработанной для их бизнеса. В этом практическом занятии мы используем Gemma в качестве примера мощной открытой модели, которую вы можете разместить самостоятельно в GKE. Размещение её в хранилище Cloud Storage делает её доступной для использования нашим кластером.

Скачать демонстрационные материалы

Клонируйте указанную папку из репозитория GitHub.

git clone --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/next-26-keynotes.git
cd next-26-keynotes
git sparse-checkout set devkey/intent-to-infrastructure
cd devkey/intent-to-infrastructure

Создать изображение чат-бота

Перед развертыванием инфраструктуры необходимо собрать пользовательский образ чат-бота и загрузить его в реестр артефактов. Этот образ будет использоваться Cloud Run на следующем шаге.

  1. Создайте репозиторий Artifact Registry с именем chatbot-repo в asia-southeast1 :
    gcloud artifacts repositories create chatbot-repo \
        --repository-format=docker \
        --location=asia-southeast1 \
        --description="Chatbot Docker repository"
    
  2. Перейдите в каталог src :
    cd src
    
  3. Создайте и загрузите образ с помощью Cloud Build:
    gcloud builds submit --config cloudbuild.yaml \
        --substitutions=_LOCATION="asia-southeast1",_REPOSITORY_ID="chatbot-repo",_IMAGE_NAME="chatbot",_IMAGE_TAG="latest"
    
  4. Вернитесь в корневую папку проекта:
    cd ..
    

Базовая инфраструктура обеспечения

Перейдите в каталог terraform и выполните шаг 1 для создания кластера GKE.

cd terraform
./deploy.sh demo step1 apply

Этот скрипт использует Terraform для подготовки базовой инфраструктуры. Он создает VPC, кластер GKE, учетные записи служб и развертывает начальную службу Cloud Run, используя только что созданный образ чат-бота.

В процессе Terraform отобразит план и запросит подтверждение. Вам потребуется ввести yes , чтобы подтвердить и продолжить:

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

Весь процесс может занять от 15 до 20 минут.

После завершения развертывания найдите строку cloud_run_url в выводе Terraform, отображаемом в терминале. Щелкните по этой ссылке, чтобы открыть чат-бота в браузере. Теперь вы можете взаимодействовать с чат-ботом, который в данный момент работает на Gemini 2.5 Flash.

Скачать модель

На этом этапе мы разместим модель Gemma в хранилище Cloud Storage. Хотя мы начинаем с управляемого API Gemini, вы можете выбрать запуск собственной оптимизированной модели или другой пользовательской открытой модели. В качестве альтернативы, вы можете просто оставить управление выполнением модели в собственном кластере по соображениям безопасности или соответствия требованиям. Размещение модели на этом этапе подготавливает нас к миграции с управляемого API Gemini на самостоятельно размещенную модель в GKE.

Выполните шаг 2, чтобы загрузить модель Gemma в ваш бакет GCS. Вам понадобится ваш токен Hugging Face . Этот процесс выполняется в вашем кластере GKE и займет около 15 минут (или дольше в зависимости от трафика) для загрузки модели из Hugging Face и ее загрузки в ваш бакет для последующего использования.

./deploy.sh demo step2 apply -var="hf_token=<YOUR_HF_TOKEN>"

Эта команда Terraform создает задание Kubernetes в вашем кластере GKE для обработки загрузки. Скрипт Terraform будет оставаться активным до тех пор, пока выполняется задание.

Если вы хотите отслеживать ход выполнения из другой сессии командной оболочки или убедиться, что процесс завершился после запуска, вы можете выполнить следующую команду:

kubectl get jobs

4. Настройка агента и MCP

Теперь мы настроим агента, который будет выполнять миграцию. Мы будем использовать gemini-cli и напишем для него правила взаимодействия со средой.

Сервер Gemini Cloud Assist (GCA) MCP является важнейшим компонентом этого процесса. Он выступает в качестве моста между вашим клиентским агентом и Google Cloud, позволяя ему проводить расследования, генерировать планы (подобно командам gcloud и kubectl ) и применять изменения непосредственно к ресурсам в вашем облачном проекте.

Убедитесь, что вам назначена роль, разрешающая вызов инструментов MCP, например, roles/geminicloudassist.user . Если позже возникнут проблемы с правами доступа, обратитесь к документации по настройке ролей IAM для Cloud Assist.

Более подробные инструкции по интеграции Gemini Cloud Assist со сторонними инструментами см. в документации «Интеграция Gemini Cloud Assist со сторонними инструментами с помощью MCP» .

Установите расширение Gemini Cloud Assist.

  1. Аутентификация с использованием учетных данных приложения по умолчанию (ADC) выполняется следующим образом:
gcloud auth application-default login
  1. Установите сервер MCP в качестве расширения Gemini CLI:
gemini extensions install https://github.com/GoogleCloudPlatform/gemini-cloud-assist-mcp
  1. Убедитесь в успешной установке навыка: запустите gemini и выполните следующую команду, чтобы отобразить список активных навыков:
/skills list

Убедитесь, что в списке отображается навык, связанный с Gemini Cloud Assist. Введите exit , чтобы вернуться к командной строке Cloud Shell.

Включение мутаций в Gemini Cloud Assist

Чтобы агент мог применять изменения к вашей инфраструктуре, необходимо включить функции изменения данных в пользовательском интерфейсе Gemini Cloud Assist.

  1. Откройте боковую панель Gemini Assist, щелкнув по логотипу Gemini в правом верхнем углу окна консоли Google Cloud.
    Боковая панель Gemini Assist
  2. Включите все необходимые API, перечисленные на боковой панели.
    Включить API
  3. Перейдите в настройки на боковой панели и установите флажок «Включить Cloud Assist для выполнения действий» .
    Перейдите в Настройки
    Включить выполнение

Настройка правил агента

В каталоге проекта в корневой папке ( intent-to-infrastructure ) находится пользовательский файл gemini.md . Этот файл содержит правила, которые направляют агента на использование правильных инструментов.

Убедитесь, что этот файл существует в вашей директории. Вам следует запускать gemini из этой директории, чтобы у него был доступ к файлам Terraform, коду приложения и файлу правил gemini.md .

5. Шаг 1: Перенос чат-бота в GKE

Теперь мы воспользуемся агентом для выполнения первой части миграции: переноса приложения чат-бота из Cloud Run в GKE.

  1. Запустите gemini из корневого каталога intent-to-infrastructure (убедитесь, что у него есть доступ к gemini.md ).
  2. Для начала попросим агента изучить проект, чтобы понять его приложение и инфраструктуру. Введите следующую подсказку:
Tell me about the app and infrastructure in this project

Агент должен прочитать файлы в каталоге и предоставить вам обзор приложения чат-бота и конфигурации Terraform.

  1. Теперь используйте следующую подсказку, чтобы дать указание агенту выполнить миграцию.
Convert my Cloud Run service to the equivalent on GKE.
  1. Агент должен:
    • Воспользуйтесь инструментом ask_cloud_assist , чтобы понять контекст.
    • Используйте инструмент design_infra для генерации YAML-файла Kubernetes для приложения чат-бота.
    • Спросите: «Вы хотите продолжить применение этой конфигурации?»
  1. Ответьте « yes , чтобы применить изменения. Агент использует invoke_operation для развертывания ресурсов в вашем кластере GKE.

Проверьте шаг 1.

  1. Получите список услуг:
kubectl get services

Вы должны увидеть запущенную службу приложения чат-бота.

  1. Настройте переадресацию портов для доступа к чат-боту:
kubectl port-forward svc/chatbot-service 8080:80

(Примечание: Заменить)

chatbot-service

(с фактическим названием сервиса, сгенерированным агентом, если оно отличается).

Проверьте работу чат-бота. Он должен по-прежнему отвечать, используя API Gemini (как было настроено в Cloud Run).

6. Шаг 2: Разверните Gemma через vLLM и выполните повторное подключение.

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

  1. В той же сессии gemini введите следующую подсказку:
Now that the chatbot is on GKE, add a vLLM service running the Gemma model from my storage bucket in the same cluster. Make sure to give the vLLM service at least 10 minutes to start up to account for loading the large model. Then, update the chatbot service to reference this vLLM service instead of the Gemini API.
  1. Агент должен:
    • Используйте design_infra для генерации YAML-файла для развертывания и обслуживания vLLM.
    • Обновите YAML-файл развертывания чат-бота, изменив переменные среды (или конфигурацию) таким образом, чтобы они указывали на новый сервис vLLM вместо API Gemini.
    • Для применения изменений запросите подтверждение.
  2. Ответьте « yes , чтобы применить изменения.

Проверьте шаг 2.

  1. Получите список капсул еще раз:
kubectl get pods

Теперь вы должны увидеть модули как для чат-бота, так и для vLLM.

  1. Как только vLLM будет готов, при необходимости снова настройте переадресацию портов для службы чат-бота и протестируйте его. Теперь он должен работать на основе вашей самостоятельно размещенной модели Gemma!

7. Уборка

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

Выполните команду уничтожения базовой инфраструктуры:

cd terraform
./deploy.sh demo step1 destroy

Кроме того, вы можете удалить или отключить расширение Gemini Cloud Assist, если хотите очистить локальную среду. Используйте gemini extensions uninstall или gemini extensions disable указав при этом название расширения.

8. Что дальше?

Чтобы узнать больше о Gemini Cloud Assist и его расширенных функциях, ознакомьтесь с этими материалами:

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

Поздравляем! Вы успешно выполнили миграцию рабочей нагрузки в GKE с помощью агента, используя обработку естественного языка и MCP.