1. บทนำ
แพลตฟอร์ม Agent ของ Gemini Enterprise เป็นแพลตฟอร์มแบบเปิดสำหรับการสร้าง การปรับขนาด การกำกับดูแล และการเพิ่มประสิทธิภาพเอเจนต์ AI ระดับองค์กรที่อิงตามข้อมูลของคุณ
Agent Runtime มีสภาพแวดล้อมการดำเนินการที่มีการจัดการสำหรับการเรียกใช้ Agent เช่น Agent ที่สร้างด้วย Agent Development Kit (ADK) แบบโอเพนซอร์สอย่างปลอดภัยภายใน Google Cloud
Codelab นี้จะสำรวจวิธีใช้บล็อกการสร้างหลักเหล่านี้เพื่อควบคุม Agent ที่ผู้ใช้เริ่มต้นใน Gemini Enterprise ขณะที่ Agent ติดต่อเครื่องมือภายในอย่างปลอดภัย
เกี่ยวกับ Agent Gateway
Agent Gateway เป็นคอมโพเนนต์เครือข่ายของชุดเครื่องมือการกำกับดูแลเอเจนต์ของแพลตฟอร์ม โดยทำหน้าที่เป็นจุดเข้าและออกจากเครือข่ายสำหรับการโต้ตอบของตัวแทนทั้งหมด ซึ่งช่วยให้ผู้ดูแลระบบความปลอดภัยบังคับใช้การกำกับดูแลแบบรวมศูนย์ได้โดยไม่ต้องให้นักพัฒนาแอปจัดการ Primitive เครือข่ายที่ซับซ้อน
ซึ่งช่วยให้เส้นทางการเข้าถึงที่ควบคุมหลัก 2 เส้นทางเป็นไปได้
- ไคลเอ็นต์ไปยังเอเจนต์ (ขาเข้า): รักษาความปลอดภัยในการสื่อสารระหว่างไคลเอ็นต์ภายนอก (เช่น Cursor หรือ Gemini CLI) กับเอเจนต์ของคุณ
- Agent-to-Anywhere (ขาออก): รักษาความปลอดภัยในการสื่อสารระหว่างเอเจนต์ที่ทำงานบน Google Cloud กับเซิร์ฟเวอร์ เครื่องมือ หรือ API ที่ทำงานได้ทุกที่
ใน Codelab นี้ คุณจะมุ่งเน้นไปที่โหมดAgent-to-Anywhere (ขาออก)

Agent Gateway ผสานรวมกับส่วนอื่นๆ ของระบบนิเวศอย่างใกล้ชิดเพื่อบังคับใช้นโยบายความปลอดภัย
- รีจิสทรีของเอเจนต์: คลังส่วนกลางของเอเจนต์และเครื่องมือที่ได้รับอนุมัติ (รวมถึงเซิร์ฟเวอร์ MCP ของบุคคลที่สาม)
- ข้อมูลประจำตัวของ Agent: ข้อมูลประจำตัวที่ไม่ซ้ำกันซึ่งติดตามได้สำหรับ Agent ทุกคน โดยระบบจะรักษาความปลอดภัยโดยอัตโนมัติด้วย mTLS แบบครบวงจร
- Identity-Aware Proxy (IAP) และ IAM: เลเยอร์การบังคับใช้เริ่มต้นที่ตรวจสอบข้อมูลประจำตัวของเอเจนต์เทียบกับสิทธิ์ IAM แบบละเอียดก่อนที่จะอนุญาตให้เรียกใช้เครื่องมือที่เฉพาะเจาะจง
- Model Armor: แนวทางการรักษาความปลอดภัยของ AI ที่ผสานรวมผ่านส่วนขยายบริการเพื่อล้างข้อมูลเนื้อหาและป้องกันการโจมตีแบบแทรกพรอมต์หรือข้อมูลรั่วไหล
โหมดการติดตั้งใช้งาน (เครือข่ายสาธารณะเทียบกับเครือข่ายส่วนตัวสำหรับ Cloud Run)
หากต้องการให้เข้าถึง Codelab นี้ได้ คุณสามารถเลือกเส้นทางการเชื่อมต่อเครือข่าย 2 เส้นทางสำหรับเครื่องมือภายใน (เซิร์ฟเวอร์ MCP) ที่ติดตั้งใช้งานใน Cloud Run ได้ดังนี้
- ค่าเริ่มต้น (ขาเข้าสาธารณะ): ระบบจะติดตั้งใช้งานเซิร์ฟเวอร์ MCP ใน Cloud Run ด้วยชื่อโฮสต์สาธารณะ (
ingress=all) การรับส่งข้อมูลจะกำหนดเส้นทางจากเอเจนต์ไปยังเครื่องมือผ่าน URL*.run.appมาตรฐาน ซึ่งไม่จำเป็นต้องใช้โดเมน DNS ที่กำหนดเองและเป็นวิธีที่เร็วที่สุดในการเรียนรู้แนวคิดด้านการกำกับดูแล - ปลอดภัย (เครือข่ายส่วนตัว): สถาปัตยกรรมส่วนตัวโดยสมบูรณ์ที่ไม่บังคับ เซิร์ฟเวอร์ MCP ถูกจำกัด (
ingress=internal-and-cloud-load-balancing) และแสดงผ่าน Internal ตัวจัดสรรภาระงานแอปพลิเคชัน ที่มี NEG แบบ Serverless โดยคุณต้องเป็นเจ้าของโดเมน DNS สาธารณะเพื่อจัดสรรใบรับรองที่ Google จัดการ
คุณจะเลือกเส้นทางที่ต้องการเมื่อกำหนดค่า Terraform
ดูข้อมูลเพิ่มเติมเกี่ยวกับการรับส่งข้อมูลขาเข้าของปลายทางเครือข่ายสำหรับ Cloud Run ได้ในเอกสารประกอบ
สิ่งที่คุณต้องดำเนินการ
- จัดสรรสแต็กโครงสร้างพื้นฐานหลักโดยใช้ Terraform
- สร้างและติดตั้งใช้งานเครื่องมือภายในเป็นเซิร์ฟเวอร์ MCP ใน Cloud Run
- ติดตั้งใช้งาน ADK Agent ใน Agent Runtime โดยใช้การออกของอินเทอร์เฟซ PSC
- กำหนดค่าส่วนขยายบริการ Agent Gateway สำหรับการเข้าถึงตามข้อมูลประจำตัว (IAM) และการคัดกรองเนื้อหา (Model Armor)
- ติดตามและตรวจสอบการดำเนินการแบบต้นทางถึงปลายทางที่ปลอดภัยของเอเจนต์
สิ่งที่คุณต้องมี
- เว็บเบราว์เซอร์ เช่น Chrome
- โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินและมีสิทธิ์เข้าถึงระดับเจ้าของ
- สิทธิ์ IAM ระดับองค์กร (Codelab มอบบทบาทที่มีขอบเขตระดับองค์กร)
- โดเมนที่คุณควบคุมซึ่งมอบสิทธิ์ให้ Cloud DNS (สำหรับใบรับรองสาธารณะที่มีการจัดการ)
- คุ้นเคยกับ Terraform,
gcloudและเครือข่าย Google Cloud ขั้นพื้นฐาน
โทโพโลยี Codelab

ใน Codelab นี้ คุณจะได้ติดตั้งใช้งานเอเจนต์การรับประกันสินเชื่อที่อยู่อาศัยแบบครบวงจร ซึ่งสื่อสารกับเครื่องมือภายใน 3 อย่างได้อย่างปลอดภัย
คุณจะเริ่มต้นด้วยการจัดสรรระบบเครือข่ายพื้นฐาน ซึ่งรวมถึง VPC และตัวจัดสรรภาระงานแอปพลิเคชันภายในที่กำหนดค่าเป็นเกตเวย์ของ Agent จากนั้นคุณจะติดตั้งใช้งานเซิร์ฟเวอร์ Model Context Protocol (MCP) 3 เครื่องใน Cloud Run ซึ่งจะทำหน้าที่เป็นเครื่องมือที่เป็นกรรมสิทธิ์ภายในของคุณ
- การจัดการเอกสาร (
legacy-dms) - อีเมลองค์กร (
corporate-email) - การยืนยันรายได้ (
income-verification)
เมื่อมีเครื่องมือพร้อมแล้ว คุณจะติดตั้งใช้งานผู้ช่วยด้านสินเชื่อที่อยู่อาศัย (mortgage-agent) ซึ่งสร้างด้วย ADK ไปยัง Agent Runtime คุณจะกำหนดค่า Agent นี้ให้ใช้อินเทอร์เฟซ PSC สำหรับขาออกส่วนตัว และเปิดใช้การค้นหาเครื่องมือรันไทม์ผ่านรีจิสทรีของ Agent
หากต้องการรักษาความปลอดภัยของโฟลว์ คุณจะต้องกำหนดค่า Agent Gateway ด้วยส่วนขยายบริการ 2 รายการ ก่อนอื่น REQUEST_AUTHZส่วนขยายจะยืนยันตัวตนของ Agent กับนโยบาย IAM ต่อเครื่องมือ เพื่อให้มั่นใจว่า Agent จะเข้าถึงได้เฉพาะเครื่องมือที่ได้รับอนุญาตเท่านั้น ประการที่สอง CONTENT_AUTHZ ส่วนขยายที่ใช้ Model Armor จะคัดกรองพรอมต์และคำตอบของเอเจนต์
สุดท้าย คุณจะลงทะเบียน Agent ใน Gemini Enterprise เรียกใช้งานการประเมินความเสี่ยงด้านสินเชื่อที่อยู่อาศัยในฐานะผู้ใช้ปลายทาง และยืนยันการดำเนินการที่ปลอดภัยและมีการกำกับดูแลโดยใช้ Cloud Trace
Codelab นี้มีไว้สำหรับวิศวกรแพลตฟอร์มและความปลอดภัยทุกระดับ คาดว่าจะใช้เวลาประมาณ 100 นาทีในการทำแบบทดสอบให้เสร็จสมบูรณ์
2. ก่อนเริ่มต้น
สร้างโปรเจ็กต์และตรวจสอบสิทธิ์
สร้างโปรเจ็กต์ GCP ใหม่ (หรือใช้โปรเจ็กต์ที่มีอยู่) โดยเปิดใช้การเรียกเก็บเงิน จากนั้นให้สิทธิ์ Cloud Shell หรือเครื่องในพื้นที่
gcloud auth login
gcloud auth application-default login
gcloud config set project <your-project-id>
เปิดใช้ Bootstrap API
โมดูลพื้นฐานของ Terraform จะเปิดใช้ API ประมาณ 30 รายการในการใช้ครั้งแรก แต่ต้องมีชุดการเริ่มต้นขนาดเล็กสำหรับ terraform init และที่เก็บข้อมูลสถานะ GCS
gcloud services enable \
compute.googleapis.com \
serviceusage.googleapis.com \
cloudresourcemanager.googleapis.com \
iam.googleapis.com \
storage.googleapis.com \
dns.googleapis.com
ติดตั้งเครื่องมือที่จำเป็น
ติดตั้ง Toolchain ใน Cloud Shell ส่วนใหญ่จะมีเครื่องมือเหล่านี้อยู่แล้ว ส่วนในเวิร์กสเตชัน ให้ทำดังนี้
# uv (Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# skaffold
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \
sudo install skaffold /usr/local/bin/
# envsubst (gettext)
sudo apt-get install -y gettext-base
นอกจากนี้ คุณยังต้องมี Terraform >= 1.12.2, Python 3.12 ขึ้นไป และ Google Cloud SDK (gcloud)
ตั้งค่าตัวแปรสภาพแวดล้อม
ส่วนที่เหลือของ Codelab จะถือว่ามีการส่งออกตัวแปรเหล่านี้ใน Shell
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export ORG_ID=$(gcloud projects get-ancestors $PROJECT_ID | awk '$2 == "organization" {print $1}')
export REGION="us-central1"
# Only required if using the secure private networking path
export DOMAIN_NAME="agw.example.com"
ตรวจสอบว่าตัวแปรทั้งหมดได้รับการป้อนข้อมูลอย่างถูกต้อง คุณควรได้รับค่า 3 ค่า
echo $PROJECT_ID
echo $PROJECT_NUMBER
echo $ORG_ID
หากรหัสองค์กรไม่ปรากฏขึ้น คุณสามารถค้นหาและตั้งค่าด้วยตนเองได้
gcloud organizations list
export ORG_ID=ID_FROM_OUTPUT
3. โคลนที่เก็บ
git clone https://github.com/GoogleCloudPlatform/cloud-networking-solutions.git
cd cloud-networking-solutions
cd demos/agent-gateway
มาดูคร่าวๆ กันว่ามีอะไรอยู่ในไดเรกทอรีตัวอย่าง
src/ MCP servers (legacy-dms, corporate-email, income-verification-api) + mortgage-agent
terraform/ Root Terraform config + modules (foundation, networking, agent-gateway, model-armor, ...)
cloudrun/ Cloud Run service definitions (rendered from .yaml.tmpl via envsubst)
scripts/ grant_agent_mcp_egress.sh — per-MCP IAP egressor binding
skaffold.yaml.tmpl Skaffold pipeline that builds + deploys all three MCP services to Cloud Run
4. สร้าง Bucket สถานะ Terraform และการกำหนดค่าแบ็กเอนด์
สร้าง Bucket ของ GCS เพื่อเก็บสถานะระยะไกล แล้วคัดลอกเทมเพลตแบ็กเอนด์
gcloud storage buckets create gs://${PROJECT_ID}-tfstate \
--location=${REGION} \
--uniform-bucket-level-access
cp terraform/example.backend.conf terraform/backend.conf
แก้ไข terraform/backend.conf ด้วยค่าของคุณ
bucket = "<your-project-id>-tfstate"
prefix = "agent-gateway"
5. (ไม่บังคับ) สร้างโซน DNS สาธารณะ
โดยค่าเริ่มต้นสำหรับ Lab นี้ Cloud Run จะตั้งค่าการกำหนดค่าขาเข้าเป็น all และรีจิสทรีของเอเจนต์จะลงทะเบียนเซิร์ฟเวอร์ MCP แต่ละเครื่องที่ URL สาธารณะ *.run.app โดยไม่จำเป็นต้องใช้ DNS, ใบรับรอง หรือตัวจัดสรรภาระงานเพิ่มเติม หากต้องการเปลี่ยนไปใช้ระบบเครือข่ายส่วนตัว (Cloud Run ที่มี ingress = internal-and-cloud-load-balancing อยู่หลัง Application LB ภายใน) คุณจะต้องมีโซน DNS สาธารณะของ Cloud ด้วยเพื่อให้ Certificate Manager ตรวจสอบใบรับรอง LB ได้
ขั้นตอนการทำงานระดับสูงของการเชื่อมต่อเครือข่ายส่วนตัว

หากต้องการใช้วิธีการเครือข่ายส่วนตัว ให้ทำดังนี้
- สร้างโซน Cloud DNS สาธารณะ - Certificate Manager จะตรวจสอบใบรับรองที่มีการจัดการระดับภูมิภาคโดยการเขียน CNAME ลงในโซน DNS
gcloud dns managed-zones create agw-example-com \
--dns-name="${DOMAIN_NAME}." \
--description="Public zone for ${DOMAIN_NAME}" \
--visibility=public
Terraform จะสร้างโซนส่วนตัวที่เกี่ยวข้องสำหรับ mcp.${DOMAIN_NAME} (ใช้โดย LB ภายในของ MCP และการเชื่อมต่อ DNS จาก Agent Runtime) โดยอัตโนมัติ คุณจึงไม่ต้องสร้างด้วยตนเอง เมื่อปิดการเชื่อมต่อเครือข่ายส่วนตัว ระบบจะไม่จัดสรรทั้งโซนสาธารณะและโซนส่วนตัว
6. กำหนดค่าตัวแปร Terraform
คัดลอกไฟล์ tfvars ตัวอย่างและแก้ไข
cp terraform/example.tfvars terraform/terraform.tfvars
เส้นทางการทดลองใช้มี 2 เส้นทาง โดยมี enable_cloud_run_private_networking เป็นตัวกำหนด
เส้นทางเริ่มต้น: Cloud Run ที่มีการรับส่งข้อมูลขาเข้าแบบสาธารณะ
**การตั้งค่าที่ง่ายที่สุด**สำหรับเส้นทางเริ่มต้น คุณเพียงแค่ต้องแก้ไขค่า 3 ค่าใน terraform.tfvars ตัวแปรอื่นๆ ทั้งหมดในไฟล์มีค่าเริ่มต้นที่เหมาะกับการสาธิตอยู่แล้ว
# GCP project ID where all resources will be created.
project_id = "my-gcp-project-id"
# GCP organization ID (numeric).
organization_id = "123456789012"
# Members granted demo-wide roles
platform_admin_members = ["user:admin@example.com"]
# IAP Enforcement Mode ("DRY_RUN" or null)
agent_gateway_iap_iam_enforcement_mode = "DRY_RUN"
เครือข่ายส่วนตัว (ไม่บังคับ)
ตั้งค่า enable_cloud_run_private_networking = true และเพิ่มตัวแปรด้านล่างเพื่อจัดสรรสแต็กที่ปลอดภัยแบบเต็ม
- ตัวจัดสรรภาระงานของแอปพลิเคชันภายใน
- ใบรับรองที่จัดการโดย Google
- Cloud Run พร้อม
ingress = internal-and-cloud-load-balancing - การเพียร์ DNS ของเกตเวย์ตัวแทน
enable_cloud_run_private_networking = true
# DNS — must end with a trailing dot, must match a Cloud DNS zone you own
dns_zone_domain = "agw.example.com."
enable_certificate_manager = true
# mcp_internal_dns_zone.domain MUST be a real subdomain of dns_zone_domain so
# Certificate Manager can issue a Google-managed cert.
mcp_internal_dns_zone = {
name = "mcp-server-internal"
domain = "mcp.agw.example.com."
}
# Must match mcp_internal_dns_zone.domain so Agent Engine resolves MCP
# hostnames over the PSC interface peering.
psc_interface_dns_zone = {
name = "mcp-server-internal"
domain = "mcp.agw.example.com."
}
mcp_lb_protocol = "HTTPS"
7. ติดตั้งใช้งานโครงสร้างพื้นฐานด้วย Terraform
เริ่มต้น ตรวจสอบ และนำไปใช้
cd terraform
terraform init -backend-config=backend.conf
terraform plan
terraform apply
terraform apply จัดสรรทรัพยากรประมาณ 40 รายการในเส้นทางเริ่มต้นและใช้เวลา 8-10 นาทีในโปรเจ็กต์ใหม่ (ทรัพยากรประมาณ 60 รายการ / 15-20 นาทีเมื่อ enable_cloud_run_private_networking = true) โดยจะสร้างรายการต่อไปนี้
- รากฐานของโปรเจ็กต์ (API, ข้อมูลประจำตัวของบริการ, โควต้า)
- VPC, ซับเน็ต (หลัก, เฉพาะพร็อกซี, PSC, อินเทอร์เฟซ PSC, การจัดวางเกตเวย์ของเอเจนต์ร่วมกัน), Cloud NAT, กฎไฟร์วอลล์
- ที่เก็บ Artifact Registry สำหรับอิมเมจ Cloud Run
- บริการ Cloud Run 3 รายการ + SA รันไทม์ต่อบริการ (ขาเข้า =
allโดยค่าเริ่มต้นinternal-and-cloud-load-balancingเมื่อเปิดใช้เครือข่ายส่วนตัว) - เทมเพลต Model Armor + IAM
- Agent Gateway, การเชื่อมต่อเครือข่าย PSC-I, ส่วนขยาย IAP และ Model Armor, นโยบายการให้สิทธิ์ทั้ง 2 รายการ และ
roles/iap.egressorการให้สิทธิ์ระดับโปรเจ็กต์ - ปลายทางการลงทะเบียน Agent (Vertex AI, IAP, Discovery Engine, ...) รวมถึงเซิร์ฟเวอร์ MCP 3 เครื่อง (ลงทะเบียนที่
*.run.app/mcpโดยค่าเริ่มต้น และที่เมื่อเปิดใช้เครือข่ายส่วนตัว). /mcp
เฉพาะในกรณีต่อไปนี้ enable_cloud_run_private_networking = true
- Application Load Balancer ภายในระดับภูมิภาคที่มี NEG แบบ Serverless (การกำหนดเส้นทางมาสก์ URL) + ระเบียน A ของ DNS ส่วนตัว
- โซน DNS ส่วนตัวของ MCP (
mcp.) ที่แนบกับ VPC. - โมดูลโซน DNS สาธารณะ (การให้สิทธิ์ DNS ของ Certificate Manager) + ใบรับรองที่จัดการโดย Google ระดับภูมิภาค
- โซน DNS ของอินเทอร์เฟซ PSC (โดดเดี่ยวเมื่อไม่มีชื่อโฮสต์ส่วนตัวที่จะแปลง ดังนั้นจึงมีการควบคุมด้วยค่าสถานะหลักด้วย)
- การเพียร์ DNS ของเกตเวย์ตัวแทนสำหรับ
mcp.(เติมหน้าโดยอัตโนมัติ).
8. ตรวจสอบปลายทางของรีจิสทรีตัวแทน
รีจิสทรีของ Agent คือแคตตาล็อกบริการต่อโปรเจ็กต์ (Google API และเซิร์ฟเวอร์ MCP ของคุณเอง) ที่ Agent ค้นพบในขณะรันไทม์ ตัวแทนจำนองจะอ่านข้อมูลนี้เมื่อเริ่มต้นระบบและเชื่อมโยงเครื่องมือแบบไดนามิก โดยไม่มีการฝัง URL ของ MCP ไว้ในโค้ดของ Agent หรือคำสั่งการติดตั้งใช้งาน
ปลายทาง
สิ่งที่ Terraform เรียกใช้ในนามของคุณ - สำหรับ Google API แต่ละรายการใน agent_registry_google_apis Terraform จะลงทะเบียน 5 รูปแบบ (ทั่วโลก, mTLS ทั่วโลก, ระดับภูมิภาค, mTLS ระดับภูมิภาค, REP ระดับภูมิภาค) เช่น สำหรับ aiplatform
gcloud alpha agent-registry services create aiplatform \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://aiplatform.googleapis.com,protocolBinding=JSONRPC"
gcloud alpha agent-registry services create aiplatform-mtls \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform mTLS" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://aiplatform.mtls.googleapis.com,protocolBinding=JSONRPC"
gcloud alpha agent-registry services create ${REGION}-aiplatform \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform Locational" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://${REGION}-aiplatform.googleapis.com,protocolBinding=JSONRPC"
gcloud alpha agent-registry services create aiplatform-${REGION}-rep \
--project=${PROJECT_ID} --location=${REGION} \
--display-name="Vertex AI Platform Regional (REP)" \
--endpoint-spec-type=no-spec \
--interfaces="url=https://aiplatform.${REGION}.rep.googleapis.com,protocolBinding=JSONRPC"
เซิร์ฟเวอร์ MCP
นอกจากนี้ Terraform ยังลงทะเบียนเซิร์ฟเวอร์ MCP 3 เครื่องให้คุณด้วย หากต้องการลงทะเบียนเซิร์ฟเวอร์ MCP อื่นๆ ให้ทำตามขั้นตอนในเอกสารประกอบ
gcloud alpha agent-registry services create legacy-dms \
--project=${PROJECT_ID} \
--location=${REGION} \
--display-name="Legacy DMS" \
--mcp-server-spec-type=tool-spec \
--mcp-server-spec-content=src/legacy-dms/toolspec.json \
--interfaces=url=https://dms.${DOMAIN_NAME}/mcp,protocolBinding=JSONRPC
ยืนยัน Endpoints และเซิร์ฟเวอร์ MCP ที่ลงทะเบียน
gcloud alpha agent-registry services list \
--project=${PROJECT_ID} --location=${REGION} \
--format="value(displayName,name)"
gcloud alpha agent-registry mcp-servers list \
--project=${PROJECT_ID} --location=${REGION} \
--format="value(displayName,name)"
แหล่งที่มา: terraform/modules/agent-registry-endpoints/scripts/register_endpoints.sh.tpl
9. ตรวจสอบการกำหนดค่า Agent Gateway
Agent Gateway คือระนาบการกำกับดูแลที่ Google จัดการระหว่าง Agent Runtime กับเครื่องมือของคุณ ในโหมด AGENT_TO_ANYWHERE จะเชื่อมโยงกับรีจิสทรีของ Agent ของโปรเจ็กต์และส่งออกผ่านอินเทอร์เฟซ PSC ที่ลูกค้าเป็นเจ้าของเพื่อให้เข้าถึงเซิร์ฟเวอร์ MCP ส่วนตัวใน VPC ได้
หากคุณนำเข้าเกตเวย์นี้ด้วยตนเอง YAML จะมีลักษณะดังนี้
# agent-gateway.yaml — for reference only, Terraform already created this
name: agent-gateway
protocols: [MCP]
googleManaged:
governedAccessPath: AGENT_TO_ANYWHERE
registries:
- "//agentregistry.googleapis.com/projects/${PROJECT_ID}/locations/${REGION}"
networkConfig:
egress:
networkAttachment: projects/${PROJECT_ID}/regions/${REGION}/networkAttachments/agent-gateway-na
dnsPeeringConfig:
domains:
- mcp.${DOMAIN_NAME}.
targetProject: ${PROJECT_ID}
targetNetwork: projects/${PROJECT_ID}/global/networks/gateway-vpc
gcloud alpha network-services agent-gateways import agent-gateway \
--source=agent-gateway.yaml \
--location=${REGION}
ยืนยันเกตเวย์ที่ Terraform สร้างขึ้น
gcloud alpha network-services agent-gateways describe agent-gateway \
--location=${REGION}
10. ตรวจสอบการให้สิทธิ์ IAP และ Model Armor
Agent Gateway จะมอบสิทธิ์การให้สิทธิ์ให้กับส่วนขยายบริการ โปรไฟล์นโยบาย 2 รายการครอบคลุมการสาธิต ดังนี้
- REQUEST_AUTHZ - ประเมิน 1 ครั้งต่อคำขอในขั้นตอนส่วนหัว ใช้ที่นี่เพื่อเรียก IAP ซึ่งจะตรวจสอบว่าข้อมูลประจำตัวของตัวแทนที่เรียกมี
roles/iap.egressorในเซิร์ฟเวอร์ MCP เป้าหมายหรือไม่ - CONTENT_AUTHZ - สตรีมเหตุการณ์ในเนื้อหาไปยังส่วนขยายเพื่อการล้างข้อมูลเนื้อหา ใช้ที่นี่เพื่อเรียกใช้ Model Armor ซึ่งจะคัดกรองการแทรกพรอมต์ การหลบเลี่ยงข้อจำกัด การละเมิด RAI และ (ไม่บังคับ) PII ผ่านการปกป้องข้อมูลที่ละเอียดอ่อน (SDP)
ส่วนขยาย IAP REQUEST_AUTHZ
cat > iap-authz-extension.yaml <<EOF
name: agent-gateway-iap-authz
service: iap.googleapis.com
failOpen: true
timeout: 1s
EOF
gcloud beta service-extensions authz-extensions import agent-gateway-iap-authz \
--source=iap-authz-extension.yaml \
--location=${REGION} \
--project=${PROJECT_ID}
เชื่อมโยงกับ Agent Gateway ด้วยนโยบาย REQUEST_AUTHZ ดังนี้
curl -fsS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST "https://networksecurity.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/${REGION}/authzPolicies?authz_policy_id=agent-gateway-iap-policy" \
-d '{
"name": "agent-gateway-iap-policy",
"policyProfile": "REQUEST_AUTHZ",
"action": "CUSTOM",
"target": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/agentGateways/agent-gateway"
]
},
"customProvider": {
"authzExtension": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/authzExtensions/agent-gateway-iap-authz"
]
}
}
}'
ส่วนขยาย CONTENT_AUTHZ ของ Model Armor
metadata.model_armor_settingsของส่วนขยายมีรหัสเทมเพลตคำขอและการตอบกลับที่ Model Armor ใช้เพื่อประเมินข้อความกระตุ้นให้ดำเนินการแต่ละรายการ
cat > ma-extension.yaml <<EOF
name: agent-gateway-ma-authz
service: modelarmor.${REGION}.rep.googleapis.com
failOpen: true
timeout: 1s
metadata:
model_armor_settings: '[
{
"request_template_id": "projects/${PROJECT_ID}/locations/${REGION}/templates/agw-request-template",
"response_template_id": "projects/${PROJECT_ID}/locations/${REGION}/templates/agw-response-template"
}
]'
EOF
gcloud beta service-extensions authz-extensions import agent-gateway-ma-authz \
--source=ma-extension.yaml \
--location=${REGION} \
--project=${PROJECT_ID}
curl -fsS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-X POST "https://networksecurity.googleapis.com/v1alpha1/projects/${PROJECT_ID}/locations/${REGION}/authzPolicies?authz_policy_id=agent-gateway-ma-policy" \
-d '{
"name": "agent-gateway-ma-policy",
"policyProfile": "CONTENT_AUTHZ",
"action": "CUSTOM",
"target": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/agentGateways/agent-gateway"
]
},
"customProvider": {
"authzExtension": {
"resources": [
"projects/'"${PROJECT_ID}"'/locations/'"${REGION}"'/authzExtensions/agent-gateway-ma-authz"
]
}
}
}'
เทมเพลต DLP ที่กำหนดเอง
sdpSettings.basicConfig ของ Model Armor ใช้รายการ infoType ในตัว หากต้องการควบคุมอย่างละเอียด (ประเภทข้อมูลที่กำหนดเอง การมาสก์บางส่วน การแทนที่ด้วยข้อมูลแทน การปกปิดข้อมูลบางส่วนตามความเป็นไปได้) ให้ชี้ Model Armor ไปยังเทมเพลต inspect และ de-identify ของ Cloud DLP ของคุณเองผ่าน sdpSettings.advancedConfig
สร้างเทมเพลตการตรวจสอบที่แจ้งว่ามีหมายเลขประกันสังคมของสหรัฐอเมริกาที่POSSIBLEความเป็นไปได้หรือสูงกว่า
curl -fsS -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "x-goog-user-project: ${PROJECT_ID}" \
"https://dlp.googleapis.com/v2/projects/${PROJECT_ID}/locations/${REGION}/inspectTemplates" \
-d '{
"templateId": "agw-ssn-inspect-template",
"inspectTemplate": {
"displayName": "SSN Inspect Template",
"inspectConfig": {
"infoTypes": [
{ "name": "US_SOCIAL_SECURITY_NUMBER" }
],
"minLikelihood": "POSSIBLE"
}
}
}'
สร้างเทมเพลตการลบข้อมูลระบุตัวบุคคลที่จะแทนที่ผลการค้นหาแต่ละรายการด้วยโทเค็นประเภทข้อมูล (เช่น [US_SOCIAL_SECURITY_NUMBER])
curl -fsS -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "x-goog-user-project: ${PROJECT_ID}" \
"https://dlp.googleapis.com/v2/projects/${PROJECT_ID}/locations/${REGION}/deidentifyTemplates" \
-d '{
"templateId": "agw-ssn-redaction-template",
"deidentifyTemplate": {
"displayName": "SSN Redaction Template",
"deidentifyConfig": {
"infoTypeTransformations": {
"transformations": [{
"primitiveTransformation": { "replaceWithInfoTypeConfig": {} }
}]
}
}
}
}'
จากนั้นชี้การกำหนดค่าการตอบกลับของเทมเพลต Model Armor ไปที่คู่ผ่าน sdpSettings.advancedConfig (นี่คือที่ที่โมดูล model_armor ของ Terraform จะตั้งค่า advanced_config หากคุณเชื่อมต่อไว้)
{
"filterConfig": {
"sdpSettings": {
"advancedConfig": {
"inspectTemplate": "projects/${PROJECT_ID}/locations/${REGION}/inspectTemplates/agw-ssn-inspect-template",
"deidentifyTemplate": "projects/${PROJECT_ID}/locations/${REGION}/deidentifyTemplates/agw-ssn-redaction-template"
}
}
}
}
IAM ขาออกของ IAP (ต่อเซิร์ฟเวอร์ MCP เท่านั้น)
Terraform ไม่สร้างการเชื่อมโยง roles/iap.egressor ระดับโปรเจ็กต์ในรีจิสทรีตัวแทน IAP โดยนัย การเชื่อมโยง IAP REQUEST_AUTHZ ที่ประเมินจริงคือต่อเซิร์ฟเวอร์ MCP และต่อเครื่องมือให้เหตุผล โดยจะได้รับหลังจากที่ติดตั้งใช้งานเอเจนต์และคุณทราบรหัสเอเจนต์แล้ว ขั้นตอน "ให้สิทธิ์การออกของ Agent ต่อเซิร์ฟเวอร์ MCP" จะเรียกใช้ scripts/grant_agent_mcp_egress.sh สำหรับการดำเนินการดังกล่าว
11. สร้างและติดตั้งใช้งานเซิร์ฟเวอร์ MCP ใน Cloud Run
ไฟล์ cloudrun/*.yaml.tmpl และ skaffold.yaml.tmpl อ้างอิง ${PROJECT_ID}, ${REGION} และ ${MCP_INGRESS} (คำอธิบายประกอบขาเข้าของ Cloud Run) แหล่งข้อมูล MCP_INGRESS จากเอาต์พุตของ Terraform เพื่อให้ไฟล์ Manifest ที่แสดงผลยังคงซิงค์กับ enable_cloud_run_private_networking จากนั้นแสดงผลด้วย envsubst
ส่งออกการกำหนดค่าขาเข้าของ Cloud Run
allinternal-and-cloud-load-balancing(เมื่อใช้แนวทางเครือข่ายส่วนตัว)
export MCP_INGRESS=all
envsubst '${PROJECT_ID} ${REGION} ${MCP_INGRESS}' < skaffold.yaml.tmpl > skaffold.yaml
for f in cloudrun/*.yaml.tmpl; do
envsubst '${PROJECT_ID} ${REGION} ${MCP_INGRESS}' < "$f" > "${f%.tmpl}"
done
บริการ Cloud Run แต่ละรายการจะทำงานเป็น SA รันไทม์ต่อบริการที่ Terraform สร้างขึ้น (เช่น mcp-legacy-dms@${PROJECT_ID}.iam.gserviceaccount.com) หากต้องการทําให้ใช้งานได้ในฐานะ SA เหล่านั้น คุณต้องมี roles/iam.serviceAccountUser ในตัวคุณเอง
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="user:$(gcloud config get-value account)" \
--role="roles/iam.serviceAccountUser"
สร้างด้วย Cloud Build และทำให้ใช้งานได้ด้วย Skaffold
skaffold run
Skaffold สร้างอิมเมจ 3 รายการ (legacy-dms, corporate-email, income-verification-api) ลงในที่เก็บ Artifact Registry และอัปเดตบริการ Cloud Run แต่ละรายการให้ชี้ไปยัง Digest ใหม่
ยืนยัน
gcloud run services list --region=${REGION}
คุณควรเห็นบริการทั้ง 3 รายการมีสถานะเป็น ACTIVE
12. ติดตั้งใช้งานตัวแทนสินเชื่อที่อยู่อาศัยใน Agent Runtime
ติดตั้งการขึ้นต่อกันของ Agent และทำให้ใช้งานได้
cd src/mortgage-agent
uv sync
uv run python deploy_agent.py \
--project=${PROJECT_ID} \
--region=${REGION} \
--enable-agent-identity \
--agent-name=mortgage-agent \
--agent-gateway=projects/${PROJECT_ID}/locations/${REGION}/agentGateways/agent-gateway \
--model-endpoint-location=global
เมื่อสคริปต์ทำงานเสร็จแล้ว ให้คัดลอก reasoningEngines/ ที่พิมพ์ลงในเชลล์
export AGENT_ID=<numeric-id-from-output>
cd ../..
13. ให้สิทธิ์การออกของเอเจนต์ต่อเซิร์ฟเวอร์ MCP
ส่วนขยาย IAP REQUEST_AUTHZ จะให้สิทธิ์การเรียกใช้เครื่องมือแต่ละรายการโดยการตรวจสอบ roles/iap.egressor ของเอเจนต์ในเซิร์ฟเวอร์ MCP ที่เฉพาะเจาะจงหรือปลายทางที่เอเจนต์เรียกใช้ ดูสร้างนโยบายขาออกจากเซิร์ฟเวอร์ MCP ไปยังเอเจนต์
สคริปต์ (scripts/grant_agent_mcp_egress.sh) จะแสดงรายการเซิร์ฟเวอร์ MCP ในรีจิสทรีของตัวแทนภายใต้ projects/${PROJECT_ID}/locations/${REGION} และผสานรวมroles/iap.egressorการเชื่อมโยงสำหรับหลักการของตัวแทนเข้ากับนโยบาย IAM ของแต่ละเซิร์ฟเวอร์ (การทำซ้ำความหมายของ gcloud add-iam-policy-binding)
กรณีการใช้งานที่ 1 - การให้สิทธิ์แบบไม่มีเงื่อนไขที่กำหนดขอบเขตไว้สำหรับเซิร์ฟเวอร์ MCP ที่เฉพาะเจาะจง
./scripts/grant_agent_mcp_egress.sh \
--mcp \
--agent-id ${AGENT_ID} \
--mcp-filter "legacy-dms income-verification"
กรณีการใช้งานที่ 2 - การให้สิทธิ์แบบมีเงื่อนไข (CEL) ที่กำหนดขอบเขตไว้สำหรับเซิร์ฟเวอร์ MCP ที่เฉพาะเจาะจง
หากต้องการจำกัด Agent ให้ใช้เครื่องมือบางส่วนในเซิร์ฟเวอร์ MCP เครื่องเดียว ให้แนบเงื่อนไข IAM Agent Gateway จะเผยแพร่แอตทริบิวต์ต่อเครื่องมือที่ IAP REQUEST_AUTHZ แสดงต่อ CEL ซึ่งรวมถึง
iap.googleapis.com/mcp.toolNameiap.googleapis.com/mcp.tool.isReadOnlyiap.googleapis.com/request.auth.type
จำกัดให้เอเจนต์ใช้ได้เฉพาะเครื่องมือแบบอ่านอย่างเดียวใน corporate-email
./scripts/grant_agent_mcp_egress.sh \
--mcp \
--agent-id ${AGENT_ID} \
--mcp-filter "corporate-email" \
--condition-expression "api.getAttribute('iap.googleapis.com/mcp.tool.isReadOnly', false) == true" \
--condition-title "ReadOnlyToolsOnly" \
--condition-description "Restrict ${AGENT_ID} to read-only tools on corporate-email"
หลังจากที่คำสั่งนี้ทำงานแล้ว ให้เขียนเครื่องมือใน corporate-email return 403 PermissionDenied จาก IAP REQUEST_AUTHZ ส่วนเครื่องมือแบบอ่านอย่างเดียวจะยังคงทำงานต่อไป
ยืนยันการเชื่อมโยง
ไปที่แท็บนโยบาย แล้วคุณจะเห็นรายการนโยบายที่สร้างขึ้นเทียบกับปลายทางและเซิร์ฟเวอร์ MCP
กรณีการใช้งานเพิ่มเติม
ให้สิทธิ์แบบไม่มีเงื่อนไขในเซิร์ฟเวอร์ MCP ทุกเครื่อง โดยกำหนดขอบเขตไว้ที่ตัวแทน 1 ราย
เรียกใช้คำสั่งนี้หลังจากที่ติดตั้งเอเจนต์ใหม่ทุกครั้ง หากไม่มีตัวกรองและไม่มีเงื่อนไข เอเจนต์ที่ตั้งชื่อจะได้รับ roles/iap.egressor ในเซิร์ฟเวอร์ MCP ทุกเครื่องในรีจิสทรี
./scripts/grant_agent_mcp_egress.sh \
--mcp \
--agent-id ${AGENT_ID}
14. ทดสอบเอเจนต์ในคอนโซลแพลตฟอร์มเอเจนต์
คอนโซลแพลตฟอร์มตัวแทนมาพร้อมกับ Playground ที่ให้คุณแชทกับตัวแทนที่ใช้งานได้โดยตรง ซึ่งเป็นวิธีที่เร็วที่สุดในการทดสอบการเรียกใช้เครื่องมือและตรวจสอบการติดตามก่อนที่จะเชื่อมต่อ Agent กับ Gemini Enterprise
- เปิดหน้าการติดตั้งใช้งานแพลตฟอร์มตัวแทนในคอนโซล Google Cloud
- ใช้ช่องตัวกรองหากต้องการจำกัดรายการรันไทม์ให้แคบลง จากนั้นคลิกรันไทม์
mortgage-agent - เปิดแท็บสนามเด็กเล่น
- พิมพ์พรอมต์เพื่อแชทกับตัวแทน
I am reviewing the Sterling familys current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
ซึ่งควรแสดงผลการตอบกลับจากเครื่องมือการจัดการเอกสารและเครื่องมือการยืนยันรายได้ และควรมีการปกปิดหมายเลข SSN ในการตอบกลับนี้ด้วย 5. พิมพ์พรอมต์ติดตามผล
Can you send a summary of this to my email jane@example.com
Agent ควรระบุว่าไม่มีสิทธิ์เข้าถึงเครื่องมือ send_email และตอบกลับตามนั้น
เนื่องจากมีการทำให้ใช้งานได้เอเจนต์ด้วยการวัดคุม OpenTelemetry Playground จึงแสดงมุมมองแผงด้านข้าง 4 รายการที่คุณสามารถสลับไปมาระหว่างที่เอเจนต์ตอบได้ ดังนี้
- Trace - Trace แบบเต็มของการสนทนา รวมถึง Agent Gateway, IAP REQUEST_AUTHZ และ Model Armor CONTENT_AUTHZ spans
- เหตุการณ์ - กราฟของเครื่องมือที่เรียกใช้และรายละเอียดเหตุการณ์สำหรับเทิร์นปัจจุบัน
- สถานะ - สถานะเซสชันของตัวแทนและอินพุต/เอาต์พุตของเครื่องมือ
- เซสชัน - ทุกเซสชันที่คุณเริ่มเทียบกับรันไทม์นี้
15. บังคับใช้การให้สิทธิ์ IAP
ตอนนี้เราได้ตรวจสอบการติดตั้งใช้งานแล้ว จึงสามารถอัปเดตโหมดการบังคับใช้ IAP เป็น null เพื่อบังคับใช้นโยบายได้ เปิด terraform.tfvars แล้วอัปเดตโหมดจาก DRY_RUN เป็น null
# IAP Enforcement Mode ("DRY_RUN" or null)
agent_gateway_iap_iam_enforcement_mode = null
ใช้การเปลี่ยนแปลง
terraform apply
กลับไปที่ Playground แล้วลองสนทนาอีกครั้ง
- เปิดหน้าการติดตั้งใช้งานแพลตฟอร์มตัวแทนในคอนโซล Google Cloud
- ใช้ช่องตัวกรองหากต้องการจำกัดรายการรันไทม์ให้แคบลง จากนั้นคลิกรันไทม์
mortgage-agent - เปิดแท็บสนามเด็กเล่น
- พิมพ์พรอมต์เพื่อแชทกับตัวแทน
I am reviewing the Sterling familys current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
ซึ่งควรแสดงผลการตอบกลับจากเครื่องมือการจัดการเอกสารและเครื่องมือการยืนยันรายได้ และควรมีการปกปิดหมายเลข SSN ในการตอบกลับนี้ด้วย 5. พิมพ์พรอมต์ติดตามผล
Can you send a summary of this to my email jane@example.com
หากตั้งค่าทุกอย่างถูกต้องแล้ว เอเจนต์ควรตอบกลับว่าส่งอีเมลไม่ได้เนื่องจากนโยบายการให้สิทธิ์
16. การตั้งค่าและการทดสอบ Gemini Enterprise
ตั้งค่า Gemini Enterprise
ทำตามคู่มือการเริ่มต้นใช้งาน Gemini Enterprise
ลงทะเบียน Agent ของ ADK กับ Gemini Enterprise
หากต้องการทำตามขั้นตอนเพื่อลงทะเบียนเอเจนต์ใน Gemini Enterprise โปรดทำตามขั้นตอนที่นี่
- ในคอนโซล Google Cloud ให้ไปที่หน้า Gemini Enterprise
- เลือกแอป Gemini Enterprise ที่ลงทะเบียนตัวแทน
- เปิด URL ที่แสดงในส่วนเว็บแอป Gemini Enterprise พร้อมใช้งานแล้ว
- เลือกแท็บเอเจนต์จากเมนูด้านซ้ายเพื่อเปิดแกลเลอรีเอเจนต์
- เลือก Mortgage Assistant Agent แล้วเริ่มแชท
ลองใช้พรอมต์เดียวกันจาก Agent Runtime Playground
พรอมต์เริ่มต้น:
I am reviewing the Sterling familys current application. Can you summarize their 2024 and 2025 tax returns and verify if their total household income meets our 2026 debt-to-income requirements?
พรอมต์ติดตามผล:
Can you send a summary of this to my email jane@example.com
หากกลับไปที่ส่วนการติดตั้งใช้งาน Agent ในคอนโซล ให้เลือกการติดตั้งใช้งาน Agent ของเรา แล้วไปที่แท็บการติดตาม คุณจะเห็น Agent ของ Gemini Assistant ในช่วงที่แสดงการเรียกที่มาจาก Gemini Enterprise
17. การแก้ปัญหาและการแก้ไขที่พบบ่อย
terraform applyล้มเหลวใน Agent Gateway โดยมีข้อความว่า "กำลังสร้างทรัพยากร จึงอัปเดตไม่ได้" — โปรเจ็กต์กลุ่มผู้ใช้ของเกตเวย์ใช้เวลาประมาณ 30 วินาทีในการตั้งค่าก่อนที่จะแนบนโยบายการให้สิทธิ์ได้time_sleep.wait_for_gatewayของโมดูลจะจัดการเรื่องนี้ เพียงแค่เรียกใช้terraform applyอีกครั้ง- Agent รายงานว่า "ไม่พบเซิร์ฟเวอร์ MCP" หรือบูตด้วยเครื่องมือยูทิลิตีเท่านั้น - ยืนยัน
enable_agent_registry_endpoints = trueในterraform.tfvarsจากนั้นทำดังนี้ คุณควรเห็นรายการ 3 รายการ (รายการละ 1 รายการต่อบริการ MCP ของ Cloud Run) หากรายการว่างเปล่า ให้ตรวจสอบว่าเข้าถึงบริการ MCP จากภายใน VPC ได้ และ Agent Gateway ได้ป้อนข้อมูลรีจิสทรีแล้ว (ระบบจะดำเนินการนี้แบบเลซีโหลดในรายการเครื่องมือที่พร็อกซีเป็นครั้งแรก)gcloud alpha agent-registry mcp-servers list \ --project=${PROJECT_ID} --location=${REGION} - การเรียกใช้เครื่องมือแสดงผล 403 PermissionDenied - เรียกใช้
scripts/grant_agent_mcp_egress.shอีกครั้ง สาเหตุที่พบบ่อยที่สุดคือการลืมให้สิทธิ์อีกครั้งหลังจากติดตั้งใช้งานตัวแทนใหม่ (reasoningEngines/จะเปลี่ยนไปทุกครั้งที่ติดตั้งใช้งาน) skaffold runล้มเหลวโดยมีข้อความ "สิทธิ์สำหรับบัญชีบริการถูกปฏิเสธ" — คุณไม่มีroles/iam.serviceAccountUserเรียกใช้การให้สิทธิ์ตัวเองอีกครั้งในขั้นตอนก่อนหน้า- ข้อผิดพลาดในการเชื่อมต่อ DNS จาก Agent Gateway ไปยัง MCP LB — ตรวจสอบว่า
agent_gateway_dns_peering_config.target_networkตรงกับprojects/${PROJECT_ID}/global/networks/${VPC_NAME}ทุกประการ และรายการdomainsทุกรายการลงท้ายด้วยจุด terraform planยังคงต้องการอัปเดตแท็กรูปภาพ Cloud Run ซึ่งไม่ควรเกิดขึ้นเนื่องจากกฎlifecycle { ignore_changes }หากเป็นเช่นนั้น ให้ยืนยันว่าคุณไม่ได้แก้ไขmcp_services[*].imageในterraform.tfvarsหลังจากskaffold run
18. ล้างข้อมูล
Terraform ไม่ได้จัดการเครื่องมือให้เหตุผล (ADK SDK สร้างเครื่องมือนี้) ลบด้วยตนเองโดยทำดังนี้
gcloud beta ai reasoning-engines delete ${AGENT_ID} \
--region=${REGION} --project=${PROJECT_ID}
ลบทุกอย่างที่ Terraform สร้างขึ้น
cd terraform
terraform destroy
cd ..
หากคุณสร้างโซน DNS สาธารณะเพื่อใช้ใน Codelab นี้โดยเฉพาะ ให้ทำดังนี้
gcloud dns managed-zones delete agw-example-com
สุดท้าย ให้ลบ Bucket สถานะ Terraform โดยทำดังนี้
gcloud storage rm -r gs://${PROJECT_ID}-tfstate
19. ขอแสดงความยินดี
ยินดีด้วย คุณได้ใช้การกำกับดูแลเอเจนต์ที่ครอบคลุมสำหรับเอเจนต์ ADK แบบหลายเครื่องมือโดยใช้ Agent Gateway เรียบร้อยแล้ว Agent Gateway ทำหน้าที่เป็นระนาบควบคุมเครือข่ายส่วนกลาง ซึ่งช่วยให้คุณสร้างเส้นทางขาออกที่ปลอดภัยไปยังเครื่องมือส่วนตัว บังคับใช้นโยบาย IAM แบบละเอียดตามข้อมูลระบุตัวตนผ่าน Identity-Aware Proxy และล้างข้อมูลการโต้ตอบเนื้อหาโดยใช้การ์ดเรล Model Armor ที่ผสานรวม
สิ่งที่คุณได้เรียนรู้
- วิธีติดตั้งใช้งานและกำหนดค่า Agent Gateway เป็นเลเยอร์การกำกับดูแลส่วนกลางสำหรับการรับส่งข้อมูลขาออกจาก Agent ไปยังทุกที่
- วิธีผสานรวมรีจิสทรีของตัวแทนเพื่อการค้นพบเครื่องมือรันไทม์แบบไดนามิกที่มีการควบคุม
- วิธีเขียนและบังคับใช้นโยบาย IAM ต่อเครื่องมือและตามเงื่อนไขเพื่อควบคุมเส้นทางการดำเนินการของเอเจนต์อย่างเข้มงวด
- วิธีใช้ประโยชน์จากส่วนขยายบริการ Agent Gateway เพื่อใช้นโยบาย Model Armor โดยการสกัดกั้นและปกปิดข้อมูลที่ละเอียดอ่อนของการรับส่งข้อมูลของเอเจนต์โดยอัตโนมัติ