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

1. บทนำ

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

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

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

  • ask_cloud_assist: เป็นอินเทอร์เฟซหลักสำหรับการให้ความช่วยเหลือเกี่ยวกับ Google Cloud Platform และสำหรับ Agent ของ Gemini Cloud Assist คุณเข้าถึงฟังก์ชันการทำงานทั้งหมดของ Gemini Cloud Assist ได้ผ่านเครื่องมือนี้ และยังครอบคลุมฟังก์ชันการทำงานของเครื่องมือ MCP อื่นๆ ด้วย
  • design_infra: รองรับเวิร์กโฟลว์สำหรับการออกแบบและสร้างโครงสร้างพื้นฐานบน Google Cloud Platform
  • investigate_issue: รองรับเวิร์กโฟลว์สำหรับการแก้ปัญหาใน Google Cloud โดยสามารถแก้ปัญหาอย่างรวดเร็วหรือแก้ปัญหาในเชิงลึกผ่านทรัพยากรการตรวจสอบ
  • invoke_operation: รองรับเวิร์กโฟลว์สำหรับการสร้าง อัปเดต และลบทรัพยากรใน Google Cloud เครื่องมือนี้จะทำงานได้ก็ต่อเมื่อเปิดใช้การทำงานของ Agent การดำเนินการเขียนใน Gemini Cloud Assist จะดำเนินการได้ผ่านการเรียกใช้เครื่องมือนี้เท่านั้น
  • optimize_costs: รองรับเวิร์กโฟลว์สำหรับการวิเคราะห์ ติดตาม และเพิ่มประสิทธิภาพต้นทุนของ Google Cloud โดยจะแสดงรายละเอียดค่าใช้จ่ายและระบุโอกาสในการเพิ่มประสิทธิภาพต้นทุนด้วยการค้นหาทรัพยากรที่ไม่ได้ใช้งานหรือใช้งานไม่เต็มประสิทธิภาพ

คุณจะเริ่มต้นด้วยสภาพแวดล้อมที่เตรียมไว้ล่วงหน้าซึ่งมีคลัสเตอร์ GKE และโมเดลที่ดาวน์โหลดแล้ว จากนั้นใช้ gemini-cli เพื่อป้อนพรอมต์ให้ Agent ย้ายภาระงานจาก Cloud Run ไปยัง GKE และเริ่มต้นอินสแตนซ์การอนุมานของ Gemma ด้วย vLLM โดยใช้โมเดลที่เตรียมไว้ใน Bucket ของพื้นที่เก็บข้อมูล

สิ่งที่คุณจะได้ทำ

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

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

  • เว็บเบราว์เซอร์ เช่น 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 ไปยัง Bucket ของ 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 ไปยัง Bucket ของ GCS คุณจะต้องมีโทเค็น Hugging Face กระบวนการนี้จะทำงานในคลัสเตอร์ GKE และใช้เวลาประมาณ 15 นาที (หรือนานกว่านั้นขึ้นอยู่กับการรับส่งข้อมูล) ในการดาวน์โหลดโมเดลจาก Hugging Face และอัปโหลดไปยัง Bucket เพื่อใช้ในภายหลัง

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

คำสั่ง Terraform นี้จะสร้างงาน Kubernetes ในคลัสเตอร์ GKE เพื่อจัดการการดาวน์โหลด สคริปต์ Terraform จะยังคงทำงานอยู่ตราบใดที่งานยังคงทำงาน

หากต้องการตรวจสอบความคืบหน้าจากเซสชันเชลล์อื่น หรือยืนยันว่าการดาวน์โหลดเสร็จสมบูรณ์แล้วหลังจากเรียกใช้ ให้เรียกใช้คำสั่งต่อไปนี้

kubectl get jobs

4. ตั้งค่า Agent และ MCP

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

เซิร์ฟเวอร์ 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

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

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

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

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

ตรวจสอบว่าไฟล์นี้อยู่ในไดเรกทอรี คุณควรเรียกใช้ gemini จากไดเรกทอรีนี้เพื่อให้เข้าถึงไฟล์ Terraform, โค้ดของแอปพลิเคชัน และไฟล์กฎ gemini.md ได้

5. ขั้นตอนที่ 1: ย้ายแชทบ็อตไปยัง GKE

ตอนนี้เราจะใช้ Agent เพื่อทำการย้ายข้อมูลส่วนแรก นั่นคือ การย้ายแอปพลิเคชันแชทบ็อตจาก Cloud Run ไปยัง GKE

  1. เริ่มต้น gemini จากรูทของไดเรกทอรี intent-to-infrastructure (ตรวจสอบว่า Agent เข้าถึง gemini.md ได้)
  2. ขั้นแรก ให้ขอให้ Agent สำรวจโปรเจ็กต์เพื่อทำความเข้าใจแอปพลิเคชันและโครงสร้างพื้นฐาน ป้อนพรอมต์ต่อไปนี้
Tell me about the app and infrastructure in this project

Agent ควรอ่านไฟล์ในไดเรกทอรีและให้ภาพรวมของแอปพลิเคชันแชทบ็อตและการกำหนดค่า Terraform

  1. ตอนนี้ใช้พรอมต์ต่อไปนี้เพื่อสั่งให้ Agent ทำการย้ายข้อมูล
Convert my Cloud Run service to the equivalent on GKE.
  1. Agent ควรทำดังนี้
    • ใช้เครื่องมือ ask_cloud_assist เพื่อทำความเข้าใจบริบท
    • ใช้เครื่องมือ design_infra เพื่อสร้าง YAML ของ Kubernetes สำหรับแอปพลิเคชันแชทบ็อต
    • ถามว่า "คุณต้องการดำเนินการใช้การกำหนดค่านี้ไหม"
  1. ตอบว่า yes เพื่อใช้การเปลี่ยนแปลง Agent จะใช้ invoke_operation เพื่อติดตั้งใช้งานทรัพยากรในคลัสเตอร์ GKE

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

  1. รับรายการบริการโดยทำดังนี้
kubectl get services

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

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

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

chatbot-service

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

ทดสอบแชทบ็อต แชทบ็อตควรตอบกลับโดยใช้ Gemini API (ตามที่กำหนดค่าไว้ใน Cloud Run) ต่อไป

6. ขั้นตอนที่ 2: ติดตั้งใช้งาน Gemma ผ่าน vLLM และเชื่อมต่อใหม่

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

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

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

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

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

7. ล้าง

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

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

cd terraform
./deploy.sh demo step1 destroy

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

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

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

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

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