1. บทนำ
อินเทอร์เฟซ Private Service Connect เป็นทรัพยากรที่ช่วยให้เครือข่าย Virtual Private Cloud (VPC) ของผู้ผลิตเริ่มการเชื่อมต่อกับปลายทางต่างๆ ในเครือข่าย VPC ของผู้ใช้บริการได้ เครือข่ายผู้ผลิตและผู้บริโภคสามารถอยู่ในโปรเจ็กต์และองค์กรที่แตกต่างกันได้
หากไฟล์แนบเครือข่ายยอมรับการเชื่อมต่อจากอินเทอร์เฟซ Private Service Connect ทาง Google Cloud จะจัดสรรที่อยู่ IP จากซับเน็ตของผู้ใช้ที่ไฟล์แนบเครือข่ายระบุไว้ให้กับอินเทอร์เฟซ เครือข่ายผู้บริโภคและเครือข่ายผู้ผลิตเชื่อมต่อกันและสื่อสารกันได้โดยใช้ที่อยู่ IP ภายใน
การเชื่อมต่อระหว่างไฟล์แนบเครือข่ายกับอินเทอร์เฟซ Private Service Connect จะคล้ายกับการเชื่อมต่อระหว่างปลายทาง Private Service Connect กับไฟล์แนบบริการ แต่มีความแตกต่างที่สำคัญ 2 ประการดังนี้
- ไฟล์แนบเครือข่ายช่วยให้เครือข่ายผู้ผลิตเริ่มการเชื่อมต่อกับเครือข่ายผู้บริโภค (ขาออกของบริการที่มีการจัดการ) ในขณะที่ปลายทางช่วยให้เครือข่ายผู้บริโภคเริ่มการเชื่อมต่อกับเครือข่ายผู้ผลิต (ขาเข้าของบริการที่มีการจัดการ)
- การเชื่อมต่ออินเทอร์เฟซ Private Service Connect เป็นแบบทรานซิทีฟ ซึ่งหมายความว่าเครือข่ายผู้ผลิตจะสื่อสารกับเครือข่ายอื่นๆ ที่เชื่อมต่อกับเครือข่ายผู้บริโภคได้
รูปที่ 1
ข้อควรพิจารณาเกี่ยวกับความสามารถในการเข้าถึงอินเทอร์เฟซ PSC ของ Vertex AI
- อินเทอร์เฟซ PSC ของ Vertex AI สามารถกำหนดเส้นทางการรับส่งข้อมูลไปยังปลายทางใน VPC หรือในองค์กรภายในบล็อกที่อยู่ RFC1918
- PSC-Interface ที่กำหนดเป้าหมายบล็อกที่อยู่ที่ไม่ใช่ RFC-1918 ต้องมีการติดตั้งใช้งานพร็อกซีอย่างชัดเจนใน VPC ของผู้บริโภคที่มีที่อยู่ RFC-1918 ในการติดตั้งใช้งาน Vertex AI คุณต้องกำหนดพร็อกซีพร้อมกับ FQDN ของปลายทางเป้าหมาย ดูรูปที่ 1 ซึ่งแสดงโหมดพร็อกซีที่ชัดเจน Secure Web Proxy (SWP) ที่กำหนดค่าใน VPC ของผู้ใช้เพื่ออำนวยความสะดวกในการกำหนดเส้นทางไปยัง CIDR ที่ไม่ใช่ RFC-1918 ต่อไปนี้
- 240.0.0.0/4
- 203.0.113.0/24
- 10.10.20.0/28 ไม่ต้องใช้พร็อกซี อยู่ในช่วง RFC-1918
- การรับส่งข้อมูลขาออกจากอินเทอร์เน็ต
การเชื่อมต่ออินเทอร์เน็ตสำหรับเครือข่ายกลุ่มผู้ใช้ที่ Google จัดการ
อินเทอร์เฟซ PSC ของ Vertex AI ที่ไม่มี VPC-SC
- เมื่อกำหนดค่าการติดตั้งใช้งานที่มีเฉพาะอินเทอร์เฟซ PSC การติดตั้งใช้งานจะยังคงมีการเข้าถึงอินเทอร์เน็ตเริ่มต้น การรับส่งข้อมูลขาออกนี้จะออกจากเครือข่ายกลุ่มผู้ใช้ที่ Google จัดการโดยตรง
อินเทอร์เฟซ PSC ของ Vertex AI ที่มี VPC-SC
- เมื่อโปรเจ็กต์เป็นส่วนหนึ่งของขอบเขตการควบคุมบริการ VPC ขอบเขตจะบล็อกการเข้าถึงอินเทอร์เน็ตเริ่มต้นของผู้เช่าที่ Google จัดการเพื่อป้องกันการขโมยข้อมูล
- หากต้องการอนุญาตให้การติดตั้งใช้งานเข้าถึงอินเทอร์เน็ตสาธารณะในสถานการณ์นี้ คุณต้องกำหนดค่าเส้นทางขาออกที่ปลอดภัยอย่างชัดเจนซึ่งกำหนดเส้นทางการรับส่งข้อมูลผ่าน VPC ที่เชื่อมต่อกับ Vertex AI การติดตั้งใช้งานพร็อกซีเซิร์ฟเวอร์ภายในเครือข่าย VPC ที่มีที่อยู่ RFC 1918 ซึ่งจับคู่กับเกตเวย์ Cloud NAT เป็นวิธีหนึ่งในการดำเนินการนี้ โปรดทราบว่าคุณยังใช้พร็อกซีเว็บที่ปลอดภัยเพื่อส่งต่อการรับส่งข้อมูลไปยังอินเทอร์เน็ตได้ด้วย การสร้าง Secure Web Proxy จะสร้างเกตเวย์ Cloud NAT โดยอัตโนมัติ
ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้
ตั้งค่าอินเทอร์เฟซ Private Service Connect สำหรับทรัพยากร Vertex AI | Google Cloud
สิ่งที่คุณจะสร้าง
ในบทแนะนำนี้ คุณจะได้สร้างการทำให้ใช้งานได้ Vertex AI Pipelines ที่ครอบคลุมด้วยอินเทอร์เฟซ Private Service Connect (PSC) เพื่ออนุญาตการเชื่อมต่อจากผู้ผลิตไปยังการประมวลผลของผู้บริโภคตามที่แสดงในรูปที่ 1 โดยกำหนดเป้าหมายไปยังปลายทางที่ไม่ใช่ RFC 1918 ใน class-e-subnet
รูปที่ 2
คุณจะสร้าง psc-network-attachment รายการเดียวใน VPC ของผู้บริโภคโดยใช้ประโยชน์จากการเพียร์ DNS เพื่อแก้ปัญหา VM ของผู้บริโภคในโปรเจ็กต์กลุ่มผู้ใช้ที่โฮสต์การฝึก Vertex AI ซึ่งจะส่งผลให้เกิด Use Case ต่อไปนี้
ติดตั้งใช้งาน Vertex AI Pipelines และกำหนดค่า Secure Web Proxy ในโหมดพร็อกซีที่ชัดเจน เพื่อให้สามารถดำเนินการ wget กับ VM ในซับเน็ตคลาส E ได้
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างการเชื่อมต่อเครือข่าย
- วิธีที่โปรดิวเซอร์ใช้การเชื่อมต่อเครือข่ายเพื่อสร้างอินเทอร์เฟซ PSC
- วิธีสร้างการเพียร์ DNS เพื่อแก้ปัญหาโดเมนส่วนตัวที่กำหนดค่าไว้ในเครือข่าย VPC ของผู้บริโภคจากเครือข่าย VPC ที่ Google จัดการ
- วิธีส่งต่อการรับส่งข้อมูลจากอินเทอร์เฟซ PSC ของ Vertex AI ไปยัง Secure Web Proxy
- วิธีสร้างการสื่อสารไปยังพื้นที่ที่อยู่ IP ที่ไม่ใช่ RFC-1918 จากไปป์ไลน์ Vertex AI
สิ่งที่คุณต้องมี
โปรเจ็กต์ Google Cloud
สิทธิ์ IAM
- ผู้ดูแลระบบเครือข่าย Compute (roles/compute.networkAdmin)
- ผู้ดูแลระบบอินสแตนซ์ Compute (roles/compute.instanceAdmin)
- ผู้ดูแลระบบความปลอดภัยของ Compute (roles/compute.securityAdmin)
- ผู้ดูแลระบบนโยบายความปลอดภัย(roles/compute.orgSecurityPolicyAdmin)
- ผู้ดูแลระบบ DNS (roles/dns.admin)
- ผู้ใช้อุโมงค์ข้อมูลที่รักษาความปลอดภัยด้วย IAP (roles/iap.tunnelResourceAccessor)
- ผู้ดูแลระบบการบันทึก (roles/logging.admin)
- ผู้ดูแลระบบ Notebooks (roles/notebooks.admin)
- ผู้ดูแลระบบ IAM ของโปรเจ็กต์ (roles/resourcemanager.projectIamAdmin)
- ผู้ดูแลระบบบัญชีบริการ (roles/iam.serviceAccountAdmin)
- ผู้ใช้บัญชีบริการ (roles/iam.serviceAccountUser)
- ผู้ดูแลระบบการใช้บริการ (roles/serviceusage.serviceUsageAdmin)
2. ก่อนเริ่มต้น
อัปเดตโปรเจ็กต์เพื่อรองรับบทแนะนำ
บทแนะนำนี้ใช้ $variables เพื่อช่วยในการติดตั้งใช้งานการกำหนดค่า gcloud ใน Cloud Shell
ใน Cloud Shell ให้ทำดังนี้
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
projectid=YOUR-PROJECT-ID
echo $projectid
การเปิดใช้ API
ใน Cloud Shell ให้ทำดังนี้
gcloud services enable "compute.googleapis.com"
gcloud services enable "aiplatform.googleapis.com"
gcloud services enable "dns.googleapis.com"
gcloud services enable "notebooks.googleapis.com"
gcloud services enable "storage.googleapis.com"
gcloud services enable "cloudresourcemanager.googleapis.com"
gcloud services enable "artifactregistry.googleapis.com"
gcloud services enable "cloudbuild.googleapis.com"
gcloud services enable "networkservices.googleapis.com"
gcloud services enable "networksecurity.googleapis.com"
gcloud services enable "certificatemanager.googleapis.com"
3. การตั้งค่าสำหรับผู้บริโภค
สร้าง VPC ของผู้ใช้
ใน Cloud Shell ให้ทำดังนี้
gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom
สร้างซับเน็ตของผู้บริโภค
ใน Cloud Shell ให้ทำดังนี้
gcloud compute networks subnets create class-e-subnet --project=$projectid --range=240.0.0.0/4 --network=consumer-vpc --region=us-central1
ใน Cloud Shell ให้ทำดังนี้
gcloud compute networks subnets create rfc1918-subnet1 --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=us-central1 --enable-private-ip-google-access
สร้างซับเน็ตเฉพาะพร็อกซี
gcloud compute networks subnets create proxy-only-uscentral1 \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=us-central1 \
--network=consumer-vpc \
--range=10.10.100.0/26
สร้างซับเน็ตไฟล์แนบเครือข่าย Private Service Connect
ใน Cloud Shell ให้ทำดังนี้
gcloud compute networks subnets create intf-subnet \
--project=$projectid \
--range=192.168.10.0/28 \
--network=consumer-vpc \
--region=us-central1 \
--enable-private-ip-google-access
การกำหนดค่า Cloud Router และ NAT
Secure Web Proxy ของ Google Cloud จะจัดสรรและจัดการเกตเวย์ Cloud NAT และ Cloud Router ที่เชื่อมโยงในภูมิภาคที่มีการติดตั้งใช้งานโดยอัตโนมัติ
4. เปิดใช้ IAP
หากต้องการอนุญาตให้ IAP (Identity Aware Proxy) เชื่อมต่อกับอินสแตนซ์ VM ให้สร้างกฎไฟร์วอลล์ที่มีลักษณะดังนี้
- มีผลกับอินสแตนซ์ VM ทั้งหมดที่คุณต้องการให้เข้าถึงได้โดยใช้ IAP
- อนุญาตการรับส่งข้อมูลขาเข้าจากช่วง IP 35.235.240.0/20 ช่วงนี้มีที่อยู่ IP ทั้งหมดที่ IAP ใช้สำหรับการส่งต่อ TCP
สร้างกฎไฟร์วอลล์ IAP ภายใน Cloud Shell
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
5. สร้างอินสแตนซ์ VM สำหรับผู้บริโภค
สร้างอินสแตนซ์ VM ของผู้ใช้ class-e-vm ภายใน Cloud Shell
gcloud compute instances create class-e-vm \
--project=$projectid \
--machine-type=e2-micro \
--image-family debian-11 \
--no-address \
--shielded-secure-boot \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=class-e-subnet \
--private-network-ip=240.0.0.2
6. เว็บพร็อกซีที่ปลอดภัย
โหมดที่ชัดเจนของ Secure Web Proxy (หรือโหมดการกำหนดเส้นทางพร็อกซีที่ชัดเจน) เป็นวิธีการติดตั้งใช้งานที่ต้องกำหนดค่าภาระงานของไคลเอ็นต์อย่างชัดเจนเพื่อใช้ที่อยู่ IP ภายในหรือชื่อโดเมนแบบเต็มและพอร์ตของ SWP เป็นพร็อกซีการส่งต่อ
ในขั้นตอนด้านล่าง ให้แก้ไข YOUR-PROJECT-ID เป็นรหัสโปรเจ็กต์ของคุณ
สร้างพร็อกซีเว็บ
ใน Cloud Shell ให้สร้างไฟล์ policy.yaml โดยใช้โปรแกรมแก้ไขข้อความ
cat > policy.yaml << EOF
description: basic Secure Web Proxy policy
name: projects/$projectid/locations/us-central1/gatewaySecurityPolicies/policy1
EOF
ใน Cloud Shell ให้สร้างนโยบายเว็บพร็อกซีที่ปลอดภัยโดยใช้คำสั่งต่อไปนี้
gcloud network-security gateway-security-policies import policy1 \
--source=policy.yaml \
--location=us-central1
ในส่วนต่อไปนี้ ให้สร้างกฎเพื่ออนุญาตการเข้าถึง class-e-vm ตามโฮสต์ sessionMatcher
ใน Cloud Shell ให้สร้างไฟล์ rule1.yaml โดยใช้โปรแกรมแก้ไขข้อความ
cat > rule1.yaml << EOF
name: projects/$projectid/locations/us-central1/gatewaySecurityPolicies/policy1/rules/allow-nonrfc-classe
description: Allow nonrfc class-e
enabled: true
priority: 1
basicProfile: ALLOW
sessionMatcher: host() == 'class-e-vm.demo.com'
EOF
ในส่วนต่อไปนี้ ให้สร้างกฎเพื่ออนุญาตการเข้าถึง Jupyter Notebook เพื่ออนุญาตการติดตั้ง apache2 ใน "class-e" VM
ใน Cloud Shell ให้สร้างไฟล์ rule2.yaml โดยใช้โปรแกรมแก้ไขข้อความ
cat > rule2.yaml << EOF
name: projects/$projectid/locations/us-central1/gatewaySecurityPolicies/policy1/rules/allow-apache2
description: Allow Apache2 install on class-e VM
enabled: true
priority: 2
basicProfile: ALLOW
sessionMatcher: inIpRange(source.ip,'240.0.0.2')
EOF
ใน Cloud Shell ให้สร้างกฎนโยบายความปลอดภัย 1 ดังนี้
gcloud network-security gateway-security-policies rules import allow-nonrfc-classe \
--source=rule1.yaml \
--location=us-central1 \
--gateway-security-policy=policy1
ใน Cloud Shell ให้สร้างกฎ security policy rule2 ดังนี้
gcloud network-security gateway-security-policies rules import allow-apache2 \
--source=rule2.yaml \
--location=us-central1 \
--gateway-security-policy=policy1
หากต้องการรองรับการฝึก Vertex AI ให้กำหนดค่าเกตเวย์ Secure Web Proxy ด้วยการตั้งค่าต่อไปนี้
- พอร์ตที่ใช้ฟัง: ใช้พอร์ตเดียวกันที่กำหนดค่าไว้ในการตั้งค่าพร็อกซีที่ชัดเจนของโค้ดแอปพลิเคชัน Vertex AI (เช่น 8080)
- ที่อยู่: กำหนดที่อยู่ IP ส่วนตัวจากช่วง RFC 1918
- โหมดการกำหนดเส้นทาง: ตั้งค่าเป็น EXPLICIT_ROUTING_MODE
ใน Cloud Shell ให้สร้างไฟล์ gateway.yaml เพื่อกำหนดเกตเวย์ Secure Web Proxy ดังนี้
cat > gateway.yaml << EOF
name: projects/$projectid/locations/us-central1/gateways/swp1
type: SECURE_WEB_GATEWAY
addresses: ["10.10.10.5"]
ports: [8080]
gatewaySecurityPolicy: projects/$projectid/locations/us-central1/gatewaySecurityPolicies/policy1
network: projects/$projectid/global/networks/consumer-vpc
subnetwork: projects/$projectid/regions/us-central1/subnetworks/rfc1918-subnet1
routingMode: EXPLICIT_ROUTING_MODE
EOF
สร้างอินสแตนซ์เว็บพร็อกซีที่ปลอดภัยใน Cloud Shell โดยทำดังนี้
gcloud network-services gateways import swp1 \
--source=gateway.yaml \
--location=us-central1
Secure Web Proxy อาจใช้เวลาหลายนาทีในการติดตั้งใช้งาน

7. ไฟล์แนบเครือข่าย Private Service Connect
ไฟล์แนบเครือข่ายเป็นทรัพยากรระดับภูมิภาคที่แสดงฝั่งผู้บริโภคของอินเทอร์เฟซ Private Service Connect คุณจะเชื่อมโยงซับเน็ตเดียวกับการเชื่อมต่อเครือข่าย และผู้ผลิตจะกำหนด IP ให้กับอินเทอร์เฟซ Private Service Connect จากซับเน็ตนั้น ซับเน็ตต้องอยู่ในภูมิภาคเดียวกับการเชื่อมต่อเครือข่าย การเชื่อมต่อเครือข่ายต้องอยู่ในภูมิภาคเดียวกับบริการผู้ผลิต
สร้างการเชื่อมต่อเครือข่าย
สร้างการเชื่อมต่อเครือข่ายภายใน Cloud Shell
gcloud compute network-attachments create psc-network-attachment \
--region=us-central1 \
--connection-preference=ACCEPT_MANUAL \
--subnets=intf-subnet
หมายเหตุ: คุณไม่จำเป็นต้องระบุรหัสโปรเจ็กต์ที่ยอมรับอย่างชัดเจนในไฟล์แนบนี้ เมื่อกำหนดค่า Vertex AI แล้ว ระบบจะเพิ่มโปรเจ็กต์ผู้เช่าที่ Google จัดการโดยอัตโนมัติราวกับว่ามีการกำหนดค่า "ยอมรับโดยอัตโนมัติ"
แสดงรายการการเชื่อมต่อเครือข่าย
ใน Cloud Shell ให้แสดงรายการการเชื่อมต่อเครือข่าย
gcloud compute network-attachments list
อธิบายสิ่งที่แนบมากับเครือข่าย
อธิบายไฟล์แนบเครือข่ายภายใน Cloud Shell
gcloud compute network-attachments describe psc-network-attachment --region=us-central1
จดชื่อไฟล์แนบเครือข่าย PSC, psc-network-attachment ซึ่งผู้ผลิตจะใช้เมื่อสร้างอินเทอร์เฟซ Private Service Connect
หากต้องการดู URL ของการเชื่อมต่อเครือข่าย PSC ใน Cloud Console ให้ไปที่
บริการเครือข่าย → Private Service Connect → ไฟล์แนบเครือข่าย → psc-network-attachment

8. โซน DNS ส่วนตัว
คุณจะสร้างโซน Cloud DNS สำหรับ demo.com และป้อนระเบียน A ที่ชี้ไปยังที่อยู่ IP ของ VM จากนั้นจะมีการติดตั้งใช้งานการ Peering DNS ในงาน Vertex AI Pipelines ซึ่งจะช่วยให้เข้าถึงระเบียน DNS ของผู้บริโภคได้
ใน Cloud Shell ให้ทำดังนี้
gcloud dns --project=$projectid managed-zones create private-dns-codelab --description="" --dns-name="demo.com." --visibility="private" --networks="https://compute.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc"
ใน Cloud Shell ให้สร้างชุดระเบียนสำหรับ VM class-e-vm ตรวจสอบว่าได้อัปเดตที่อยู่ IP ตามเอาต์พุตของสภาพแวดล้อมแล้ว
gcloud dns --project=$projectid record-sets create class-e-vm.demo.com. --zone="private-dns-codelab" --type="A" --ttl="300" --rrdatas="240.0.0.2"
สร้างชุดระเบียนสำหรับพร็อกซีเว็บที่ปลอดภัยภายใน Cloud Shell และตรวจสอบว่าได้อัปเดตที่อยู่ IP ตามเอาต์พุตของสภาพแวดล้อมแล้ว
gcloud dns --project=$projectid record-sets create explicit-swp.demo.com. --zone="private-dns-codelab" --type="A" --ttl="300" --rrdatas="10.10.10.5"
สร้างกฎไฟร์วอลล์ของ Cloud เพื่ออนุญาตการเข้าถึงจากอินเทอร์เฟซ PSC
ในส่วนต่อไปนี้ ให้สร้างกฎไฟร์วอลล์ที่อนุญาตให้การรับส่งข้อมูลที่มาจาก PSC Network Attachment เข้าถึงทรัพยากรการคำนวณ RFC 1918 ใน VPC ของผู้ใช้
ใน Cloud Shell ให้สร้างกฎไฟร์วอลล์ขาเข้าที่อนุญาตการเข้าถึงจากซับเน็ตเฉพาะพร็อกซีไปยังซับเน็ตคลาส E เนื่องจาก SWP เริ่มต้นการเชื่อมต่อกับซับเน็ตเฉพาะพร็อกซีเป็นที่อยู่ต้นทาง
gcloud compute firewall-rules create allow-access-to-class-e \
--network=consumer-vpc \
--action=ALLOW \
--rules=ALL \
--direction=INGRESS \
--priority=1000 \
--source-ranges="10.10.100.0/28" \
--destination-ranges="240.0.0.0/4" \
--enable-logging
9. สร้างสมุดบันทึก Jupyter
ส่วนต่อไปนี้จะแนะนำวิธีสร้างสมุดบันทึก Jupyter Notebook นี้จะใช้ในการติดตั้งใช้งานงาน Vertex AI Pipelines ที่ส่ง wget จาก Vertex AI Pipelines ไปยังอินสแตนซ์ทดสอบ เส้นทางข้อมูลระหว่าง Vertex AI Pipelines กับเครือข่ายผู้ใช้ที่มีอินสแตนซ์จะใช้อินเทอร์เฟซ Private Service Connect
สร้างบัญชีบริการที่มีการจัดการโดยผู้ใช้
ในส่วนต่อไปนี้ คุณจะสร้างบัญชีบริการที่จะเชื่อมโยงกับอินสแตนซ์ Vertex AI Workbench ที่ใช้ในบทแนะนำ
ในบทแนะนำ บัญชีบริการจะมีบทบาทต่อไปนี้
- ผู้ดูแลระบบพื้นที่เก็บข้อมูล
- ผู้ใช้ Vertex AI
- ผู้ดูแลระบบ Artifact Registry
- โปรแกรมแก้ไข Cloud Build
- ผู้ใช้บัญชีบริการ IAM
เข้าสู่ระบบ Cloud Shell แล้วทำดังนี้
สร้างบัญชีบริการ
gcloud iam service-accounts create notebook-sa \
--display-name="notebook-sa"
อัปเดตบัญชีบริการด้วยบทบาทผู้ดูแลระบบพื้นที่เก็บข้อมูล
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
อัปเดตบัญชีบริการด้วยบทบาทผู้ใช้ AI Platform
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
อัปเดตบัญชีบริการด้วยบทบาทผู้ดูแลระบบ Artifact Registry
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
อัปเดตบัญชีบริการด้วยบทบาทผู้แก้ไข Cloud Build
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/cloudbuild.builds.editor"
อนุญาตให้บัญชีบริการของ Notebook ใช้บัญชีบริการเริ่มต้นของ Compute Engine
gcloud iam service-accounts add-iam-policy-binding \
$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')-compute@developer.gserviceaccount.com \
--member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser"
10. สร้างอินสแตนซ์ Vertex AI Workbench
ในส่วนต่อไปนี้ ให้สร้างอินสแตนซ์ Vertex AI Workbench ที่รวมบัญชีบริการที่สร้างไว้ก่อนหน้านี้ notebook-sa
สร้างอินสแตนซ์ไคลเอ็นต์ส่วนตัวภายใน Cloud Shell
gcloud workbench instances create workbench-tutorial --vm-image-project=cloud-notebooks-managed --vm-image-family=workbench-instances --machine-type=n1-standard-4 --location=us-central1-a --subnet-region=us-central1 --subnet=rfc1918-subnet1 --disable-public-ip --shielded-secure-boot=true --shielded-integrity-monitoring=true --shielded-vtpm=true --service-account-email=notebook-sa@$projectid.iam.gserviceaccount.com
11. การอัปเดตตัวแทนบริการ Vertex AI
Vertex AI จะดำเนินการในนามของคุณเพื่อดำเนินการต่างๆ เช่น การขอที่อยู่ IP จากซับเน็ตการแนบเครือข่าย PSC ที่ใช้สร้างอินเทอร์เฟซ PSC โดย Vertex AI จะใช้ตัวแทนบริการ (แสดงอยู่ด้านล่าง) ที่ต้องมีสิทธิ์ผู้ดูแลระบบเครือข่าย
service-$projectnumber@gcp-sa-aiplatform.iam.gserviceaccount.com
หมายเหตุ: ก่อนอัปเดตสิทธิ์ของตัวแทนบริการ ให้ไปที่ Vertex AI ใน Cloud Console เพื่อให้แน่ใจว่าได้เปิดใช้ Vertex AI API แล้ว
ภายใน Cloud Shell
รับหมายเลขโปรเจ็กต์
gcloud projects describe $projectid | grep projectNumber
ตั้งค่าหมายเลขโปรเจ็กต์
projectnumber=YOUR-PROJECT-NUMBER
สร้างบัญชีบริการสำหรับ AI Platform ข้ามขั้นตอนนี้หากคุณมีบัญชีบริการในโปรเจ็กต์อยู่แล้ว
gcloud beta services identity create --service=aiplatform.googleapis.com --project=$projectnumber
อัปเดตบัญชีตัวแทนบริการด้วยบทบาท compute.networkAdmin
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:service-$projectnumber@gcp-sa-aiplatform.iam.gserviceaccount.com" --role="roles/compute.networkAdmin"
อัปเดตบัญชีตัวแทนบริการด้วยบทบาท dns.peer
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:service-$projectnumber@gcp-sa-aiplatform.iam.gserviceaccount.com" --role="roles/dns.peer"
การอัปเดตบัญชีบริการเริ่มต้น
เปิดใช้ Compute Engine API และให้สิทธิ์เข้าถึง Vertex AI แก่บัญชีบริการเริ่มต้น โปรดทราบว่าระบบอาจใช้เวลาสักครู่ในการเผยแพร่การเปลี่ยนแปลงสิทธิ์เข้าถึง
ใช้ Cloud Shell เพื่ออัปเดตบัญชีบริการเริ่มต้นดังนี้
อัปเดตบัญชีบริการเริ่มต้นด้วยบทบาท aiplatform.user
gcloud projects add-iam-policy-binding $projectid \
--member="serviceAccount:$projectnumber-compute@developer.gserviceaccount.com" \
--role="roles/aiplatform.user"
อัปเดตบัญชีบริการเริ่มต้นด้วยบทบาท storage.admin
gcloud projects add-iam-policy-binding $projectid \
--member="serviceAccount:$projectnumber-compute@developer.gserviceaccount.com" \
--role="roles/storage.admin"
อัปเดตบัญชีบริการเริ่มต้นด้วยบทบาท artifactregistry.admin
gcloud projects add-iam-policy-binding $projectid \
--member="serviceAccount:$projectnumber-compute@developer.gserviceaccount.com" \
--role="roles/artifactregistry.admin"
12. ติดตั้ง Apache2 และเปิดใช้ Tcpdump ใน "class-e-vm"
จาก class-e-vm ติดตั้ง Apache2 ผ่านเว็บพร็อกซีที่ปลอดภัย ให้ทำดังนี้
เปิดแท็บ Cloud Shell ใหม่ อัปเดตตัวแปรโปรเจ็กต์ แล้ว SSH ไปยัง class-e-vm
gcloud compute ssh --zone us-central1-a "class-e-vm" --tunnel-through-iap --project $projectid
sudo apt-get -o Acquire::http::Proxy="http://10.10.10.5:8080" update
sudo apt-get -o Acquire::http::Proxy="http://10.10.10.5:8080" install apache2 -y
sudo service apache2 restart
echo 'class-e Server !!' | sudo tee /var/www/html/index.html
ดำเนินการกรอง tcpdump ในซับเน็ตเฉพาะพร็อกซีที่ Secure Web Proxy ใช้เพื่อส่งต่อการรับส่งข้อมูลไปยังเป้าหมาย
จากระบบปฏิบัติการของคลาส-e-vm ให้เรียกใช้การกรอง tcpdump ในซับเน็ตของพร็อกซี-vm
sudo tcpdump -i any net 10.10.100.0/24 -nn
หมายเหตุ: ตรวจสอบว่าคุณได้เปิดการเข้าถึง Google แบบส่วนตัวในเครือข่ายย่อยของอินสแตนซ์บทแนะนำเวิร์กเบนช์เพื่อให้เซสชัน JupyterLab เปิดขึ้น
13. ทำให้งาน Vertex AI Pipelines ใช้งานได้
ในส่วนต่อไปนี้ คุณจะสร้าง Notebook เพื่อดำเนินการ wget จาก Vertex AI Pipelines ไปยังพร็อกซีที่ชัดเจนให้สำเร็จ ซึ่งจะช่วยให้คุณเข้าถึง VM ที่ไม่ใช่ RFC 1918 ได้ เช่น class-e-vm Vertex AI Pipelines ไม่จำเป็นต้องใช้พร็อกซีแบบระบุตัวตนเพื่อเข้าถึง rfc1918-vm เนื่องจากเป้าหมายคือที่อยู่ IP RFC 1918
เรียกใช้งานการฝึกในอินสแตนซ์ Vertex AI Workbench
- ในคอนโซล Google Cloud ให้ไปที่แท็บอินสแตนซ์ในหน้า Vertex AI Workbench
- คลิก Open JupyterLab ข้างชื่ออินสแตนซ์ Vertex AI Workbench (workbench-tutorial) อินสแตนซ์ Vertex AI Workbench จะเปิดขึ้นใน JupyterLab
- เลือกไฟล์ > ใหม่ > Notebook
- เลือก Kernel > Python 3
ในสมุดบันทึก JupyterLab ให้สร้างเซลล์ใหม่ อัปเดตและเรียกใช้รายการต่อไปนี้ อย่าลืมอัปเดต PROJECT_ID ด้วยรายละเอียดของสภาพแวดล้อม
import json
import requests
import pprint
PROJECT_ID = 'YOUR-PROJECT-ID' #Enter your project ID
PROJECT_NUMBER=!gcloud projects list --filter="project_id:$PROJECT_ID" --format="value(PROJECT_NUMBER)"
PROJECT_NUMBER=str(PROJECT_NUMBER).strip('[').strip(']').strip("'")
print(PROJECT_NUMBER)
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
# us-central1 is used for the codelab
REGION = "us-central1" #@param {type:"string"}
SERVICE_NAME = "aiplatform" #@param {type:"string"}
SERVICE ="{}.googleapis.com".format(SERVICE_NAME)
ENDPOINT="{}-{}.googleapis.com".format(REGION, SERVICE_NAME)
API_VERSION = "v1" # @param {type: "string"}
LOCATION = REGION
ในสมุดบันทึก JupyterLab ให้สร้างเซลล์ใหม่และเรียกใช้การกำหนดค่าด้านล่าง โดยสังเกตไฮไลต์ต่อไปนี้
- proxy_server = "http://explicit-swp.demo.com:8080"
- FQDN เชื่อมโยงกับ VM พร็อกซีที่ติดตั้งใช้งานใน VPC ของผู้บริโภค เราใช้การ Peering DNS เพื่อแก้ปัญหา FQDN ในขั้นตอนถัดไป
%%writefile main.py
import logging
import socket
import sys
import os
def make_api_request(url: str, proxy_vm_ip: str, proxy_vm_port: str):
"""
Makes a GET request to a nonRFC-1918 API and saves the response.
Args:
url: The URL of the API to send the request to.
"""
import requests
try:
# response = requests.get(url)
proxy_server = f"http://explicit-swp.demo.com:8080" # replace it with your Secure Web proxy Ip-address and the port.
proxies = {
"http": proxy_server,
"https": proxy_server,
}
response = requests.get(url, proxies=proxies)
logging.info(response.text)
response.raise_for_status() # Raise an exception for bad status codes
logging.info(f"Successfully fetched data from {url}")
except requests.exceptions.RequestException as e:
logging.error(f"An error occurred: {e}")
raise e
if __name__ == '__main__':
# Configure logging to print clearly to the console
logging.basicConfig(
level=logging.INFO,
format='%(levelname)s: %(message)s',
stream=sys.stdout
)
url_to_test = os.environ['NONRFC_URL']
proxy_vm_ip = os.environ['PROXY_VM_IP']
proxy_vm_port = os.environ['PROXY_VM_PORT']
logging.info(f"url_to_test: {url_to_test}")
logging.info(f"proxy_vm_ip: {proxy_vm_ip}")
logging.info(f"proxy_vm_port: {proxy_vm_port}")
make_api_request(url_to_test, proxy_vm_ip, proxy_vm_port)
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
%%writefile Dockerfile
FROM python:3.9-slim
RUN apt-get update && \
apt-get install -y iputils-ping && \
apt-get install -y wget
RUN pip install cloudml-hypertune requests kfp
COPY main.py /main.py
ENTRYPOINT ["python3", "/main.py"]
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
!gcloud artifacts repositories create pipelines-test-repo-psc --repository-format=docker --location=us-central1
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
IMAGE_PROJECT = PROJECT_ID
IMAGE_REPO = 'pipelines-test-repo-psc'
IMAGE_NAME = 'nonrfc-ip-call'
TAG = 'v1'
IMAGE_URI= f'us-central1-docker.pkg.dev/{IMAGE_PROJECT}/{IMAGE_REPO}/{IMAGE_NAME}:{TAG}'
IMAGE_URI
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
!gcloud auth configure-docker us-docker.pkg.dev --quiet
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้ ไม่สนใจข้อผิดพลาด (gcloud.builds.submit) หากมี
!gcloud builds submit --tag {IMAGE_URI} --region=us-central1
ใน Notebook ของ JupyterLab ให้สร้างและเรียกใช้เซลล์ด้านล่าง โดยสังเกตไฮไลต์ต่อไปนี้
- การเพียร์ DNS กับ VPC ของผู้บริโภคได้รับการกำหนดค่าโดยใช้ dnsPeeringConfigs (dnsPeeringConfigs) สำหรับชื่อโดเมน demo.com
- พร็อกซีเว็บในโหมดการกำหนดเส้นทางที่ชัดเจนในที่นี้คือ explicit-swp.demo.com ระบบจะจัดการการแปลงผ่านการเพียร์ DNS ภายใน VPC ของผู้บริโภค
- พอร์ต 8080 คือพอร์ตที่ใช้รับฟัง (ค่าเริ่มต้น) ซึ่งกำหนดค่าไว้ใน Secure Web Proxy
wgetไปยัง class-e-vm-demo.com จะได้รับการแก้ไขผ่านการเพียร์ DNS- โค้ดจะระบุ "psc-network-attachment" สำหรับ Vertex เพื่อให้ใช้ซับเน็ตการเชื่อมต่อเครือข่ายในการติดตั้งใช้งานอินสแตนซ์อินเทอร์เฟซ PSC 2 รายการ
import json
from datetime import datetime
JOB_ID_PREFIX='test_psci-nonRFC' #@param {type:"string"}
JOB_ID = '{}_{}'.format(JOB_ID_PREFIX, datetime.now().strftime("%Y%m%d%H%M%S"))
# PSC-I configs
PRODUCER_PROJECT_ID = PROJECT_ID
DNS_DOMAIN = 'class-e-vm.demo.com' #@param {type:"string"}
NON_RFC_URL = f"http://{DNS_DOMAIN}"
PROXY_VM_IP = "explicit-swp.demo.com" #@param {type:"string"}
PROXY_VM_PORT = "8080" #@param {type:"string"}
CUSTOM_JOB = {
"display_name": JOB_ID,
"job_spec": {
"worker_pool_specs": [
{
"machine_spec": {
"machine_type": "n1-standard-4",
},
"replica_count": 1,
"container_spec": {
"image_uri": IMAGE_URI,
"env": [{
"name": "NONRFC_URL",
"value": NON_RFC_URL
},
{
"name": "PROXY_VM_IP",
"value": PROXY_VM_IP
},
{
"name": "PROXY_VM_PORT",
"value": PROXY_VM_PORT
}]
},
},
],
"enable_web_access": True,
"psc_interface_config": {
"network_attachment": "psc-network-attachment",
"dns_peering_configs": [
{
"domain": "demo.com.",
"target_project": PROJECT_ID,
"target_network": "consumer-vpc"
},
]
},
}
}
print(json.dumps(CUSTOM_JOB, indent=2))
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
import requests
bearer_token = !gcloud auth application-default print-access-token
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {}'.format(bearer_token[0]),
}
request_uri = f"https://{REGION}-aiplatform.googleapis.com/{API_VERSION}/projects/{PROJECT_NUMBER}/locations/{REGION}/customJobs/"
print("request_uri: ", request_uri)
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
response_autopush = requests.post(request_uri, json=CUSTOM_JOB, headers=headers)
response = response_autopush
print("response:", response)
if response.reason == 'OK':
job_name = response.json()['name']
job_id = job_name.split('/')[-1]
print("Created Job: ", response.json()['name'])
else:
print(response.text)
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
# Print KFP SDK version (should be >= 1.6)
! python3 -c "import kfp; print('KFP SDK version: {}'.format(kfp.__version__))"
# Print AI Platform version
! python3 -c "from google.cloud import aiplatform; print('AI Platform version: {}'.format(aiplatform.__version__))"
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
BUCKET_URI = "your-unique-bucket" # Provide a globally unique bucket name
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
!gcloud storage buckets create gs://{BUCKET_URI}
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
# pipeline parameters
CACHE_PIPELINE = False # @param {type: "string"}
_DEFAULT_IMAGE = IMAGE_URI
BUCKET_URI = "gs://{BUCKET_URI}" # @param {type: "string"}
PIPELINE_ROOT = f"{BUCKET_URI}/pipeline_root/intro"
PIPELINE_DISPLAY_NAME = "pipeline_nonRFCIP" # @param {type: "string"}
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
from re import S
import kfp
from kfp import dsl
from kfp.dsl import container_component, ContainerSpec
from kfp import compiler
from google.cloud import aiplatform
# ==== Component with env variable ====
@container_component
def dns_peering_test_op(dns_domain: str, proxy_vm_ip:str, proxy_vm_port:str):
return ContainerSpec(
image=_DEFAULT_IMAGE,
command=["bash", "-c"],
args=[
"""
apt-get update && apt-get install inetutils-traceroute inetutils-ping netcat-openbsd curl -y
echo "Local IP(s): $(hostname -I)"
echo "Attempting to trace route to %s"
traceroute -w 1 -m 7 "%s"
echo "Sending curl requests to http://%s via proxy %s:%s and recording trace..."
if curl -L -v --trace-ascii /dev/stdout -x http://%s:%s "http://%s"; then
echo "Curl request succeeded!"
else
echo "Curl request failed!"
exit 1
fi
""" % (dns_domain, dns_domain, dns_domain, proxy_vm_ip, proxy_vm_port, proxy_vm_ip, proxy_vm_port, dns_domain)
]
)
# ==== Pipeline ====
@dsl.pipeline(
name="dns-peering-test-pipeline",
description="Test DNS Peering using env variable",
pipeline_root=PIPELINE_ROOT,
)
def dns_peering_test_pipeline(dns_domain: str, proxy_vm_ip:str, proxy_vm_port:str):
dns_test_task = dns_peering_test_op(dns_domain=dns_domain, proxy_vm_ip=proxy_vm_ip, proxy_vm_port=proxy_vm_port)
dns_test_task.set_caching_options(enable_caching=CACHE_PIPELINE)
# ==== Compile pipeline ====
if __name__ == "__main__":
aiplatform.init(project=PROJECT_ID, location=LOCATION)
compiler.Compiler().compile(
pipeline_func=dns_peering_test_pipeline,
package_path="dns_peering_test_pipeline.yaml",
)
print("✅ Pipeline compiled to dns_peering_test_pipeline.yaml")
สร้างเซลล์ใหม่ในสมุดบันทึก JupyterLab แล้วเรียกใช้คำสั่งต่อไปนี้
# Define the PipelineJob body; see API Reference https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.pipelineJobs/create
import requests, json
import datetime
bearer_token = !gcloud auth application-default print-access-token
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {}'.format(bearer_token[0]),
}
request_uri = f"https://{REGION}-aiplatform.googleapis.com/{API_VERSION}/projects/{PROJECT_NUMBER}/locations/{REGION}/pipelineJobs/"
print("request_uri: ", request_uri)
14. การตรวจสอบอินเทอร์เฟซ PSC
นอกจากนี้ คุณยังดู IP การแนบเครือข่ายที่ไปป์ไลน์ Vertax AI ใช้ได้โดยไปที่
บริการเครือข่าย → Private Service Connect → ไฟล์แนบเครือข่าย → psc-network-attachment
เลือกโปรเจ็กต์ผู้เช่า (ชื่อโปรเจ็กต์ที่ลงท้ายด้วย -tp)

ฟิลด์ที่ไฮไลต์แสดงถึงที่อยู่ IP ที่ Vertex AI Pipelines ใช้จากไฟล์แนบเครือข่าย PSC

15. การตรวจสอบ Cloud Logging
งาน Vertex AI Pipelines จะใช้เวลาประมาณ 14 นาทีในการเรียกใช้ครั้งแรก ส่วนการเรียกใช้ครั้งต่อๆ ไปจะใช้เวลาน้อยกว่ามาก หากต้องการตรวจสอบว่าผลลัพธ์เป็นไปตามที่ต้องการ ให้ทำดังนี้
ไปที่ Vertex AI → การฝึก → งานที่กำหนดเอง
เลือกงานที่กำหนดเองที่ดำเนินการ

เลือกดูบันทึก

เมื่อ Cloud Logging พร้อมใช้งานแล้ว ให้เลือก "เรียกใช้การค้นหา" ที่สร้างการเลือกที่ไฮไลต์ไว้ด้านล่าง ซึ่งยืนยันว่า wget จาก Vertex AI Pipelines ไปยัง class-e-vm สำเร็จ


16. การตรวจสอบความถูกต้องของ TCPDump
มาดูเอาต์พุต TCPDUMP ที่ตรวจสอบการเชื่อมต่อกับอินสแตนซ์ Compute เพิ่มเติมกัน
จาก class-e-vm ให้สังเกต HTTP GET และ 200 OK
XXXXXXXXX@class-e-vm:~$ sudo tcpdump -i any net 10.10.100.0/28 -nn tcpdump: data link type LINUX_SLL2 tcpdump: verbose output suppressed, use -v[v]... for full protocol decode listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes 05:51:14.173641 ens4 In IP 10.10.100.8.55306 > 240.0.0.2.80: Flags [S], seq 1747181041, win 65535, options [mss 1420,sackOK,TS val 3942828403 ecr 0,nop,wscale 8], length 0 05:51:14.173668 ens4 Out IP 240.0.0.2.80 > 10.10.100.8.55306: Flags [S.], seq 3013226100, ack 1747181042, win 64768, options [mss 1420,sackOK,TS val 1886125065 ecr 3942828403,nop,wscale 7], length 0 05:51:14.174977 ens4 In IP 10.10.100.8.55306 > 240.0.0.2.80: Flags [.], ack 1, win 1054, options [nop,nop,TS val 3942828405 ecr 1886125065], length 0 05:51:14.175066 ens4 In IP 10.10.100.8.55306 > 240.0.0.2.80: Flags [P.], seq 1:223, ack 1, win 1054, options [nop,nop,TS val 3942828405 ecr 1886125065], length 222: HTTP: GET / HTTP/1.1 05:51:14.175096 ens4 Out IP 240.0.0.2.80 > 10.10.100.8.55306: Flags [.], ack 223, win 505, options [nop,nop,TS val 1886125066 ecr 3942828405], length 0 05:51:14.239042 ens4 Out IP 240.0.0.2.80 > 10.10.100.8.55306: Flags [P.], seq 1:246, ack 223, win 505, options [nop,nop,TS val 1886125130 ecr 3942828405], length 245: HTTP: HTTP/1.1 200 OK
17. ล้างข้อมูล
ลบคอมโพเนนต์ของบทแนะนำจาก Cloud Shell
gcloud workbench instances delete workbench-tutorial --project=$projectid --location=us-central1-a
gcloud network-security gateway-security-policies rules delete allow-nonrfc-classe \
--gateway-security-policy=policy1 \
--location=us-central1
gcloud network-security gateway-security-policies rules delete allow-apache2 \
--gateway-security-policy=policy1 \
--location=us-central1
gcloud network-security gateway-security-policies delete policy1 \
--location=us-central1
gcloud network-services gateways delete swp1 \
--location=us-central1
gcloud compute network-attachments delete psc-network-attachment --region=us-central1 --quiet
gcloud compute networks subnets delete intf-subnet rfc1918-subnet1 --region=us-central1 --quiet
gcloud dns record-sets delete class-e-vm.demo.com --zone=private-dns-codelab --type=A
gcloud dns record-sets delete explicit-swp.demo.com --zone=private-dns-codelab --type=A
gcloud dns managed-zones delete private-dns-codelab
gcloud computeinstances delete class-e-vm --project=$projectid --zone=us-central1-a --quiet
gcloud compute networks delete consumer-vpc --quiet
18. ขอแสดงความยินดี
ขอแสดงความยินดี คุณกำหนดค่าและตรวจสอบการเชื่อมต่อระหว่างอินเทอร์เฟซ Private Service Connect ของ Vertex AI Pipelines กับช่วง IP ที่ไม่ใช่ RFC ผ่าน Secure Web Proxy เรียบร้อยแล้ว
คุณสร้างโครงสร้างพื้นฐานของผู้บริโภค และเพิ่มไฟล์แนบเครือข่ายที่อนุญาตให้ผู้ผลิตสร้าง VM แบบหลาย NIC เพื่อเชื่อมต่อการสื่อสารของผู้บริโภคและผู้ผลิต คุณได้เรียนรู้วิธีสร้างการเพียร์ DNS ขณะที่กําลังติดตั้งใช้งานพร็อกซีที่ชัดเจนในเครือข่าย VPC ของผู้บริโภค ซึ่งอนุญาตให้เชื่อมต่อกับอินสแตนซ์ class-e-vm ที่กำหนดเส้นทางจาก Vertex โดยตรงไม่ได้

สิ่งต่อไปที่ควรทำ
อ่านเพิ่มเติมและวิดีโอ
เอกสารอ้างอิง
- ภาพรวมการเข้าถึงเครือข่าย Vertex AI | Google Cloud
- เกี่ยวกับการเข้าถึงบริการ Vertex AI ผ่านอินเทอร์เฟซ Private Service Connect | Google Cloud
- ใช้อินเทอร์เฟซ Private Service Connect สำหรับการฝึก Vertex AI | Google Cloud
- ตั้งค่าอินเทอร์เฟซ Private Service Connect สำหรับทรัพยากร Vertex AI | Google Cloud
- นอกจากนี้ คุณยังเชื่อมโยงบัญชีบริการกับที่อยู่โฮสต์หรือที่อยู่ IP ฯลฯ เพื่อส่งต่อการรับส่งข้อมูลไปยัง SWP ในโหมดการกำหนดเส้นทางที่ชัดเจนได้ด้วย โปรดดูตัวอย่างเพิ่มเติมในเอกสารภาษา CEL