Private Service Connect 64

1. บทนำ

Private Service Connect ปฏิวัติวิธีที่องค์กรใช้บริการภายในระบบนิเวศของ Google Cloud โดยให้การรองรับการกำหนดที่อยู่ IPv6 อย่างเต็มรูปแบบควบคู่ไปกับ IPv4 โดยผสานรวมการรักษาความปลอดภัยที่ดียิ่งขึ้น การเชื่อมต่อที่ง่ายขึ้น ประสิทธิภาพที่ดียิ่งขึ้น และการจัดการแบบรวมศูนย์ จึงเป็นโซลูชันที่เหมาะสำหรับธุรกิจที่กำลังมองหารูปแบบการใช้บริการที่แข็งแกร่ง เชื่อถือได้ และมีประสิทธิภาพ ซึ่งพร้อมสำหรับอนาคตของการสร้างเครือข่าย ไม่ว่าคุณจะสร้างระบบคลาวด์แบบไฮบริด แชร์บริการทั่วทั้งองค์กร หรือเข้าถึงบริการของบุคคลที่สาม PSC ก็มีเส้นทางที่ราบรื่นและปลอดภัยในการใช้ศักยภาพของ Google Cloud อย่างเต็มที่ พร้อมทั้งรับประโยชน์จาก IPv6

สิ่งที่คุณจะได้เรียนรู้

  • สิทธิประโยชน์หลักของ PSC 64
  • การแปลที่รองรับ Private Service Connect 64
  • ภาพรวม ULA แบบ Dual Stack
  • ข้อกำหนดเกี่ยวกับเครือข่าย
  • สร้างบริการของผู้ผลิต Private Service Connect
  • สร้างปลายทาง Private Service Connect
  • สร้างการเชื่อมต่อกับปลายทาง Private Service Connect จาก VM IPv4
  • สร้างการเชื่อมต่อกับปลายทาง Private Service Connect จาก VM แบบ Dual Stack

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

  • โปรเจ็กต์ Google Cloud ที่มีสิทธิ์เจ้าของ

2. สิ่งที่คุณจะสร้าง

คุณจะสร้างเครือข่าย Producer เพื่อติดตั้งใช้งานเว็บเซิร์ฟเวอร์ Apache เป็นบริการที่เผยแพร่ผ่าน Private Service Connect (PSC) เมื่อเผยแพร่แล้ว คุณจะต้องดำเนินการต่อไปนี้เพื่อตรวจสอบสิทธิ์เข้าถึงบริการ Producer

  • จาก VPC ของผู้ใช้ อินสแตนซ์ GCE IPv4 ให้กำหนดเป้าหมายไปยังปลายทาง PSC IPv4 เพื่อเข้าถึงบริการของผู้ผลิต
  • จาก VPC ของผู้ใช้ ซึ่งเป็นอินสแตนซ์ GCE แบบ dual-stack ให้กำหนดเป้าหมายไปยังปลายทาง PSC ของ IPv6 เพื่อเข้าถึงบริการของผู้ผลิต

สิทธิประโยชน์หลักของ PSC 64

  • การผสานรวมที่ราบรื่น: PSC ผสานรวมกับเครือข่าย VPC ที่กำหนดค่าสำหรับ IPv6 ได้อย่างราบรื่น ซึ่งช่วยให้คุณใช้ประโยชน์จากการกำหนดที่อยู่ IPv6 สำหรับการเชื่อมต่อบริการได้
  • รองรับ Dual-Stack: PSC รองรับการกำหนดค่า Dual-Stack ซึ่งช่วยให้ใช้ IPv4 และ IPv6 พร้อมกันได้ภายใน VPC เดียวกัน ทำให้เครือข่ายมีความยืดหยุ่นและพร้อมรับมือกับอนาคต
  • การเปลี่ยนผ่านที่ง่ายขึ้น: PSC ช่วยให้การเปลี่ยนไปใช้ IPv6 ง่ายขึ้นโดยให้คุณค่อยๆ นำ IPv6 มาใช้ควบคู่ไปกับโครงสร้างพื้นฐาน IPv4 ที่มีอยู่
  • การสนับสนุนผู้ผลิต: ผู้ผลิตไม่จำเป็นต้องใช้ Dual Stack แต่ผู้บริโภคมีตัวเลือกในการทำให้ใช้งานได้ปลายทาง PSC ของ IPv4 หรือ IPv6

3. รองรับการแปล Private Service Connect 64 และ 66

ข้อควรพิจารณาสำหรับผู้บริโภค

เวอร์ชัน IP ของอุปกรณ์ปลายทางอาจเป็น IPv4 หรือ IPv6 แต่จะเป็นทั้ง 2 อย่างไม่ได้ ผู้บริโภคสามารถใช้ที่อยู่ IPv4 ได้หากซับเน็ตของที่อยู่เป็น Single-Stack ผู้บริโภคสามารถใช้ที่อยู่ IPv4 หรือ IPv6 ได้หากซับเน็ตของที่อยู่เป็นแบบ 2 สแต็ก ผู้บริโภคสามารถเชื่อมต่อทั้งปลายทาง IPv4 และ IPv6 กับการแนบบริการเดียวกันได้ ซึ่งอาจเป็นประโยชน์สำหรับการย้ายข้อมูลบริการไปยัง IPv6

ข้อควรพิจารณาสำหรับผู้ผลิต

เวอร์ชัน IP ของกฎการส่งต่อของผู้ผลิตจะกำหนดเวอร์ชัน IP ของไฟล์แนบบริการและการรับส่งข้อมูลที่ออกจากไฟล์แนบบริการ เวอร์ชัน IP ของการเชื่อมต่อบริการจะเป็น IPv4 หรือ IPv6 ก็ได้ แต่จะเป็นทั้ง 2 อย่างไม่ได้ โปรดิวเซอร์สามารถใช้ที่อยู่ IPv4 ได้หากซับเน็ตของที่อยู่เป็นแบบสแต็กเดียว ผู้ผลิตสามารถใช้ที่อยู่ IPv4 หรือ IPv6 ได้หากซับเน็ตของที่อยู่เป็นแบบ 2 สแต็ก

IP เวอร์ชันของที่อยู่ IP ของกฎการส่งต่อของผู้ผลิตต้องเข้ากันได้กับประเภทสแต็กของซับเน็ต NAT ของการเชื่อมต่อบริการ

  • หากกฎการส่งต่อของผู้ผลิตเป็น IPv4 ซับเน็ต NAT จะเป็นแบบสแต็กเดียวหรือแบบ Dual Stack ก็ได้
  • หากกฎการส่งต่อของผู้ผลิตเป็น IPv6 ซับเน็ต NAT ต้องเป็นแบบ Dual Stack

ชุดค่าผสมต่อไปนี้ใช้ได้กับการกำหนดค่าที่รองรับ

  • ปลายทาง IPv4 ไปยังการเชื่อมต่อบริการ IPv4
  • ปลายทาง IPv6 ไปยังการแนบบริการ IPv6
  • ปลายทาง IPv6 ไปยังการเชื่อมต่อบริการ IPv4 ในการกำหนดค่านี้ Private Service Connect จะแปลระหว่าง IP ทั้ง 2 เวอร์ชันโดยอัตโนมัติ

ไม่รองรับรายการต่อไปนี้

Private Service Connect ไม่รองรับการเชื่อมต่อปลายทาง IPv4 กับไฟล์แนบบริการ IPv6 ในกรณีนี้ การสร้างปลายทางจะล้มเหลวพร้อมข้อความแสดงข้อผิดพลาดต่อไปนี้

กฎการส่งต่อ Private Service Connect ที่มีที่อยู่ IPv4 จะกำหนดเป้าหมายไฟล์แนบบริการ IPv6 ไม่ได้

4. ภาพรวม ULA แบบ Dual Stack

Google Cloud รองรับการสร้างเครือข่ายย่อยและ VM แบบ IPv6 ส่วนตัวของ ULA RFC 4193 กำหนดรูปแบบการกำหนดที่อยู่ IPv6 สำหรับการสื่อสารภายใน ซึ่งเหมาะสำหรับการสื่อสารภายใน VPC ที่อยู่ ULA ไม่สามารถกำหนดเส้นทางได้ทั่วโลก ดังนั้น VM ของคุณจึงแยกออกจากอินเทอร์เน็ตอย่างสมบูรณ์ ซึ่งให้ลักษณะการทำงานที่คล้ายกับ RFC-1918 โดยใช้ IPv6 Google Cloud อนุญาตให้สร้างคำนำหน้า ULA ของเครือข่าย VPC ที่มีคำนำหน้า /48 เพื่อให้ระบบกำหนดซับเน็ต IPv6 ULA ทั้งหมดที่มีคำนำหน้า /64 จากช่วงเครือข่าย VPC นั้น

เช่นเดียวกับที่อยู่ IPv6 ภายนอกที่ไม่ซ้ำกันทั่วโลกที่ Google Cloud รองรับ ซับเน็ตที่เปิดใช้ ULA IPv6 แต่ละรายการจะได้รับซับเน็ต /64 จากช่วง ULA ของเครือข่าย VPC /48 และ VM แต่ละรายการจะได้รับการกำหนดที่อยู่ /96 จากซับเน็ตนั้น

RFC4193 กำหนดพื้นที่ที่อยู่ IPv6 ในช่วง fc00::/7 คุณจัดสรรและใช้ที่อยู่ ULA ได้อย่างอิสระภายในเครือข่าย/เว็บไซต์ส่วนตัว Google Cloud จะกำหนดที่อยู่ ULA ทั้งหมดจากช่วง fd20::/20 ที่อยู่เหล่านี้จะกำหนดเส้นทางได้ภายในขอบเขตของ VPC เท่านั้น และกำหนดเส้นทางในอินเทอร์เน็ต IPv6 ทั่วโลกไม่ได้

ที่อยู่ ULA ที่ Google Cloud กำหนดรับประกันได้ว่าจะไม่ซ้ำกันในเครือข่าย VPC ทั้งหมด Google Cloud จะตรวจสอบว่าไม่มีการกำหนดคำนำหน้า ULA เดียวกันให้กับเครือข่าย VPC 2 เครือข่าย ซึ่งจะช่วยแก้ปัญหาช่วงที่ทับซ้อนกันในเครือข่าย VPC

คุณจะปล่อยให้ Google Cloud กำหนด /48 ให้กับเครือข่ายโดยอัตโนมัติ หรือจะเลือกคำนำหน้า IPv6 /48 ที่เฉพาะเจาะจงก็ได้ หากมีการกำหนดคำนำหน้า IPv6 ที่คุณระบุให้กับ VPC อื่นหรือในเครือข่ายในองค์กรแล้ว คุณสามารถเลือกช่วงอื่นได้

5. ข้อกำหนดเกี่ยวกับเครือข่าย

ด้านล่างนี้คือรายละเอียดข้อกำหนดของเครือข่ายสำหรับเครือข่ายผู้บริโภคและเครือข่ายผู้ผลิต

เครือข่ายผู้บริโภค (คอมโพเนนต์ทั้งหมดที่ติดตั้งใช้งานใน us-central1)

คอมโพเนนต์

คำอธิบาย

VPC

การเชื่อมต่อเครือข่ายแบบ Dual Stack ต้องใช้ VPC โหมดที่กำหนดเองที่เปิดใช้ ULA

ปลายทาง PSC

  • ปลายทาง PSC ของ IPv4 ที่ใช้เพื่อเข้าถึงบริการของผู้ผลิต
  • ปลายทาง PSC ของ IPv6 ที่ใช้เพื่อเข้าถึงบริการของผู้ผลิต

ซับเน็ต

IPv4 และ Dual-stack

GCE

IPv4 และ Dual-stack

เครือข่ายผู้ผลิต(คอมโพเนนต์ทั้งหมดที่ติดตั้งใช้งานใน us-central1)

คอมโพเนนต์

คำอธิบาย

VPC

VPC โหมดกำหนดเอง ไม่ได้เปิดใช้ ULA

ซับเน็ต NAT ของ PSC

IPv4 ระบบจะแปลแพ็กเก็ตจากเครือข่าย VPC ของผู้ใช้โดยใช้ Source NAT (SNAT) เพื่อแปลงที่อยู่ IP ต้นทางเดิมเป็นที่อยู่ IP ต้นทางจากซับเน็ต NAT ในเครือข่าย VPC ของผู้ผลิต

กฎการส่งต่อ PSC

IPv4 ตัวจัดสรรภาระงานเครือข่ายการปล่อยผ่านสัญญาณภายใน

การตรวจสอบประสิทธิภาพการทำงาน

กฎการรับส่งข้อมูลขาเข้าที่ใช้กับอินสแตนซ์ที่กำลังจัดสรรภาระงาน ซึ่งอนุญาตการรับส่งข้อมูลจากระบบตรวจสอบสถานะของ Google Cloud (130.211.0.0/22 และ 35.191.0.0/16)

บริการแบ็กเอนด์

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

กลุ่มอินสแตนซ์ที่ไม่มีการจัดการ

รองรับ VM ที่ต้องมีการกำหนดค่าหรือการปรับแต่งแต่ละรายการ ไม่รองรับการปรับขนาดอัตโนมัติ

6. โทโพโลยี Codelab

b52931afd997d61.png

7. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

เริ่มต้น Cloud Shell

แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จาก Google Cloud Console ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดใน Codelab นี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไร

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

เปิดใช้ API

ใน Cloud Shell ให้ตรวจสอบว่าได้ตั้งค่ารหัสโปรเจ็กต์แล้ว

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=us-central1
echo $project
echo $region

เปิดใช้บริการที่จำเป็นทั้งหมด

gcloud services enable compute.googleapis.com

9. สร้างเครือข่าย VPC ของผู้ผลิต

เครือข่าย VPC

ใน Cloud Shell ให้ทำดังนี้

gcloud compute networks create producer-vpc --subnet-mode custom

สร้างซับเน็ต

ซับเน็ต PSC จะเชื่อมโยงกับไฟล์แนบบริการ PSC เพื่อวัตถุประสงค์ในการเปลี่ยนค่าที่อยู่เครือข่าย สำหรับกรณีการใช้งานจริง คุณต้องปรับขนาดซับเน็ตนี้ให้เหมาะสมเพื่อรองรับปริมาณการรับส่งข้อมูลขาเข้าจากปลายทาง PSC ที่แนบทั้งหมด ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบการกำหนดขนาดซับเน็ต NAT ของ PSC

สร้างซับเน็ต NAT ของ PSC ใน Cloud Shell โดยทำดังนี้

gcloud compute networks subnets create producer-psc-nat-subnet --network producer-vpc --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

สร้างซับเน็ตของกฎการส่งต่อสำหรับผู้ผลิตภายใน Cloud Shell โดยทำดังนี้

gcloud compute networks subnets create producer-psc-fr-subnet --network producer-vpc --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

ภายใน Cloud Shell ให้สร้างเครือข่ายย่อยของ VM ผู้ผลิต

gcloud compute networks subnets create producer-psc-vm-subnet --network producer-vpc --range 172.16.30.0/28 --region $region --enable-private-ip-google-access

สร้าง Public NAT gateway

VM ของผู้ผลิตต้องมีสิทธิ์เข้าถึงอินเทอร์เน็ตเพื่อดาวน์โหลด Apache แต่เนื่องจากอินสแตนซ์ GCE ไม่มี IP ภายนอก Cloud NAT จึงจะให้การส่งออกอินเทอร์เน็ตสำหรับการดาวน์โหลดแพ็กเกจ

สร้าง Cloud Router ภายใน Cloud Shell โดยทำดังนี้

gcloud compute routers create producer-cloud-router --network producer-vpc --region us-central1

สร้างเกตเวย์ Cloud NAT ที่เปิดใช้การรับส่งข้อมูลอินเทอร์เน็ตขาออกภายใน Cloud Shell โดยทำดังนี้

gcloud compute routers nats create producer-nat-gw --router=producer-cloud-router --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

สร้างนโยบายไฟร์วอลล์เครือข่ายและกฎไฟร์วอลล์

ใน 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 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

กฎไฟร์วอลล์ต่อไปนี้อนุญาตการรับส่งข้อมูลจากช่วงพร็อบการตรวจสอบประสิทธิภาพการทำงานไปยังอินสแตนซ์ทั้งหมดในเครือข่าย ในสภาพแวดล้อมการใช้งานจริง กฎไฟร์วอลล์นี้ควรจำกัดเฉพาะอินสแตนซ์ที่เชื่อมโยงกับบริการผู้ผลิตที่เฉพาะเจาะจงเท่านั้น

ใน Cloud Shell ให้ทำดังนี้

gcloud compute network-firewall-policies rules create 2000 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic from health check probe range" --direction INGRESS --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 --layer4-configs tcp:80 --global-firewall-policy

กฎไฟร์วอลล์ต่อไปนี้อนุญาตการรับส่งข้อมูลจากช่วงซับเน็ต NAT ของ PSC ไปยังอินสแตนซ์ทั้งหมดในเครือข่าย ในสภาพแวดล้อมการใช้งานจริง กฎไฟร์วอลล์นี้ควรจำกัดเฉพาะอินสแตนซ์ที่เชื่อมโยงกับบริการผู้ผลิตที่เฉพาะเจาะจงเท่านั้น

ใน Cloud Shell ให้ทำดังนี้

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy producer-vpc-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

สร้าง VM ของโปรดิวเซอร์

สร้างเว็บเซิร์ฟเวอร์ Apache ของ producer-vm ใน Cloud Shell โดยใช้คำสั่งต่อไปนี้

gcloud compute instances create producer-vm \
    --project=$project \
    --machine-type=e2-micro \
    --image-family debian-12 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=producer-psc-vm-subnet \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to Producer-VM !!' | tee /var/www/html/index.html
      EOF"

ใน Cloud Shell ให้สร้างกลุ่มอินสแตนซ์ที่ไม่มีการจัดการซึ่งประกอบด้วยอินสแตนซ์ producer-vm และการตรวจสอบประสิทธิภาพการทำงาน

gcloud compute instance-groups unmanaged create producer-instance-group --zone=us-central1-a

gcloud compute instance-groups unmanaged add-instances producer-instance-group  --zone=us-central1-a --instances=producer-vm

gcloud compute health-checks create http hc-http-80 --port=80

10. สร้างบริการของผู้ผลิต

สร้างคอมโพเนนต์ของตัวจัดสรรภาระงาน

ใน Cloud Shell ให้ทำดังนี้

gcloud compute backend-services create producer-backend-svc --load-balancing-scheme=internal --protocol=tcp --region=us-central1 --health-checks=hc-http-80

gcloud compute backend-services add-backend producer-backend-svc --region=us-central1 --instance-group=producer-instance-group --instance-group-zone=us-central1-a

ในไวยากรณ์ต่อไปนี้ ให้สร้างกฎการส่งต่อ (ตัวจัดสรรภาระงานเครือข่ายภายใน) ที่มีที่อยู่ IP ที่กำหนดไว้ล่วงหน้า 172.16.2.3 ซึ่งเชื่อมโยงกับบริการแบ็กเอนด์ producer-backend-svc

ใน Cloud Shell ให้ทำดังนี้

gcloud compute forwarding-rules create producer-fr --region=us-central1 --load-balancing-scheme=internal --network=producer-vpc --subnet=producer-psc-fr-subnet --address=172.16.20.3 --ip-protocol=TCP --ports=all --backend-service=producer-backend-svc --backend-service-region=us-central1

สร้าง Service Attachment

สร้างไฟล์แนบบริการใน Cloud Shell โดยทำดังนี้

gcloud compute service-attachments create ipv4-producer-svc-attachment --region=$region --producer-forwarding-rule=producer-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

จากนั้นรับและจดบันทึกไฟล์แนบบริการที่แสดงใน URI ของ selfLink ซึ่งเริ่มต้นด้วยโปรเจ็กต์เพื่อกำหนดค่าปลายทาง PSC ในสภาพแวดล้อมของผู้บริโภค

selfLink: projects/<your-project-id>/regions/us-central1/serviceAttachments/ipv4-producer-svc-attachment

ใน Cloud Shell ให้ทำดังนี้

gcloud compute service-attachments describe ipv4-producer-svc-attachment --region=$region

ตัวอย่างผลลัพธ์ที่คาดหวัง

user@cloudshell:~ (projectid)$ gcloud compute service-attachments describe ipv4-producer-svc-attachment --region=$region
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-26T07:08:01.625-07:00'
description: ''
enableProxyProtocol: false
fingerprint: USOMy1eQKyM=
id: '1401660514263708334'
kind: compute#serviceAttachment
name: ipv4-producer-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/projectid/regions/us-central1/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '85245007652455400'
  low: '1401660514263708334'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/projectid/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/projectid/regions/us-central1/serviceAttachments/ipv4-producer-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/projectid/regions/us-central1/forwardingRules/producer-fr

ใน Cloud Console ให้ไปที่

บริการเครือข่าย → Private Service Connect → บริการที่เผยแพร่

9166d64204ec31c3.png

1b5feeca51b6533e.png

11. สร้างเครือข่าย VPC ของผู้ใช้บริการ

เครือข่าย VPC

สร้าง VPC ของผู้ใช้ภายใน Cloud Shell โดยเปิดใช้ ULA ของ IPv6 ดังนี้

gcloud compute networks create consumer-vpc \
    --subnet-mode=custom \
    --enable-ula-internal-ipv6

Google จัดสรรซับเน็ต /48 ที่ไม่ซ้ำกันทั่วโลกให้กับ VPC สำหรับผู้บริโภค หากต้องการดูการจัดสรร ให้ทำดังนี้

ใน Cloud Console ให้ไปที่

เครือข่าย VPC

c847bd7c20e3677d.png

สร้างซับเน็ต

สร้างซับเน็ต IPv4 GCE ภายใน Cloud Shell โดยทำดังนี้

gcloud compute networks subnets create consumer-v4-subnet --network consumer-vpc --range=192.168.10.0/28 --region $region --enable-private-ip-google-access

สร้างซับเน็ตปลายทาง PSC ของ IPv4 ภายใน Cloud Shell โดยทำดังนี้

gcloud compute networks subnets create psc-ipv4-endpoint-subnet --network consumer-vpc --range=192.168.11.0/28 --region $region --enable-private-ip-google-access

สร้างเครือข่ายย่อย GCE แบบ Dual Stack ภายใน Cloud Shell โดยทำดังนี้

gcloud compute networks subnets create consumer-dual-stack-subnet --network consumer-vpc --range=192.168.20.0/28 --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL --region $region --enable-private-ip-google-access

ภายใน Cloud Shell ให้สร้างซับเน็ตปลายทาง PSC แบบ Dual Stack ดังนี้

gcloud compute networks subnets create psc-dual-stack-endpoint-subnet --network consumer-vpc --range=192.168.21.0/28 --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL --region $region --enable-private-ip-google-access

สร้างนโยบายไฟร์วอลล์เครือข่ายและกฎไฟร์วอลล์

ใน 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 consumer-vpc --global-firewall-policy

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

เครือข่ายผู้บริโภคต้องการเพียง SSH จากการเข้าถึง IAP เท่านั้น

12. สร้าง VM, ปลายทาง PSC และทดสอบการเชื่อมต่อ IPv4

สร้าง VM สำหรับทดสอบ

สร้างอินสแตนซ์ GCE IPv4 ในเครือข่ายย่อย IPv4 ภายใน Cloud Shell โดยทำดังนี้

gcloud compute instances create consumer-vm-ipv4 --zone=us-central1-a --subnet=consumer-v4-subnet --no-address

สร้าง IP แบบคงที่ของปลายทาง PSC

สร้างที่อยู่ IP แบบคงที่สำหรับปลายทาง PSC ใน Cloud Shell

gcloud compute addresses create psc-ipv4-endpoint-ip --region=$region --subnet=psc-ipv4-endpoint-subnet --addresses 192.168.11.13

สร้างปลายทาง PSC ของ IPv4

ใน Cloud Shell ให้สร้างปลายทาง PSC โดยการอัปเดต URI ของไฟล์แนบบริการด้วย URI ที่คุณบันทึกไว้เมื่อสร้างไฟล์แนบบริการ

gcloud compute forwarding-rules create psc-ipv4-endpoint --region=$region --network=consumer-vpc --address=psc-ipv4-endpoint-ip --target-service-attachment=[SERVICE ATTACHMENT URI]

ตรวจสอบความถูกต้องของปลายทาง PSC

มาตรวจสอบว่าผู้ผลิตยอมรับปลายทาง PSC แล้ว ใน Cloud Console ให้ไปที่

บริการเครือข่าย → Private Service Connect → ปลายทางที่เชื่อมต่อ

ac858b2db226e58a.png

ทดสอบการเชื่อมต่อ

ใน Cloud Shell ให้ SSH ไปยังอินสแตนซ์ GCE, consumer-vm-ipv4

gcloud compute ssh --zone us-central1-a "consumer-vm-ipv4" --tunnel-through-iap --project $project

ตอนนี้เมื่อคุณเข้าสู่ระบบอินสแตนซ์ GCE แล้ว ให้เรียกใช้ curl ไปยังปลายทาง psc, psc-ipv4-endpoint 192.168.11.13

ในอินสแตนซ์ GCE consumer-vm-ipv4 ให้เรียกใช้ curl ดังนี้

curl 192.168.11.13

ผลลัพธ์ที่คาดไว้

user@consumer-vm-ipv4:~$ curl 192.168.11.13
Welcome to Producer-VM !!

ในอินสแตนซ์ GCE ของ consumer-vm-ipv4 ให้ออกจากระบบอินสแตนซ์โดยการออก ซึ่งจะนำคุณกลับไปที่ Cloud Shell

exit

ผลลัพธ์ที่คาดไว้

user@consumer-vm-ipv4:~$ exit
logout
Connection to compute.6833450446005281720 closed.

13. สร้าง VM, ปลายทาง PSC และทดสอบการเชื่อมต่อแบบ Dual Stack

สร้าง VM แบบ Dual Stack สำหรับทดสอบ

สร้างอินสแตนซ์ GCE แบบ Dual Stack ในเครือข่ายย่อยแบบ Dual Stack ภายใน Cloud Shell โดยทำดังนี้

gcloud compute instances create consumer-vm-ipv4-ipv6 --zone=us-central1-a --subnet=consumer-dual-stack-subnet --no-address --stack-type=IPV4_IPV6

สร้างที่อยู่ IPv6 แบบคงที่ของปลายทาง PSC

สร้างที่อยู่ IPv6 แบบคงที่สำหรับปลายทาง PSC ใน Cloud Shell โดยทำดังนี้

gcloud compute addresses create psc-ipv6-endpoint-ip --region=$region --subnet=psc-dual-stack-endpoint-subnet --ip-version=IPV6

รับที่อยู่ IPv6 แบบคงที่ของปลายทาง PSC

ใน Cloud Shell ให้รับที่อยู่ IPv6 ของ PSC ที่คุณจะใช้เพื่อเข้าถึงบริการของผู้ผลิต

gcloud compute addresses describe psc-ipv6-endpoint-ip --region=us-central1 | grep -i address:

ตัวอย่างเอาต์พุต

user@cloudshell$ gcloud compute addresses describe psc-ipv6-endpoint-ip --region=us-central1 | grep -i address:
address: 'fd20:2eb:7252:2::'

สร้างปลายทาง PSC ของ IPv6

ใน Cloud Shell ให้สร้างปลายทาง PSC โดยการอัปเดต URI ของไฟล์แนบบริการด้วย URI ที่คุณบันทึกไว้เมื่อสร้างไฟล์แนบบริการ

gcloud compute forwarding-rules create psc-ipv6-endpoint --region=$region --network=consumer-vpc --address=psc-ipv6-endpoint-ip --target-service-attachment=[SERVICE ATTACHMENT URI]

ตรวจสอบความถูกต้องของปลายทาง PSC

มาตรวจสอบว่าผู้ผลิตยอมรับปลายทาง PSC แล้ว ใน Cloud Console ให้ไปที่

บริการเครือข่าย → Private Service Connect → ปลายทางที่เชื่อมต่อ

957b74e89f3ad837.png

ทดสอบการเชื่อมต่อ

ภายใน Cloud Shell ให้ใช้ SSH ไปยังอินสแตนซ์ GCE แบบ Dual Stack, consumer-vm-ipv4-ipv6 แล้วใช้ curl ไปยังปลายทาง PSC IPv6 ของผู้ใช้ ซึ่งก็คือ psc-ipv6-endpoint เพื่อตรวจสอบสิทธิ์เข้าถึงบริการของผู้ให้บริการ

gcloud compute ssh --zone us-central1-a "consumer-vm-ipv4-ipv6" --tunnel-through-iap --project $project

ตอนนี้คุณได้เข้าสู่ระบบอินสแตนซ์ GCE แบบ 2 สแต็กแล้ว ให้ใช้ curl ไปยังปลายทาง psc, psc-dual-stack-endpoint โดยใช้ที่อยู่ IPv6 ที่ระบุไว้ในขั้นตอนก่อนหน้า

ในอินสแตนซ์ GCE consumer-vm-ipv4-ipv6 ให้เรียกใช้ curl ไปยังปลายทาง PSC IPv6 ที่ระบุไว้ในขั้นตอนรับ IPv6 แบบคงที่ของปลายทาง PSC

curl -6 http://[insert-your-ipv6-psc-endpoint]

ผลลัพธ์ที่คาดไว้

user@consumer-vm-ipv4-ipv6$ curl -6 http://[fd20:2eb:7252:2::]
Welcome to Producer-VM !!

ในอินสแตนซ์ GCE consumer-vm-ipv4-ipv6 ให้ออกจากระบบอินสแตนซ์โดยการออก ซึ่งจะนำคุณกลับไปที่ Cloud Shell

exit

ผลลัพธ์ที่คาดไว้

user@consumer-vm-ipv4-ipv6:~$ exit
logout
Connection to compute.6162185519072639197 closed.

14. ขั้นตอนการล้างข้อมูล

ลบคอมโพเนนต์ของ Lab จากเทอร์มินัล Cloud Shell เดียว

gcloud compute service-attachments delete ipv4-producer-svc-attachment --region=us-central1 -q

gcloud compute forwarding-rules delete psc-ipv6-endpoint psc-ipv4-endpoint --region=us-central1 -q

gcloud compute instances delete consumer-vm-ipv4 consumer-vm-ipv4-ipv6 --zone=us-central1-a -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=consumer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q

gcloud compute addresses delete psc-ipv4-endpoint-ip psc-ipv6-endpoint-ip --region=us-central1 -q

gcloud compute networks subnets delete consumer-v4-subnet psc-ipv4-endpoint-subnet consumer-dual-stack-subnet psc-dual-stack-endpoint-subnet --region=us-central1 -q

gcloud compute networks delete consumer-vpc -q

gcloud compute forwarding-rules delete producer-fr --region=us-central1 -q

gcloud compute backend-services delete producer-backend-svc --region=us-central1 -q

gcloud compute health-checks delete hc-http-80 -q

gcloud compute network-firewall-policies rules delete 2001 --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=producer-vpc --global-firewall-policy -q

gcloud compute network-firewall-policies delete producer-vpc-policy --global -q

gcloud compute instance-groups unmanaged delete producer-instance-group --zone=us-central1-a -q

gcloud compute instances delete producer-vm --zone=us-central1-a -q

gcloud compute routers nats delete producer-nat-gw --router=producer-cloud-router --router-region=us-central1 -q

gcloud compute routers delete producer-cloud-router --region=us-central1 -q

gcloud compute networks subnets delete producer-psc-fr-subnet  producer-psc-vm-subnet producer-psc-nat-subnet --region=us-central1 -q

gcloud compute networks delete producer-vpc -q

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

ขอแสดงความยินดี คุณกำหนดค่าและตรวจสอบ Private Service Connect 64 เรียบร้อยแล้ว

คุณสร้างโครงสร้างพื้นฐานของผู้ผลิต เรียนรู้วิธีสร้างปลายทางของผู้ใช้ IPv4 และ IPv6 ในเครือข่าย VPC ของผู้ใช้ที่อนุญาตการเชื่อมต่อกับบริการของผู้ผลิต

Cosmopup คิดว่า Codelab นั้นยอดเยี่ยม!!

c911c127bffdee57.jpeg

สิ่งต่อไปที่ควรทำ

ลองใช้ Codelab เหล่านี้

อ่านเพิ่มเติมและวิดีโอ

เอกสารอ้างอิง