จากความตั้งใจสู่โครงสร้างพื้นฐาน: การย้ายข้อมูลที่ขับเคลื่อนด้วยเอเจนต์ไปยัง GKE

1. บทนำ

ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ AI Agent เพื่อทำการย้ายข้อมูลโครงสร้างพื้นฐานที่ซับซ้อนโดยอัตโนมัติ แทนที่จะเขียนไฟล์ Manifest ของ Kubernetes หรือเรียกใช้สคริปต์การทำงานอัตโนมัติด้วยตนเอง คุณจะแสดงความตั้งใจในภาษาธรรมชาติ และ Agent จะใช้ Model Context Protocol (MCP) และเซิร์ฟเวอร์ Gemini Cloud Assist เพื่อสร้างและใช้การกำหนดค่าให้คุณ

ความสามารถของเซิร์ฟเวอร์ MCP ของ GCA

เซิร์ฟเวอร์ MCP ของ GCA มีเครื่องมือเฉพาะหลายอย่างสำหรับตัวแทน ดังนี้

  • ask_cloud_assist: นี่คืออินเทอร์เฟซหลักสำหรับการขอความช่วยเหลือเกี่ยวกับ Google Cloud Platform และสำหรับตัวแทน Gemini Cloud Assist ฟังก์ชันการทำงานทั้งหมดของ Gemini Cloud Assist สามารถเข้าถึงได้ผ่านเครื่องมือนี้ และครอบคลุมฟังก์ชันการทำงานของเครื่องมือ MCP อื่นๆ
  • 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 และเริ่มอินสแตนซ์การอนุมาน Gemma ด้วย vLLM โดยใช้โมเดลที่จัดเตรียมไว้ในที่เก็บข้อมูล

สิ่งที่คุณต้องดำเนินการ

  • จัดเตรียมคลัสเตอร์ GKE และดาวน์โหลดโมเดล Gemma โดยใช้ Terraform
  • กำหนดค่า gemini-cli ด้วยกฎของเอเจนต์และเซิร์ฟเวอร์ MCP
  • ใช้พรอมต์ภาษาธรรมชาติที่เฉพาะเจาะจงเพื่อสั่งให้ตัวแทนทำการย้ายข้อมูลและการติดตั้งใช้งานทั้งหมด
  • ยืนยันการติดตั้งใช้งานที่ดำเนินการโดยตัวแทน

สิ่งที่คุณต้องมี

  • เว็บเบราว์เซอร์ เช่น Chrome
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • โทเค็น Hugging Face (จำเป็นสำหรับการดาวน์โหลดโมเดล Gemma ในช่วงการจัดเตรียม)

Codelab นี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ทุกระดับ รวมถึงผู้เริ่มต้น

ระยะเวลาโดยประมาณ: 45-60 นาที

2. ก่อนเริ่มต้น

สร้างหรือเลือกโปรเจ็กต์ Google Cloud

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud
  2. ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์แล้ว

เริ่มต้น Cloud Shell

  1. คลิกเปิดใช้งาน Cloud Shell ที่ด้านบนของคอนโซล Google Cloud
  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

นอกจากนี้ ให้เปิดใช้บริการ MCP ของ Gemini Cloud Assist ด้วย โดยทำดังนี้

gcloud beta services mcp enable geminicloudassist.googleapis.com

3. จัดเตรียมสภาพแวดล้อม

ในขั้นตอนนี้ คุณจะเตรียมสภาพแวดล้อมโดยการสร้างอิมเมจบ็อตแชทที่กำหนดเอง สร้างคลัสเตอร์ GKE และดาวน์โหลดโมเดล Gemma ไปยังที่เก็บข้อมูล Cloud Storage

บ่อยครั้งที่องค์กรเริ่มต้นด้วย Gemini API แต่ต่อมาก็ตัดสินใจย้ายข้อมูลไปยังโมเดลที่โฮสต์ด้วยตนเองเพื่อการควบคุม การปรับแต่ง หรือการใช้เวอร์ชันที่ปรับแต่งมาอย่างละเอียดซึ่งเหมาะกับธุรกิจของตนโดยเฉพาะ ใน Codelab นี้ เราใช้ Gemma เป็นตัวอย่างของโมเดลแบบเปิดที่มีประสิทธิภาพซึ่งคุณโฮสต์เองใน GKE ได้ การทดลองใช้ใน Bucket ของ 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. สร้างที่เก็บ 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 ที่พิมพ์ในเทอร์มินัล คลิก URL เพื่อเปิดแชทบอทในเบราว์เซอร์ ตอนนี้คุณสามารถโต้ตอบกับแชทบ็อตที่ทำงานบน Gemini 2.5 Flash ได้แล้ว

ดาวน์โหลดโมเดล

ในขั้นตอนนี้ เราจะจัดเตรียมโมเดล Gemma ใน Bucket ของ Cloud Storage แม้ว่าเราจะเริ่มต้นด้วย Gemini API ที่มีการจัดการ แต่คุณอาจเลือกใช้โมเดลที่ปรับแต่งอย่างละเอียดที่กำหนดเองหรือโมเดลแบบเปิดที่กำหนดเองอื่นๆ หรือคุณอาจต้องการให้มีการจัดการการดำเนินการโมเดลภายในคลัสเตอร์ของคุณเองด้วยเหตุผลด้านความปลอดภัยหรือการปฏิบัติตามข้อกำหนด การจัดเตรียมโมเดลที่นี่จะช่วยให้เราพร้อมสำหรับการย้ายข้อมูลจาก Gemini API ที่มีการจัดการไปยังโมเดลที่โฮสต์ด้วยตนเองใน 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. ตั้งค่า Agent และ MCP

ตอนนี้เราจะกำหนดค่าเอเจนต์ที่จะทำการย้ายข้อมูล เราจะใช้ gemini-cli และกำหนดกฎเพื่อให้โต้ตอบกับสภาพแวดล้อมได้

เซิร์ฟเวอร์ MCP ของ Gemini Cloud Assist (GCA) เป็นคอมโพเนนต์ที่สำคัญของโฟลว์นี้ โดยจะทำหน้าที่เป็นสะพานเชื่อมระหว่าง Agent ฝั่งไคลเอ็นต์กับ Google Cloud ซึ่งช่วยให้ Agent ทำการตรวจสอบ สร้างแผน (เช่น คำสั่ง 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

หากต้องการอนุญาตให้ตัวแทนใช้การเปลี่ยนแปลงกับโครงสร้างพื้นฐาน คุณต้องเปิดใช้ฟีเจอร์การเปลี่ยนแปลงใน UI ของ Gemini Cloud Assist

  1. เปิดแถบด้านข้างของ Gemini Assist โดยคลิกโลโก้ Gemini ที่ด้านขวาบนของหน้าต่างคอนโซล Google Cloud
    แถบด้านข้างของ Gemini Assist
  2. เปิดใช้ API ที่จำเป็นซึ่งแสดงอยู่ในแถบด้านข้าง
    เปิดใช้ API
  3. ไปที่การตั้งค่าในแถบด้านข้าง แล้วเลือก "เปิดใช้ Cloud Assist เพื่อดำเนินการ"
    ไปที่การตั้งค่า
    เปิดใช้การดำเนินการ

กำหนดค่ากฎของ Agent

ไดเรกทอรีโปรเจ็กต์มีไฟล์ gemini.md ที่กำหนดเองในรูทของโฟลเดอร์ (intent-to-infrastructure) ไฟล์นี้มีกฎที่แนะนำเอเจนต์ให้ใช้เครื่องมือที่ถูกต้อง

ตรวจสอบว่ามีไฟล์นี้อยู่ในไดเรกทอรี คุณควรเรียกใช้ 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เพื่อสร้าง Kubernetes YAML สำหรับแอปพลิเคชันแชทบอท
    • ถามว่า "คุณต้องการดำเนินการต่อเพื่อใช้การกำหนดค่านี้ไหม"
  1. ตอบกลับด้วย yes เพื่อใช้การเปลี่ยนแปลง Agent จะใช้ invoke_operation เพื่อติดตั้งใช้งานทรัพยากรในคลัสเตอร์ GKE

ยืนยันขั้นตอนที่ 1

  1. ดูรายการบริการโดยใช้คำสั่งต่อไปนี้
kubectl get services

คุณควรเห็นบริการสำหรับแอปพลิเคชันแชทบอทที่กำลังทำงานอยู่

  1. ส่งต่อพอร์ตของบริการเพื่อเข้าถึงแชทบอท
kubectl port-forward svc/chatbot-service 8080:80

(หมายเหตุ: แทนที่

chatbot-service

โดยใช้ชื่อจริงของบริการที่เอเจนต์สร้างขึ้นหากแตกต่างกัน)

ทดสอบแชทบ็อต บ็อตควรยังคงตอบกลับโดยใช้ Gemini API (ตามที่กำหนดค่าไว้ใน 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 ใหม่แทน Gemini API
    • ขอการยืนยันเพื่อใช้การเปลี่ยนแปลง
  2. ตอบกลับด้วย yes เพื่อใช้การเปลี่ยนแปลง

ยืนยันขั้นตอนที่ 2

  1. รับรายการพ็อดอีกครั้งโดยทำดังนี้
kubectl get pods

ตอนนี้คุณควรเห็นพ็อดสำหรับทั้งแชทบอทและ vLLM

  1. เมื่อ vLLM พร้อมแล้ว ให้ส่งต่อพอร์ตบริการแชทบอทอีกครั้งหากจำเป็น แล้วทดสอบ ตอนนี้ควรขับเคลื่อนด้วยโมเดล Gemma ที่โฮสต์ด้วยตนเองแล้ว

7. ล้าง

โปรดลบทรัพยากรที่สร้างขึ้นระหว่างการทำ Codelab นี้เพื่อหลีกเลี่ยงการเรียกเก็บเงินอย่างต่อเนื่องในบัญชี Google Cloud

เรียกใช้คำสั่งทำลายสำหรับโครงสร้างพื้นฐานหลัก

cd terraform
./deploy.sh demo step1 destroy

นอกจากนี้ คุณยังถอนการติดตั้งหรือปิดใช้ส่วนขยาย Gemini Cloud Assist ได้หากต้องการล้างสภาพแวดล้อมในเครื่อง ใช้ gemini extensions uninstall หรือ gemini extensions disable ตามด้วยชื่อส่วนขยาย

8. ขั้นตอนถัดไป

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Gemini Cloud Assist และฟีเจอร์ขั้นสูงได้จากแหล่งข้อมูลต่อไปนี้

9. ขอแสดงความยินดี

ยินดีด้วย คุณได้ทำการย้ายข้อมูลเวิร์กโหลดไปยัง GKE โดยใช้ Agent โดยใช้ภาษาธรรมชาติและ MCP เรียบร้อยแล้ว