Private Service Connect 66

1. บทนำ

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

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

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

สิ่งที่ต้องมี

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

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

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

  • จาก VPC ของผู้บริโภค ให้กำหนดอินสแตนซ์ GCE แบบ 2 สแต็กให้กำหนดเป้าหมายปลายทาง PSC ของ IPv6 เพื่อเข้าถึงบริการของผู้ผลิต

ประโยชน์หลักของ PSC 66

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

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

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

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

ข้อควรพิจารณาสำหรับโปรดิวเซอร์

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

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

  • หากกฎการส่งต่อของผู้ผลิตเป็น IPv4 ซับเน็ต NAT อาจเป็นแบบสแต็กเดี่ยวหรือแบบสแต็กคู่ก็ได้
  • หากกฎการส่งต่อของผู้ผลิตเป็น 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 แบบ 2 สแต็ก

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

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

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

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

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

คอมโพเนนต์

คำอธิบาย

VPC

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

ปลายทาง PSC

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

ซับเน็ต

2 กอง

GCE

2 กอง

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

คอมโพเนนต์

คำอธิบาย

VPC

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

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

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

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

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

การตรวจสอบสุขภาพ

กฎขาเข้าที่ใช้กับอินสแตนซ์ที่จัดสรรภาระงาน ซึ่งอนุญาตให้การรับส่งข้อมูลจากระบบตรวจสอบประสิทธิภาพการทำงาน (2600:2d00:1:b029::/64) ของ Google Cloud

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

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

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

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

6. โทโพโลยีของ Codelab

11a36b2a52d60fe7.png

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

เริ่ม Cloud Shell

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

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 --enable-ula-internal-ipv6

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

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

เครือข่าย VPC

130648bcdb9266b1.png

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

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

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

gcloud compute networks subnets create producer-nat-dual-stack-subnet --network producer-vpc --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL

คุณจะต้องบันทึกที่อยู่ IPv6 ของ producer-nat-dual-stack-subnet ที่ใช้ในขั้นตอนถัดไปเพื่อสร้างกฎไฟร์วอลล์ขาเข้าเพื่ออนุญาตให้ซับเน็ต NAT ของ PSC เข้าถึงแบ็กเอนด์ของตัวจัดสรรภาระงาน

ใน Cloud Shell ให้รับซับเน็ต IPv6 NAT ของ PSC

gcloud compute networks subnets describe producer-nat-dual-stack-subnet --region=us-central1 | grep -i internalIpv6Prefix:

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

user@cloudshell$ gcloud compute networks subnets describe producer-nat-dual-stack-subnet --region=us-central1 | grep -i internalIpv6Prefix:
internalIpv6Prefix: fd20:b4a:ea9f:2:0:0:0:0/64

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

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

สร้างเครือข่ายย่อย VM ของผู้ผลิตใน Cloud Shell โดยทำดังนี้

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

สร้างเกตเวย์ NAT สาธารณะ

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 2600:2d00:1:b029::/64 --layer4-configs tcp:80 --global-firewall-policy

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

อัปเดตกฎไฟร์วอลล์ <insert-your-psc-nat-ipv6-subnet> ด้วยซับเน็ต IPv6 PSC NAT ที่ได้ก่อนหน้านี้ในโค้ดแล็บ

ใน 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 <insert-your-psc-nat-ipv6-subnet> --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-dual-stack-vm-subnet \
    --stack-type=IPV4_IPV6 \
    --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

กำหนดที่อยู่ IPv6 สำหรับกฎการส่งต่อของผู้ผลิต (ตัวจัดสรรภาระงานเครือข่ายภายใน)

ใน Cloud Shell ให้ทําดังนี้

gcloud compute addresses create producer-fr-ipv6-address \
    --region=us-central1 \
    --subnet=producer-dual-stack-fr-subnet \
    --ip-version=IPV6

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

ใน Cloud Shell ให้ทําดังนี้

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

สร้างไฟล์แนบของบริการ

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

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

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

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

ใน Cloud Shell ให้ทําดังนี้

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

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

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-27T05:59:17.188-07:00'
description: ''
enableProxyProtocol: false
fingerprint: EaultrFOzc4=
id: '8752850315312657226'
kind: compute#serviceAttachment
name: ipv6-producer-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/projectid/regions/us-central1/subnetworks/producer-nat-dual-stack-subnet
pscServiceAttachmentId:
  high: '1053877600257000'
  low: '8752850315312657226'
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/ipv6-producer-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/projectid/regions/us-central1/forwardingRules/producer-fr

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

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

4356b8ab4a385eb6.png

312795be39b21f62.png

11. สร้างเครือข่าย VPC ของผู้บริโภค

เครือข่าย VPC

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

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

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

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

เครือข่าย VPC

f0cb0565e4af4c72.png

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

สร้างเครือข่ายย่อย GCE แบบ 2 สแต็กใน 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

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

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 และทดสอบการเชื่อมต่อแบบ Dual Stack

สร้าง Test dual-stack VM

สร้างอินสแตนซ์ GCE แบบ 2 สแต็กในเครือข่ายย่อยแบบ 2 สแต็กภายใน 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 ที่คุณจะใช้เข้าถึงบริการ Producer โดยทำดังนี้

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:799:4ea3:1::'

สร้างปลายทาง 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 → ปลายทางที่เชื่อมต่อ

1ee60ea44c5027dd.png

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

ใน Cloud Shell ให้ใช้ SSH เข้าสู่อินสแตนซ์ GCE แบบ 2 สแต็ก consumer-vm-ipv4-ipv6

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

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

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

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

user@consumer-vm-ipv4-ipv6$ curl -6 http://[fd20:799:4ea3:1::]
Welcome to Producer-VM !!

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

exit

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

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

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

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

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

gcloud compute instances delete 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-ipv6-endpoint-ip --region=us-central1 -q

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

gcloud compute networks delete consumer-vpc -q

gcloud compute service-attachments delete ipv6-producer-svc-attachment --region=us-central1 -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 addresses delete producer-fr-ipv6-address --region=us-central1 -q

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

gcloud compute networks delete producer-vpc -q

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

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

คุณได้สร้างโครงสร้างพื้นฐานของผู้ผลิต รวมถึงได้เรียนรู้วิธีสร้างอุปกรณ์ปลายทางของผู้บริโภค IPv6 ในเครือข่าย VPC ของผู้บริโภคที่อนุญาตให้เชื่อมต่อกับบริการของผู้ผลิต IPv6

Cosmopup คิดว่า Codelab เจ๋งสุดๆ

c911c127bffdee57.jpeg

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

ลองดู Codelab เหล่านี้...

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

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