इंटेंट से इन्फ़्रास्ट्रक्चर तक: एजेंट की मदद से GKE पर माइग्रेट करना

1. परिचय

इस कोडलैब में, आपको यह जानने को मिलेगा कि किसी एआई एजेंट का इस्तेमाल करके, जटिल इंफ़्रास्ट्रक्चर माइग्रेशन को अपने-आप पूरा करने का तरीका क्या है. Kubernetes मेनिफ़ेस्ट को मैन्युअल तरीके से लिखने या ऑटोमेशन स्क्रिप्ट चलाने के बजाय, नैचुरल लैंग्वेज में अपना मकसद बताएं. इसके बाद, एजेंट आपके लिए कॉन्फ़िगरेशन जनरेट करेगा और उसे लागू करेगा. इसके लिए, वह मॉडल कॉन्टेक्स्ट प्रोटोकॉल (एमसीपी) और Gemini Cloud Assist सर्वर का इस्तेमाल करेगा.

GCA एमसीपी सर्वर की क्षमताएं

GCA एमसीपी सर्वर, एजेंट को कई खास टूल उपलब्ध कराता है:

  • ask_cloud_assist: यह Google Cloud Platform से जुड़ी सहायता पाने और Gemini Cloud Assist एजेंट से बातचीत करने का मुख्य इंटरफ़ेस है. Gemini Cloud Assist की सभी सुविधाओं को इस टूल से ऐक्सेस किया जा सकता है. इसमें अन्य एमसीपी टूल की सुविधाएं भी शामिल हैं.
  • design_infra: इससे Google Cloud Platform पर इन्फ़्रास्ट्रक्चर को डिज़ाइन और तैयार करने के वर्कफ़्लो में मदद मिलती है.
  • investigate_issue: इससे Google Cloud में समस्या हल करने के लिए वर्कफ़्लो को सपोर्ट किया जाता है. यह जांच के लिए उपलब्ध संसाधन की मदद से, समस्याओं को तुरंत या ज़्यादा गहराई से हल कर सकता है.
  • invoke_operation: इससे Google Cloud में संसाधन बनाने, अपडेट करने, और मिटाने के लिए वर्कफ़्लो को सपोर्ट किया जाता है. यह टूल सिर्फ़ तब काम करता है, जब एजेंट ऐक्शन चालू हों. Gemini Cloud Assist में लिखने से जुड़ी कार्रवाइयां सिर्फ़ इस टूल को चालू करके की जा सकती हैं.
  • optimize_costs: यह Google Cloud की लागत का विश्लेषण करने, उसे ट्रैक करने, और ऑप्टिमाइज़ करने के लिए वर्कफ़्लो के साथ काम करता है. यह टूल, खर्च की पूरी जानकारी देता है. साथ ही, ऐसे संसाधनों की पहचान करता है जिनका इस्तेमाल नहीं किया जा रहा है या कम इस्तेमाल किया जा रहा है. इससे लागत कम करने के अवसरों का पता चलता है.

आपको पहले से तैयार किया गया एक एनवायरमेंट मिलेगा. इसमें GKE क्लस्टर और डाउनलोड किया गया मॉडल होगा. इसके बाद, gemini-cli का इस्तेमाल करके एजेंट को Cloud Run से GKE पर वर्कलोड माइग्रेट करने के लिए कहें. साथ ही, अपने स्टोरेज बकेट में मौजूद स्टेज किए गए मॉडल का इस्तेमाल करके, vLLM के साथ Gemma इन्फ़रेंस इंस्टेंस शुरू करने के लिए कहें.

आपको क्या करना होगा

  • Terraform का इस्तेमाल करके, GKE क्लस्टर को स्टेज करें और Gemma मॉडल डाउनलोड करें.
  • एजेंट के नियमों और एमसीपी सर्वर की मदद से, gemini-cli को कॉन्फ़िगर करें.
  • किसी खास नैचुरल लैंग्वेज प्रॉम्प्ट का इस्तेमाल करके, एजेंट को पूरा माइग्रेशन और डिप्लॉयमेंट करने का निर्देश दें.
  • एजेंट की ओर से किए गए डिप्लॉयमेंट की पुष्टि करें.

आपको किन चीज़ों की ज़रूरत होगी

  • कोई वेब ब्राउज़र, जैसे कि Chrome.
  • बिलिंग की सुविधा वाला Google क्लाउड प्रोजेक्ट.
  • Hugging Face टोकन (स्टेजिंग फ़ेज़ के दौरान Gemma मॉडल डाउनलोड करने के लिए ज़रूरी है).

यह कोडलैब, सभी लेवल के डेवलपर के लिए है. इसमें शुरुआती डेवलपर भी शामिल हैं.

अनुमानित अवधि: 45 से 60 मिनट.

2. शुरू करने से पहले

Google Cloud प्रोजेक्ट बनाना या चुनना

  1. Google Cloud Console में जाकर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो.

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

एपीआई चालू करें

सभी ज़रूरी एपीआई चालू करने के लिए, यह निर्देश चलाएं:

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 बकेट में डाउनलोड करना होगा.

अक्सर, संगठन Gemini API का इस्तेमाल शुरू करते हैं. हालांकि, बाद में वे ज़्यादा कंट्रोल, पसंद के मुताबिक बनाने या अपने कारोबार के हिसाब से फ़ाइन-ट्यून किए गए वर्शन का इस्तेमाल करने के लिए, सेल्फ़-होस्ट किए गए मॉडल पर माइग्रेट करने का फ़ैसला करते हैं. इस कोडलैब में, हमने 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

चैटबॉट बनाने की इमेज

इन्फ़्रास्ट्रक्चर को चालू करने से पहले, आपको कस्टम चैटबॉट इमेज बनानी होगी और उसे Artifact Registry में पुश करना होगा. इस इमेज का इस्तेमाल Cloud Run अगले चरण में करेगा.

  1. asia-southeast1 में chatbot-repo नाम की Artifact Registry रिपॉज़िटरी बनाएं:
    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 डायरेक्ट्री पर जाएं और GKE क्लस्टर बनाने के लिए, पहला चरण पूरा करें.

cd terraform
./deploy.sh demo step1 apply

यह स्क्रिप्ट, बुनियादी इन्फ़्रास्ट्रक्चर को उपलब्ध कराने के लिए Terraform का इस्तेमाल करती है. यह वीपीसी, 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 मिनट लग सकते हैं.

डिप्लॉयमेंट पूरा होने के बाद, टर्मिनल में प्रिंट किए गए Terraform आउटपुट में cloud_run_url ढूंढें. अपने ब्राउज़र में चैटबॉट खोलने के लिए, यूआरएल पर क्लिक करें. अब चैटबॉट से बातचीत की जा सकती है. फ़िलहाल, यह Gemini 2.5 Flash पर काम कर रहा है.

मॉडल डाउनलोड करना

इस चरण में, हम Gemma मॉडल को Cloud Storage बकेट में स्टेज करेंगे. हम मैनेज किए गए Gemini API से शुरुआत कर रहे हैं. हालाँकि, आपके पास फ़ाइन-ट्यून किए गए कस्टम मॉडल या किसी अन्य कस्टम ओपन मॉडल को चलाने का विकल्प होता है. इसके अलावा, सुरक्षा या अनुपालन से जुड़ी वजहों से, आपको मॉडल के एक्ज़ीक्यूशन को अपने क्लस्टर में ही मैनेज करना पड़ सकता है. यहां मॉडल को स्टेज करने से, हमें मैनेज किए गए Gemini API से GKE पर मौजूद, खुद होस्ट किए गए मॉडल पर माइग्रेट करने में मदद मिलती है.

Gemma मॉडल को अपने GCS बकेट में डाउनलोड करने के लिए, दूसरा चरण पूरा करें. आपके पास Hugging Face टोकन होना चाहिए. यह प्रोसेस आपके GKE क्लस्टर पर चलती है. इसमें Hugging Face से मॉडल डाउनलोड करने और उसे आपके बकेट में अपलोड करने में करीब 15 मिनट लगेंगे. हालांकि, इसमें ज़्यादा समय भी लग सकता है. यह समय, ट्रैफ़िक पर निर्भर करता है.

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

यह Terraform कमांड, डाउनलोड को मैनेज करने के लिए आपके GKE क्लस्टर पर एक Kubernetes जॉब बनाती है. जब तक नौकरी चल रही है, तब तक Terraform स्क्रिप्ट चालू रहेगी.

अगर आपको किसी दूसरे शेल सेशन से प्रोग्रेस को मॉनिटर करना है या यह पुष्टि करनी है कि रन के बाद यह पूरा हो गया है, तो यह कमांड चलाएं:

kubectl get jobs

4. एजेंट और एमसीपी सेट अप करना

अब हम उस एजेंट को कॉन्फ़िगर करेंगे जो माइग्रेशन करेगा. हम gemini-cli का इस्तेमाल करेंगे और इसे आस-पास के माहौल से इंटरैक्ट करने के नियमों के साथ तैयार करेंगे.

Gemini Cloud Assist (GCA) MCP सर्वर, इस फ़्लो का एक अहम हिस्सा है. यह आपके क्लाइंट-साइड एजेंट और Google Cloud के बीच एक पुल की तरह काम करता है. इससे, जांच करने, प्लान जनरेट करने (जैसे, gcloud और kubectl कमांड) के साथ-साथ, आपके क्लाउड प्रोजेक्ट में मौजूद संसाधनों में सीधे तौर पर बदलाव करने में मदद मिलती है.

पक्का करें कि आपको ऐसी भूमिका दी गई हो जिससे एमसीपी टूल को कॉल किया जा सके. जैसे, roles/geminicloudassist.user. अगर आपको बाद में अनुमति से जुड़ी समस्याएं आती हैं, तो Cloud Assist के लिए IAM भूमिकाएं कॉन्फ़िगर करने से जुड़ा दस्तावेज़ पढ़ें.

Gemini Cloud Assist को तीसरे पक्ष के टूल के साथ इंटिग्रेट करने के बारे में ज़्यादा जानकारी पाने के लिए, एमसीपी का इस्तेमाल करके, Gemini Cloud Assist को तीसरे पक्ष के टूल के साथ इंटिग्रेट करना लेख पढ़ें.

Gemini Cloud Assist एक्सटेंशन इंस्टॉल करना

  1. ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल (एडीसी) की मदद से पुष्टि करने के लिए, यह कमांड चलाएं:
gcloud auth application-default login
  1. एमसीपी सर्वर को Gemini CLI एक्सटेंशन के तौर पर इंस्टॉल करें:
gemini extensions install https://github.com/GoogleCloudPlatform/gemini-cloud-assist-mcp
  1. पुष्टि करें कि स्किल इंस्टॉल हो गई है: gemini शुरू करें और चालू स्किल की सूची देखने के लिए, यह कमांड चलाएं:
/skills list

पुष्टि करें कि आपको सूची में Gemini Cloud Assist से जुड़ी स्किल दिख रही हो. Cloud Shell प्रॉम्प्ट पर वापस जाने के लिए, exit टाइप करें.

Gemini Cloud Assist में म्यूटेशन की सुविधा चालू करना

एजेंट को आपके इन्फ़्रास्ट्रक्चर में बदलाव करने की अनुमति देने के लिए, आपको Gemini Cloud Assist के यूज़र इंटरफ़ेस (यूआई) में म्यूटेशन की सुविधाएं चालू करनी होंगी.

  1. Google Cloud Console विंडो में सबसे ऊपर दाईं ओर मौजूद Gemini के लोगो पर क्लिक करके, Gemini की मदद पाने के लिए साइडबार खोलें.
    Gemini Assist का साइडबार
  2. साइडबार में दिए गए ज़रूरी एपीआई चालू करें.
    एपीआई चालू करें
  3. साइडबार में मौजूद सेटिंग पर जाएं और "कार्रवाइयाँ करने के लिए Cloud Assist चालू करें" को चुनें.
    सेटिंग पर जाएं
    प्रोग्राम चलाने की सुविधा चालू करें

एजेंट के नियम कॉन्फ़िगर करना

प्रोजेक्ट डायरेक्ट्री में, फ़ोल्डर के रूट (intent-to-infrastructure) में एक कस्टम gemini.md फ़ाइल शामिल होती है. इस फ़ाइल में ऐसे नियम होते हैं जो एजेंट को सही टूल इस्तेमाल करने के बारे में बताते हैं.

पुष्टि करें कि यह फ़ाइल आपकी डायरेक्ट्री में मौजूद है. आपको इस डायरेक्ट्री से gemini चलाना चाहिए, ताकि इसके पास Terraform फ़ाइलों, ऐप्लिकेशन कोड, और gemini.md के नियमों वाली फ़ाइल का ऐक्सेस हो.

5. पहला चरण: चैटबॉट को GKE पर माइग्रेट करना

अब हम एजेंट का इस्तेमाल करके, माइग्रेशन का पहला चरण पूरा करेंगे. यानी, चैटबॉट ऐप्लिकेशन को Cloud Run से GKE पर ले जाएंगे.

  1. intent-to-infrastructure डायरेक्ट्री के रूट से gemini शुरू करें. यह पक्का करें कि इसके पास 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 टूल का इस्तेमाल करें.
    • चैटबॉट ऐप्लिकेशन के लिए Kubernetes YAML जनरेट करने के लिए, design_infra टूल का इस्तेमाल करें.
    • पूछें: "क्या आपको यह कॉन्फ़िगरेशन लागू करना है?"
  1. बदलाव लागू करने के लिए, yes के साथ जवाब दें. एजेंट, आपके GKE क्लस्टर में संसाधनों को डिप्लॉय करने के लिए invoke_operation का इस्तेमाल करेगा.

पुष्टि करने का पहला चरण

  1. सेवाओं की सूची पाने के लिए:
kubectl get services

आपको चैटबॉट ऐप्लिकेशन के लिए चल रही सेवा दिखेगी.

  1. चैटबॉट को ऐक्सेस करने के लिए, सेवा को पोर्ट-फ़ॉरवर्ड करें:
kubectl port-forward svc/chatbot-service 8080:80

(ध्यान दें:

chatbot-service

में एजेंट की ओर से जनरेट की गई सेवा का असली नाम शामिल करें. अगर यह नाम अलग है, तो इसे शामिल करें).

चैटबॉट को आज़माएं. इसे अब भी Gemini API का इस्तेमाल करके जवाब देना चाहिए. ऐसा इसलिए, क्योंकि इसे Cloud Run में कॉन्फ़िगर किया गया था.

6. दूसरा चरण: vLLM और Reconnect की मदद से Gemma को डिप्लॉय करना

इस चरण में, हम एजेंट का इस्तेमाल करके GKE पर, खुद होस्ट किए गए Gemma मॉडल को डिप्लॉय करेंगे. साथ ही, अपने ऐप्लिकेशन को इससे फिर से कनेक्ट करेंगे.

  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. एजेंट को यह काम करना चाहिए:
    • vLLM डिप्लॉयमेंट और सेवा के लिए YAML जनरेट करने के लिए, design_infra का इस्तेमाल करें.
    • Gemini API के बजाय नई vLLM सेवा की ओर ले जाने के लिए, एनवायरमेंट वैरिएबल (या कॉन्फ़िगरेशन) बदलने के लिए, चैटबॉट डिप्लॉयमेंट YAML को अपडेट करें.
    • बदलावों को लागू करने के लिए, पुष्टि करने के लिए कहें.
  2. बदलाव लागू करने के लिए, yes के साथ जवाब दें.

दूसरे चरण की पुष्टि करना

  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 पर एजेंट की मदद से माइग्रेट कर लिया है.