Intent to Infrastructure: migracja do GKE oparta na agentach

1. Wprowadzenie

Z tego ćwiczenia dowiesz się, jak używać agenta AI do automatycznego przeprowadzania złożonej migracji infrastruktury. Zamiast ręcznie pisać manifesty Kubernetes lub uruchamiać skrypty automatyzacji, możesz wyrazić swoje intencje w języku naturalnym, a agent użyje protokołu Model Context Protocol (MCP) i serwera Gemini Cloud Assist, aby wygenerować i zastosować konfigurację.

Możliwości serwera MCP GCA

Serwer MCP GCA udostępnia agentowi kilka specjalistycznych narzędzi:

  • ask_cloud_assist: to główne miejsce, w którym można uzyskać pomoc dotyczącą Google Cloud Platform i agenta Gemini Cloud Assist. Wszystkie funkcje Gemini Cloud Assist są dostępne w tym narzędziu, które obejmuje funkcje innych narzędzi MCP.
  • design_infra: obsługuje przepływy pracy związane z projektowaniem i architekturą infrastruktury na platformie Google Cloud.
  • investigate_issue: obsługuje przepływy pracy związane z rozwiązywaniem problemów w Google Cloud. Może szybko rozwiązywać problemy lub przeprowadzać bardziej szczegółowe rozwiązywanie problemów za pomocą zasobu Investigation.
  • invoke_operation: obsługuje przepływy pracy związane z tworzeniem, aktualizowaniem i usuwaniem zasobów w Google Cloud. To narzędzie działa tylko wtedy, gdy włączone są działania agenta. Operacje zapisu w Gemini Cloud Assist można wykonywać tylko przez wywołanie tego narzędzia.
  • optimize_costs: obsługuje przepływy pracy związane z analizowaniem, śledzeniem i optymalizowaniem kosztów Google Cloud. Zawiera szczegółowe zestawienia wydatków i wskazuje możliwości zwiększenia opłacalności przez wykrywanie nieużywanych lub niewystarczająco wykorzystywanych zasobów.

Zaczniesz od wstępnie przygotowanego środowiska z klastrem GKE i pobranym modelem. Następnie użyj znaku gemini-cli, aby poprosić agenta o przeniesienie zadania z Cloud Run do GKE i uruchomienie instancji wnioskowania Gemma z vLLM przy użyciu przygotowanego modelu w zasobniku pamięci.

Jakie zadania wykonasz

  • Przygotuj klaster GKE i pobierz model Gemma za pomocą Terraform.
  • Skonfiguruj gemini-cli za pomocą reguł agenta i serwera MCP.
  • Użyj konkretnego prompta w języku naturalnym, aby polecić agentowi przeprowadzenie pełnej migracji i wdrożenia.
  • Sprawdź wdrożenie wykonane przez agenta.

Czego potrzebujesz

  • przeglądarka, np. Chrome;
  • Projekt Google Cloud z włączonymi płatnościami.
  • Token Hugging Face (wymagany do pobrania modelu Gemma w fazie przygotowania).

To ćwiczenie jest przeznaczone dla deweloperów na wszystkich poziomach zaawansowania, w tym dla początkujących.

Szacowany czas trwania: 45–60 minut.

2. Zanim zaczniesz

Utwórz lub wybierz projekt Google Cloud.

  1. W konsoli Google Cloud wybierz lub utwórz projekt w chmurze Google Cloud.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności.

Uruchamianie Cloud Shell

  1. Kliknij Aktywuj Cloud Shell u góry konsoli Google Cloud.
  2. Potwierdź uwierzytelnianie:
gcloud auth list
  1. Potwierdź projekt:
gcloud config get project
  1. W razie potrzeby ustaw:
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project $PROJECT_ID

Włącz interfejsy API

Aby włączyć wszystkie wymagane interfejsy API, uruchom to polecenie:

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

Włącz też usługę MCP Gemini Cloud Assist:

gcloud beta services mcp enable geminicloudassist.googleapis.com

3. Przygotowywanie środowiska

W tym kroku przygotujesz środowisko, tworząc niestandardowy obraz chatbota, tworząc klaster GKE i pobierając model Gemma do zasobnika Cloud Storage.

Organizacje często zaczynają od interfejsu Gemini API, ale później decydują się na przejście na model hostowany samodzielnie, aby uzyskać większą kontrolę, możliwość dostosowywania lub korzystać z wersji dostrojonej do ich potrzeb biznesowych. W tym ćwiczeniu używamy modelu Gemma jako przykładu zaawansowanego modelu open source, który możesz hostować samodzielnie w GKE. Przechowywanie go w zasobniku Cloud Storage sprawia, że jest on dostępny dla naszego klastra.

Pobieranie komponentów wersji demonstracyjnej

Sklonuj konkretny folder z repozytorium 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

Tworzenie obrazu czatbota

Zanim udostępnisz infrastrukturę, musisz utworzyć niestandardowy obraz chatbota i przesłać go do Artifact Registry. Ten obraz zostanie użyty przez Cloud Run w następnym kroku.

  1. Utwórz repozytorium Artifact Registry o nazwie chatbot-repo w asia-southeast1:
    gcloud artifacts repositories create chatbot-repo \
        --repository-format=docker \
        --location=asia-southeast1 \
        --description="Chatbot Docker repository"
    
  2. Przejdź do katalogu src:
    cd src
    
  3. Utwórz i prześlij obraz za pomocą Cloud Build:
    gcloud builds submit --config cloudbuild.yaml \
        --substitutions=_LOCATION="asia-southeast1",_REPOSITORY_ID="chatbot-repo",_IMAGE_NAME="chatbot",_IMAGE_TAG="latest"
    
  4. Wróć do katalogu głównego projektu:
    cd ..
    

Udostępnianie infrastruktury podstawowej

Przejdź do katalogu terraform i wykonaj krok 1, aby utworzyć klaster GKE.

cd terraform
./deploy.sh demo step1 apply

Ten skrypt używa Terraform do udostępniania infrastruktury bazowej. Tworzy sieć VPC, klaster GKE i konta usługi oraz wdraża początkową usługę Cloud Run przy użyciu utworzonego przez Ciebie obrazu chatbota.

W trakcie tego procesu Terraform wyświetli plan i poprosi o potwierdzenie. Aby zatwierdzić i kontynuować, wpisz yes:

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

Cały proces może potrwać 15–20 minut.

Po zakończeniu wdrażania w danych wyjściowych Terraform wyświetlanych w terminalu poszukaj znaku cloud_run_url. Kliknij adres URL, aby otworzyć chatbota w przeglądarce. Możesz teraz korzystać z czatbota, który obecnie działa w oparciu o Gemini 2.5 Flash.

Pobieranie modelu

W tym kroku umieścimy model Gemma w zasobniku Cloud Storage. Zaczynamy od zarządzanego interfejsu Gemini API, ale możesz też używać dostosowanego modelu po dostrajaniu lub innego niestandardowego modelu otwartego. Możesz też po prostu chcieć, aby wykonywanie modelu było zarządzane w Twoim klastrze ze względów bezpieczeństwa lub zgodności. Przygotowanie modelu w ten sposób umożliwia migrację z zarządzanego interfejsu Gemini API do modelu hostowanego samodzielnie w GKE.

Uruchom krok 2, aby pobrać model Gemma do zasobnika GCS. Będziesz potrzebować tokena Hugging Face. Ten proces jest uruchamiany w klastrze GKE i trwa około 15 minut (lub dłużej w zależności od ruchu). Polega na pobraniu modelu z Hugging Face i przesłaniu go do zasobnika do późniejszego wykorzystania.

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

To polecenie Terraform tworzy zadanie Kubernetes w klastrze GKE, które obsługuje pobieranie. Skrypt Terraform będzie aktywny, dopóki zadanie jest uruchomione.

Jeśli chcesz monitorować postęp z innej sesji powłoki lub sprawdzić, czy po uruchomieniu skryptu został on ukończony, możesz uruchomić to polecenie:

kubectl get jobs

4. Konfigurowanie agenta i MCP

Teraz skonfigurujemy agenta, który przeprowadzi migrację. Użyjemy gemini-cli i wyposażymy go w reguły interakcji ze środowiskiem.

Serwer MCP Gemini Cloud Assist (GCA) jest kluczowym elementem tego procesu. Działa on jako pomost między agentem po stronie klienta a Google Cloud, umożliwiając mu przeprowadzanie analiz, generowanie planów (np. poleceń gcloudkubectl) oraz wprowadzanie zmian bezpośrednio w zasobach w projekcie w chmurze.

Upewnij się, że masz przypisaną rolę, która umożliwia wywoływanie narzędzi MCP, np. roles/geminicloudassist.user. Jeśli później napotkasz problemy z uprawnieniami, zapoznaj się z dokumentacją dotyczącą konfigurowania ról uprawnień w Cloud Assist.

Szczegółowe instrukcje integracji Gemini Cloud Assist z narzędziami innych firm znajdziesz w dokumentacji Integracja Gemini Cloud Assist z narzędziami innych firm za pomocą MCP.

Instalowanie rozszerzenia Gemini Cloud Assist

  1. Uwierzytelnij się za pomocą domyślnego uwierzytelniania aplikacji (ADC), uruchamiając to polecenie:
gcloud auth application-default login
  1. Zainstaluj serwer MCP jako dodatek do interfejsu wiersza poleceń Gemini:
gemini extensions install https://github.com/GoogleCloudPlatform/gemini-cloud-assist-mcp
  1. Sprawdź, czy umiejętność została zainstalowana: kliknij Start gemini i uruchom to polecenie, aby wyświetlić listę aktywnych umiejętności:
/skills list

Sprawdź, czy na liście widzisz umiejętność związaną z Gemini Cloud Assist. Wpisz exit, aby wrócić do wiersza poleceń Cloud Shell.

Włączanie mutacji w Gemini Cloud Assist

Aby umożliwić agentowi wprowadzanie zmian w infrastrukturze, musisz włączyć funkcje mutacji w interfejsie Gemini Cloud Assist.

  1. Otwórz panel boczny Gemini Assist, klikając logo Gemini w prawym górnym rogu okna konsoli Google Cloud.
    Panel boczny Gemini Assist
  2. Włącz wszystkie niezbędne interfejsy API wymienione na pasku bocznym.
    Włącz interfejsy API
  3. Na pasku bocznym otwórz ustawienia i zaznacz opcję „Włącz Cloud Assist, aby wykonywać działania”.
    Wybierz Ustawienia.
    Włącz wykonywanie

Konfigurowanie reguł agenta

W katalogu projektu znajduje się niestandardowy plik gemini.md w folderze głównym (intent-to-infrastructure). Ten plik zawiera reguły, które pomagają agentowi korzystać z odpowiednich narzędzi.

Sprawdź, czy ten plik znajduje się w Twoim katalogu. Uruchom gemini w tym katalogu, aby mieć dostęp do plików Terraform, kodu aplikacji i pliku reguł gemini.md.

5. Krok 1. Przenieś chatbota do GKE

Teraz użyjemy agenta, aby wykonać pierwszą część migracji: przenieść aplikację chatbota z Cloud Run do GKE.

  1. Uruchom gemini z katalogu głównego intent-to-infrastructure (upewnij się, że ma dostęp do gemini.md).
  2. Najpierw poprośmy agenta o zbadanie projektu, aby poznać aplikację i infrastrukturę. Wpisz ten prompt:
Tell me about the app and infrastructure in this project

Agent powinien odczytać pliki w katalogu i przedstawić Ci omówienie aplikacji czatbota oraz konfiguracji Terraform.

  1. Teraz użyj tego prompta, aby polecić agentowi przeprowadzenie migracji.
Convert my Cloud Run service to the equivalent on GKE.
  1. Przedstawiciel powinien:
    • Użyj narzędzia ask_cloud_assist, aby poznać kontekst.
    • Użyj narzędzia design_infra, aby wygenerować plik YAML Kubernetes dla aplikacji czatbota.
    • Zadaj pytanie: „Czy chcesz zastosować tę konfigurację?”.
  1. Aby zastosować zmiany, naciśnij yes. Agent użyje invoke_operation do wdrożenia zasobów w klastrze GKE.

Krok 1 weryfikacji

  1. Wyświetl listę usług:
kubectl get services

Powinna być widoczna usługa uruchomionej aplikacji czatbota.

  1. Przekieruj port usługi, aby uzyskać dostęp do chatbota:
kubectl port-forward svc/chatbot-service 8080:80

(Uwaga: zastąp

chatbot-service

z rzeczywistą nazwą usługi wygenerowaną przez agenta, jeśli jest inna).

Przetestuj czatbota. Powinien nadal odpowiadać za pomocą interfejsu Gemini API (zgodnie z konfiguracją w Cloud Run).

6. Krok 2. Wdróż model Gemma za pomocą vLLM i Reconnect

W tym kroku użyjemy agenta do wdrożenia hostowanego samodzielnie modelu Gemma w GKE i ponownego połączenia z nim naszej aplikacji.

  1. W tej samej sesji gemini wpisz ten prompt:
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. Przedstawiciel powinien:
    • Użyj polecenia design_infra, aby wygenerować plik YAML na potrzeby wdrożenia i usługi vLLM.
    • Zaktualizuj plik YAML wdrożenia chatbota, aby zmienić zmienne środowiskowe (lub konfigurację) tak, aby wskazywały nową usługę vLLM zamiast interfejsu Gemini API.
    • Poproś o potwierdzenie, aby zastosować zmiany.
  2. Aby zastosować zmiany, naciśnij yes.

Weryfikacja – krok 2

  1. Ponownie pobierz listę podów:
kubectl get pods

Powinny być widoczne pody zarówno dla chatbota, jak i vLLM.

  1. Gdy vLLM będzie gotowy, w razie potrzeby ponownie przekieruj port usługi chatbot i przetestuj go. Powinien teraz korzystać z samodzielnie hostowanego modelu Gemma.

7. Czyszczenie

Aby uniknąć obciążenia konta Google Cloud bieżącymi opłatami, usuń zasoby utworzone podczas tego ćwiczenia.

Uruchom polecenie destroy dla infrastruktury bazowej:

cd terraform
./deploy.sh demo step1 destroy

Jeśli chcesz zwolnić miejsce w środowisku lokalnym, możesz też odinstalować lub wyłączyć rozszerzenie Gemini Cloud Assist. Użyj symbolu gemini extensions uninstall lub gemini extensions disable, a potem wpisz nazwę rozszerzenia.

8. Co dalej?

Więcej informacji o Gemini Cloud Assist i funkcjach zaawansowanych znajdziesz w tych materiałach:

9. Gratulacje

Gratulacje! Udało Ci się przeprowadzić migrację zadania do GKE przy użyciu agenta, języka naturalnego i MCP.