1. บทนำ
Private Service Connect เป็นความสามารถของเครือข่าย Google Cloud ที่ช่วยให้ผู้ใช้เข้าถึงบริการที่มีการจัดการแบบส่วนตัวจากภายในเครือข่าย VPC ของตนได้ ในทำนองเดียวกัน ก็ช่วยให้ผู้ให้บริการที่มีการจัดการโฮสต์บริการเหล่านี้ในเครือข่าย VPC ของตนเองแยกต่างหาก และเสนอการเชื่อมต่อส่วนตัวแก่ผู้บริโภคได้
จนถึงตอนนี้ เมื่อมีการเปิดเผยบริการ PSC ผ่านการเชื่อมต่อบริการแล้ว คุณจะทำการเปลี่ยนแปลงในตัวจัดสรรภาระงานของบริการไม่ได้โดยไม่ต้องนำการเชื่อมต่อบริการออกและขัดขวางการเชื่อมต่อปลายทาง PSC ของผู้ใช้ การเปิดตัวความสามารถในการเปลี่ยนแปลงของ PSC ช่วยให้ผู้ผลิตอัปเดตตัวจัดสรรภาระงานได้ในขณะที่ยังคงการเชื่อมต่อปลายทาง PSC ไว้ การรักษาการเชื่อมต่อปลายทาง PSC กับการเชื่อมต่อบริการขณะเปลี่ยน Load Balancer มีข้อดีคือไม่จำเป็นต้องดำเนินการใดๆ ในฝั่งผู้ใช้
ขณะนี้ความสามารถในการเปลี่ยนแปลงของ PSC จะรองรับ
- การย้ายข้อมูลไปยังกฎการส่งต่อของตัวจัดสรรภาระงานประเภทเดียวกัน (เช่น Network Passthrough ไปยัง Network Passthrough)
- การย้ายข้อมูลไปยังกฎการส่งต่อของตัวจัดสรรภาระงานประเภทอื่น (เช่น การส่งผ่านเครือข่ายไปยังตัวจัดสรรภาระงานแอปพลิเคชัน)
ความเปลี่ยนแปลงของ PSC ไม่รองรับการแก้ไขกฎการส่งต่อในตำแหน่ง
ในแล็บนี้ คุณจะได้สร้างเว็บเซอร์วิสของผู้ผลิตที่แสดงผ่านตัวจัดสรรภาระงาน Network Passthrough ภายใน ตรวจสอบว่าเซอร์วิสมีการเชื่อมต่อผ่านปลายทาง PSC จากนั้นอัปเดตการเชื่อมโยงไฟล์แนบบริการกับกฎการส่งต่อใหม่ไปยังตัวจัดสรรภาระงานของแอปพลิเคชันภายใน
สิ่งที่คุณจะได้เรียนรู้
- สร้างเว็บเซอร์วิส Apache แบบง่ายที่แสดงเป็นบริการผู้ผลิต PSC
- สร้างปลายทาง PSC
- สร้างโซนส่วนตัวของ Cloud DNS สำหรับการเรียกใช้บริการของผู้บริโภค
- อัปเดตกฎการส่งต่อที่เชื่อมโยงกับการเชื่อมต่อบริการโดยใช้ความสามารถในการเปลี่ยนแปลงของ PSC
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud ที่มีสิทธิ์เจ้าของ
- ความรู้พื้นฐานเกี่ยวกับเครือข่าย Google Cloud
2. สภาพแวดล้อมการทดสอบ
โดยปกติแล้ว ผู้ผลิตและผู้บริโภคจะทำงานในโปรเจ็กต์ที่แตกต่างกัน เพื่อความสะดวก เราจะดำเนินการทั้งหมดในโปรเจ็กต์เดียวกัน แต่แต่ละขั้นตอนจะติดป้ายกำกับด้วยโปรเจ็กต์ Producer หรือ Consumer ในกรณีที่ผู้ใช้ต้องการทำงานในโปรเจ็กต์อื่น
สำหรับแล็บนี้ เราจะเริ่มต้นด้วยการสร้าง producer-vpc ที่มี 3 ซับเน็ต ได้แก่ ซับเน็ตสำหรับโฮสต์บริการผู้ผลิตและ VM ทดสอบ ซับเน็ตสำหรับกฎการส่งต่อของตัวจัดสรรภาระ และซับเน็ต NAT ของ PSC เราจะต้องใช้ Cloud Router และ Cloud NAT เพื่อให้เข้าถึงอินเทอร์เน็ตได้เพื่อดาวน์โหลดแพ็กเกจ Linux เราจะเปิดเผยบริการ Apache ที่กำหนดค่าผ่านกลุ่มอินสแตนซ์ที่ไม่มีการจัดการผ่านตัวจัดสรรภาระงาน Network Passthrough ภายในระดับภูมิภาค และเชื่อมโยงกฎการส่งต่อกับ Service Attachment
ในฝั่งผู้ใช้ เราจะสร้าง consumer-vpc ที่มีซับเน็ตเดียวเพื่อโฮสต์ปลายทาง PSC และ VM ไคลเอ็นต์ทดสอบ เราจะกำหนดค่าโซนส่วนตัวของ Cloud DNS เพื่อเข้าถึงบริการผ่านชื่อโฮสต์
เราจะเพิ่มซับเน็ตอีก 2 รายการในฝั่งผู้ให้บริการเพื่อแสดงฟีเจอร์ความเปลี่ยนแปลงของ PSC โดยซับเน็ตหนึ่งจะโฮสต์ VM ของบริการใหม่ และอีกซับเน็ตหนึ่งจะใช้สำหรับซับเน็ตเฉพาะพร็อกซีของตัวจัดสรรภาระงาน เราจะสร้าง VM ใหม่ที่โฮสต์เว็บเซิร์ฟเวอร์ Apache ซึ่งกำหนดค่าผ่านกลุ่มอินสแตนซ์ที่ไม่มีการจัดการอีกครั้ง และเปิดเผยผ่าน Application Load Balancer ภายในระดับภูมิภาคใหม่ เราจะอัปเดตการเชื่อมต่อบริการให้ชี้ไปยังกฎการส่งต่อใหม่ และทดสอบว่าการเชื่อมต่อฝั่งผู้บริโภคยังคงอยู่

3. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยทั่วไปจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณอาจลองใช้ชื่อของคุณเองและดูว่ามีชื่อนั้นหรือไม่ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะไม่มีค่าใช้จ่ายมากนัก หรืออาจไม่มีค่าใช้จ่ายเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จาก Google Cloud Console ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อเสร็จแล้ว คุณควรเห็นข้อความคล้ายกับตัวอย่างต่อไปนี้

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดใน Codelab นี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไร
4. ก่อนเริ่มต้น
เปิดใช้ API
ตรวจสอบว่าได้ตั้งค่ารหัสโปรเจ็กต์ใน Cloud Shell แล้ว
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=[YOUR-PROJECT-NAME] export region=us-central1 export zone=$region-a echo $project echo $region echo $zone
เปิดใช้บริการทั้งหมดที่จำเป็น
gcloud services enable compute.googleapis.com gcloud services enable dns.googleapis.com
5. สร้างเครือข่ายผู้ผลิต [โปรเจ็กต์ Producer]
สร้างเครือข่าย VPC
จาก Cloud Shell
gcloud compute networks create producer-vpc \
--subnet-mode=custom
สร้างซับเน็ต
เราจะเริ่มด้วยการติดตั้งใช้งาน 3 เครือข่ายย่อยใน producer-vpc โดยจะใช้ 1 รายการสำหรับการติดตั้งใช้งานบริการผู้ผลิต 1 รายการสำหรับกฎการส่งต่อของตัวโหลดบาลานซ์ และ 1 รายการที่จะเชื่อมโยงกับไฟล์แนบบริการ PSC สำหรับเครือข่ายย่อย NAT ของ PSC
จาก Cloud Shell
gcloud compute networks subnets create producer-service-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
gcloud compute networks subnets create producer-fr-subnet \
--network=producer-vpc \
--range=192.168.0.0/28 \
--region=$region
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--range=10.100.0.0/28 \
--region=$region \
--purpose=PRIVATE_SERVICE_CONNECT
สร้าง Cloud NAT
คุณต้องมี Cloud NAT เพื่อติดตั้งแพ็กเกจที่เหมาะสมสำหรับบริการของผู้ผลิต
จาก Cloud Shell
gcloud compute routers create $region-cr \
--network=producer-vpc \
--region=$region
จาก Cloud Shell
gcloud compute routers nats create $region-nat \
--router=$region-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
สร้างนโยบายและกฎไฟร์วอลล์เครือข่าย
จาก Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global
gcloud compute network-firewall-policies associations create \
--firewall-policy producer-vpc-policy \
--network producer-vpc \
--name network-producer-vpc \
--global-firewall-policy
หากต้องการอนุญาตให้ IAP เชื่อมต่อกับอินสแตนซ์ VM ให้สร้างกฎไฟร์วอลล์ที่มีลักษณะดังนี้
- มีผลกับอินสแตนซ์ VM ทั้งหมดที่คุณต้องการให้เข้าถึงได้โดยใช้ IAP
- อนุญาตการรับส่งข้อมูลขาเข้าจากช่วง IP 35.235.240.0/20 ช่วงนี้มีที่อยู่ IP ทั้งหมดที่ IAP ใช้สำหรับการส่งต่อ TCP
จาก Cloud Shell
gcloud compute network-firewall-policies rules create 1000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "SSH with IAP" \
--direction INGRESS \
--src-ip-ranges 35.235.240.0/20 \
--layer4-configs tcp:22 \
--global-firewall-policy
เราจะเริ่มด้วยกฎไฟร์วอลล์ 3 ข้อ โดยจะใช้พอร์ตหนึ่งเพื่ออนุญาตการเข้าถึง VM สำหรับการตรวจสอบสถานะของตัวโหลดบาลานซ์ (2000), พอร์ตหนึ่งเพื่ออนุญาตการเข้าถึง VM จากช่วง NAT ของ PSC (3000) และพอร์ตหนึ่งเพื่ออนุญาตการเชื่อมต่อระหว่าง VM ในเครือข่ายย่อยของบริการเพื่อวัตถุประสงค์ในการทดสอบ (4000) เราจะสร้างกฎทั้งหมดสำหรับพอร์ต 80 เนื่องจากเราจะใช้พอร์ตนี้สำหรับบริการของเรา
จาก Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "LB healthchecks" \
--direction INGRESS \
--src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
--layer4-configs tcp:80 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 3000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow access from PSC NAT subnet" \
--direction INGRESS \
--src-ip-ranges 10.100.0.0/28 \
--layer4-configs tcp:80 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 4000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow access between producer service VMs and testing client for testing purposes" \
--direction INGRESS \
--src-ip-ranges 10.0.0.0/28 \
--layer4-configs tcp:80 \
--global-firewall-policy
6. สร้างบริการของผู้ผลิต [โปรเจ็กต์ของผู้ผลิต]
เราจะสร้างบริการเว็บ Apache แบบง่ายโดยใช้กลุ่มอินสแตนซ์ที่ไม่มีการจัดการซึ่งแสดงข้อความ "ฉันคือบริการของผู้ผลิต"
สร้างอินสแตนซ์
จาก Cloud Shell
gcloud compute instances create producer-service-vm \
--network producer-vpc \
--subnet producer-service-subnet \
--zone $zone \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "I am a Producer Service." | \
tee /var/www/html/index.html
systemctl restart apache2'
สร้างกลุ่มอินสแตนซ์ที่ไม่มีการจัดการ
จาก Cloud Shell
gcloud compute instance-groups unmanaged create producer-uig \ --zone=$zone
เพิ่ม producer-service-vm ลงในกลุ่มอินสแตนซ์ที่ไม่มีการจัดการที่เราเพิ่งสร้าง
จาก Cloud Shell
gcloud compute instance-groups unmanaged add-instances producer-uig \ --zone=$zone \ --instances=producer-service-vm
สร้างคอมโพเนนต์ของตัวจัดสรรภาระงาน
สำหรับบริการของผู้ให้บริการเวอร์ชัน 1 เราจะแสดงบริการโดยใช้ตัวจัดสรรภาระงาน Network Passthrough ในพอร์ต 80
ติดตั้งใช้งานการตรวจสอบประสิทธิภาพการทำงานสำหรับพอร์ต 80
จาก Cloud Shell
gcloud compute health-checks create http producer-hc \
--region=$region
ติดตั้งใช้งานบริการแบ็กเอนด์และเพิ่มแบ็กเอนด์ไปยังบริการแบ็กเอนด์
จาก Cloud Shell
gcloud compute backend-services create producer-bes \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=$region \ --health-checks=producer-hc \ --health-checks-region=$region gcloud compute backend-services add-backend producer-bes \ --region=$region \ --instance-group=producer-uig \ --instance-group-zone=$zone
สร้างที่อยู่ IP แบบคงที่จะใช้สำหรับกฎการส่งต่อของตัวจัดสรรภาระงาน
จาก Cloud Shell
gcloud compute addresses create producer-fr-ip\ --region $region \ --subnet producer-fr-subnet \ --addresses 192.168.0.2
สร้างกฎการส่งต่อของตัวจัดสรรภาระงานที่เปิดเผยพอร์ต 80 โดยใช้บริการแบ็กเอนด์และที่อยู่ IP ที่เราสร้างไว้ก่อนหน้านี้
จาก Cloud Shell
gcloud compute forwarding-rules create producer-fr \ --region=$region \ --load-balancing-scheme=internal \ --network=producer-vpc \ --subnet=producer-fr-subnet \ --address=producer-fr-ip \ --ip-protocol=TCP \ --ports=80 \ --backend-service=producer-bes \ --backend-service-region=$region
7. ทดสอบบริการผู้ผลิต [โปรเจ็กต์ผู้ผลิต]
สร้าง VM ทดสอบใน producer-service-subnet จากนั้นเข้าสู่ระบบ VM และทดสอบการเรียกใช้บริการ Apache
จาก Cloud Shell
gcloud compute instances create producer-test-vm \
--zone=$zone \
--subnet=producer-service-subnet \
--no-address
จาก Cloud Shell
gcloud compute ssh producer-test-vm \
--zone=$zone \
--command="curl -s 192.168.0.2/index.html"
ผลลัพธ์ที่คาดหวัง
I am a Producer Service.
8. เปิดเผยบริการของผู้ผลิตผ่านไฟล์แนบบริการ [โปรเจ็กต์ของผู้ผลิต]
สร้างไฟล์แนบบริการ เชื่อมโยงกับกฎการส่งต่อที่เราสร้างขึ้นโดยใช้ psc-nat-subnet
จาก Cloud Shell
gcloud compute service-attachments create producer-attachment \
--region=$region \
--producer-forwarding-rule=producer-fr \
--connection-preference=ACCEPT_AUTOMATIC \
--nat-subnets=psc-nat-subnet
คุณควรจด URI ของการเชื่อมต่อบริการ (selfLink) ไว้ เนื่องจากคุณจะต้องใช้ในขั้นตอนถัดไปสำหรับการกำหนดค่าปลายทาง PSC คุณจะรับได้โดยการเรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell
จาก Cloud Shell
gcloud compute service-attachments describe producer-attachment --region=$region
เอาต์พุตตัวอย่าง
connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2026-02-10T07:50:04.250-08:00' description: '' enableProxyProtocol: false fingerprint: xxx id: 'xxx' kind: compute#serviceAttachment name: producer-attachment natSubnets: - https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: 'xxx' low: 'xxx' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/producer-attachment targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr
คัดลอก URI โดยเริ่มจาก projects
ตัวอย่าง: projects/$project/regions/$region/serviceAttachments/producer-attachment
9. สร้างเครือข่ายผู้บริโภค [โปรเจ็กต์ผู้บริโภค]
สร้างเครือข่าย VPC
จาก Cloud Shell
gcloud compute networks create consumer-vpc \
--subnet-mode=custom
สร้างซับเน็ต
ระบบจะติดตั้งใช้งานเครือข่ายย่อยเดียวซึ่งเราจะติดตั้งใช้งานปลายทาง PSC และ VM ไคลเอ็นต์ทดสอบ
จาก Cloud Shell
gcloud compute networks subnets create consumer-subnet \
--network=consumer-vpc \
--range=10.0.0.0/28 \
--region=$region
สร้างนโยบายและกฎไฟร์วอลล์เครือข่าย
จาก Cloud Shell
gcloud compute network-firewall-policies create consumer-vpc-policy --global
gcloud compute network-firewall-policies associations create \
--firewall-policy consumer-vpc-policy \
--network consumer-vpc \
--name network-consumer-vpc \
--global-firewall-policy
นอกจากนี้ เราจะกำหนดค่า consumer-vpc ให้ใช้ IAP สำหรับ SSH ด้วย
จาก Cloud Shell
gcloud compute network-firewall-policies rules create 1000 \
--action ALLOW \
--firewall-policy consumer-vpc-policy \
--description "SSH with IAP" \
--direction INGRESS \
--src-ip-ranges 35.235.240.0/20 \
--layer4-configs tcp:22 \
--global-firewall-policy
10. สร้างปลายทาง Private Service Connect [โปรเจ็กต์ผู้บริโภค]
สำรองที่อยู่ IP แบบคงที่จะใช้สำหรับปลายทาง PSC
จาก Cloud Shell
gcloud compute addresses create psc-endpoint-ip \
--region=$region \
--subnet=consumer-subnet \
--addresses 10.0.0.2
สร้างปลายทาง PSC โดยใช้ที่อยู่ IP แบบคงที่ที่สงวนไว้และ URI ของไฟล์แนบบริการที่เราจดไว้ก่อนหน้านี้
จาก Cloud Shell
gcloud compute forwarding-rules create psc-endpoint \ --region=$region \ --network=consumer-vpc \ --address=psc-endpoint-ip \ --target-service-attachment=projects/$project/regions/$region/serviceAttachments/producer-attachment
11. กำหนดค่าโซน DNS ส่วนตัวสำหรับปลายทาง PSC [โปรเจ็กต์ผู้ใช้]
เราจะใช้ Cloud DNS เพื่อกำหนดค่าโซน DNS ส่วนตัวที่มีชื่อ DNS myservice.com เพื่อใช้กับปลายทาง PSC
จาก Cloud Shell
gcloud dns managed-zones create "consumer-service" \
--dns-name=myservice.com \
--description="consumer service dns" \
--visibility=private \
--networks=consumer-vpc
gcloud dns record-sets transaction start \
--zone="consumer-service"
สร้างระเบียน A สำหรับ myservice.com และชี้ไปยังที่อยู่ IP ของปลายทาง PSC
จาก Cloud Shell
gcloud dns record-sets transaction add 10.0.0.2 \ --name=myservice.com \ --ttl=300 \ --type=A \ --zone="consumer-service" gcloud dns record-sets transaction execute \ --zone="consumer-service"
12. ทดสอบปลายทาง PSC [โปรเจ็กต์ผู้บริโภค]
สร้าง VM ไคลเอ็นต์
จาก Cloud Shell
gcloud compute instances create consumer-client-vm \
--zone=$zone \
--subnet=consumer-subnet \
--no-address
ทดสอบการเชื่อมต่อปลายทาง PSC
จาก Cloud Shell
gcloud compute ssh consumer-client-vm \
--zone=$zone \
--command="curl -s myservice.com/index.html"
ผลลัพธ์ที่คาดหวัง
I am a Producer Service.
ในส่วนถัดไปของโค้ดแล็บ เราจะสร้างและย้ายข้อมูลไปยังบริการผู้ผลิตใหม่ โดยจะแสดงฟีเจอร์ความสามารถในการเปลี่ยนแปลงของ PSC ซึ่งช่วยให้การอัปเดตเป็นไปอย่างราบรื่นโดยไม่ต้องอัปเดตการกำหนดค่าฝั่งผู้บริโภค
13. สร้างบริการของผู้ผลิตที่อัปเดตแล้ว [โปรเจ็กต์ของผู้ผลิต]
หากต้องการอัปเดตบริการผู้ผลิต เราจะติดตั้งใช้งาน VM ใหม่ที่เรียกใช้เว็บเซิร์ฟเวอร์ Apache ที่คล้ายกันพร้อมข้อความ "ฉันคือบริการผู้ผลิตรายใหม่" เราจะเพิ่ม VM นั้นลงในกลุ่มอินสแตนซ์ใหม่ที่ไม่มีการจัดการ และใช้กลุ่มอินสแตนซ์ที่ไม่มีการจัดการนั้นเป็นแบ็กเอนด์สำหรับตัวจัดสรรภาระงานใหม่ เราจะอัปเดตตัวจัดสรรภาระงานเป็นตัวจัดสรรภาระงานแอปพลิเคชันภายในระดับภูมิภาคแทนการใช้ตัวจัดสรรภาระงาน Network Passthrough
อัปเดตเครือข่าย
สร้างซับเน็ตใหม่ที่จะใช้สำหรับซับเน็ตเฉพาะพร็อกซีสำหรับ Application Load Balancer
จาก Cloud Shell
gcloud compute networks subnets create lb-proxy-subnet \
--network=producer-vpc \
--range=10.200.0.0/24 \
--region=$region \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE
สร้างเครือข่ายย่อยใหม่ที่จะโฮสต์บริการใหม่ของเรา
จาก Cloud Shell
gcloud compute networks subnets create producer-service-new-subnet \
--network=producer-vpc \
--range=10.0.1.0/28 \
--region=$region
สร้างกฎไฟร์วอลล์ใหม่ที่จะอนุญาตการเชื่อมต่อกับบริการผู้ผลิตใหม่จากซับเน็ตเฉพาะพร็อกซี
จาก Cloud Shell
gcloud compute network-firewall-policies rules create 3001 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow access from proxy only subnet" \
--direction INGRESS \
--src-ip-ranges 10.200.0.0/24 \
--layer4-configs tcp:80 \
--global-firewall-policy
สร้างอินสแตนซ์
จาก Cloud Shell
gcloud compute instances create new-producer-service-vm \
--network producer-vpc \
--subnet producer-service-new-subnet \
--zone $zone \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "I am a NEW Producer Service." | \
tee /var/www/html/index.html
systemctl restart apache2'
สร้างกลุ่มอินสแตนซ์ที่ไม่มีการจัดการ
จาก Cloud Shell
gcloud compute instance-groups unmanaged create producer-new-uig \
--zone=$zone
gcloud compute instance-groups unmanaged add-instances producer-new-uig \
--zone=$zone \
--instances=new-producer-service-vm
gcloud compute instance-groups unmanaged set-named-ports producer-new-uig \
--named-ports=http:80 \
--zone=$zone
สร้างคอมโพเนนต์ตัวจัดสรรภาระงานใหม่
สร้างบริการแบ็กเอนด์ โปรดทราบว่าเราใช้รูปแบบการจัดสรรภาระงาน INTERNAL_MANAGED เนื่องจากเรากำลังอัปเดตเป็นตัวจัดสรรภาระงานแอปพลิเคชันภายใน
จาก Cloud Shell
gcloud compute backend-services create producer-new-bes \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=http \ --region=$region \ --health-checks=producer-hc \ --health-checks-region=$region
เพิ่มกลุ่มอินสแตนซ์ที่ไม่มีการจัดการเป็นแบ็กเอนด์ให้กับบริการแบ็กเอนด์
จาก Cloud Shell
gcloud compute backend-services add-backend producer-new-bes \ --region=$region \ --instance-group=producer-new-uig \ --instance-group-zone=$zone
สร้างแผนที่ URL และพร็อกซี HTTP เป้าหมาย
จาก Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=producer-new-bes \ --region=$region gcloud compute target-http-proxies create http-proxy \ --url-map=producer-url-map \ --region=$region
สร้างที่อยู่ IP แบบคงที่ที่เราจะใช้สำหรับกฎการส่งต่อ ซึ่งจะมาจากซับเน็ตเดียวกันกับที่เราใช้สำหรับกฎการส่งต่อเดิม
จาก Cloud Shell
gcloud compute addresses create producer-fr-new-ip\ --region $region \ --subnet producer-fr-subnet \ --addresses 192.168.0.3
สร้างกฎการส่งต่อ
จาก Cloud Shell
gcloud compute forwarding-rules create new-producer-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=producer-fr-subnet \ --address=producer-fr-new-ip \ --ports=80 \ --region=$region \ --target-http-proxy=http-proxy \ --target-http-proxy-region=$region
14. ทดสอบบริการผู้ผลิตที่อัปเดตแล้ว [โปรเจ็กต์ผู้ผลิต]
เราจะใช้ VM สำหรับทดสอบตัวเดียวกันกับที่เราสร้างขึ้นเพื่อทดสอบบริการที่ติดตั้งใช้งานในตอนแรก
จาก Cloud Shell
gcloud compute ssh producer-test-vm \
--zone=$zone \
--command="curl -s 192.168.0.3/index.html"
โปรดทราบว่าเรากำลังเรียกที่อยู่ IP ที่อัปเดต 192.168.0.3 คือที่อยู่ IP สำหรับ Application Load Balancer ภายในระดับภูมิภาค
ผลลัพธ์ที่คาดหวัง
I am a NEW Producer Service.
15. อัปเดตไฟล์แนบบริการ [โปรเจ็กต์ผู้ผลิต]
หากต้องการเห็นภาพการอัปเดตกฎการส่งต่อ Service Attachment ได้ดียิ่งขึ้น เราสามารถเรียกใช้คำสั่ง describe ใน Service Attachment ก่อนและหลังการเปลี่ยนแปลงได้
จาก Cloud Shell
gcloud compute service-attachments describe producer-attachment \
--region=$region \
--format="value(targetService)"
ผลลัพธ์ที่คาดหวัง
https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-fr
อัปเดตไฟล์แนบบริการ
จาก Cloud Shell
gcloud compute service-attachments update producer-attachment \ --region=$region \ --target-service=projects/$project/regions/$region/forwardingRules/new-producer-fr
ตอนนี้ให้เรียกใช้ describe อีกครั้งเพื่อดูกฎการส่งต่อใหม่
จาก Cloud Shell
gcloud compute service-attachments describe producer-attachment \
--region=$region \
--format="value(targetService)"
ผลลัพธ์ที่คาดหวัง
https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/new-producer-fr
16. ทดสอบการเชื่อมต่อ PSC ของผู้บริโภคอีกครั้ง [โปรเจ็กต์ของผู้บริโภค]
เข้าสู่ระบบไคลเอ็นต์ผู้บริโภคเดียวกัน
จาก Cloud Shell
gcloud compute ssh consumer-client-vm \
--zone=$zone \
--command="curl -s myservice.com/index.html"
ผลลัพธ์ที่คาดหวัง
I am a NEW Producer Service.
ยินดีด้วย คุณอัปเดตตัวจัดสรรภาระงานของบริการผู้ผลิต PSC เรียบร้อยแล้วโดยไม่ต้องทำการเปลี่ยนแปลงการกำหนดค่าใดๆ ในฝั่งผู้ใช้
17. ขั้นตอนการล้างข้อมูล [โปรเจ็กต์ของผู้บริโภค]
ลบคอมโพเนนต์ของ Lab จากเทอร์มินัล Cloud Shell เดียว
gcloud dns record-sets delete myservice.com --zone="consumer-service" --type=A -q gcloud dns managed-zones delete "consumer-service" -q gcloud compute forwarding-rules delete psc-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client-vm --zone=$zone --project $project -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q
18. ขั้นตอนการล้างข้อมูล [โปรเจ็กต์ของโปรดิวเซอร์]
ลบคอมโพเนนต์ของ Lab จากเทอร์มินัล Cloud Shell เดียว
gcloud compute service-attachments delete producer-attachment --region=$region -q gcloud compute instances delete producer-test-vm --zone=$zone --project $project -q gcloud compute forwarding-rules delete new-producer-fr --region=$region -q gcloud compute addresses delete producer-fr-new-ip --region $region -q gcloud compute target-http-proxies delete http-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete producer-new-bes --region $region -q gcloud compute instance-groups unmanaged delete producer-new-uig --zone $zone -q gcloud compute instances delete new-producer-service-vm --zone $zone --project $project -q gcloud compute networks subnets delete producer-service-new-subnet --region $region -q gcloud compute networks subnets delete lb-proxy-subnet --region $region -q gcloud compute forwarding-rules delete producer-fr --region=$region -q gcloud compute addresses delete producer-fr-ip --region $region -q gcloud compute backend-services delete producer-bes --region $region -q gcloud compute health-checks delete producer-hc --region $region -q gcloud compute instance-groups unmanaged delete producer-uig --zone $zone -q gcloud compute instances delete producer-service-vm --zone $zone --project $project -q gcloud compute network-firewall-policies rules delete 4000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 3001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 3000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete $region-nat --router=$region-cr --region=$region -q gcloud compute routers delete $region-cr --region=$region -q gcloud compute networks subnets delete psc-nat-subnet --region=$region -q gcloud compute networks subnets delete producer-fr-subnet --region=$region -q gcloud compute networks subnets delete producer-service-subnet --region=$region -q gcloud compute networks delete producer-vpc -q
19. ยินดีด้วย
ขอแสดงความยินดีที่ทำ Codelab เสร็จสมบูรณ์
สิ่งที่เราได้พูดถึง
- สร้างเว็บเซอร์วิส Apache แบบง่ายที่แสดงเป็นบริการผู้ผลิต PSC
- สร้างปลายทาง PSC
- สร้างโซนส่วนตัวของ Cloud DNS สำหรับการเรียกใช้บริการของผู้บริโภค
- อัปเดตกฎการส่งต่อที่เชื่อมโยงกับการเชื่อมต่อบริการโดยใช้ความสามารถในการเปลี่ยนแปลงของ PSC