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 | |
กฎขาเข้าที่ใช้กับอินสแตนซ์ที่จัดสรรภาระงาน ซึ่งอนุญาตให้การรับส่งข้อมูลจากระบบตรวจสอบประสิทธิภาพการทำงาน (2600:2d00:1:b029::/64) ของ Google Cloud | |
บริการแบ็กเอนด์ | บริการแบ็กเอนด์ทำหน้าที่เป็นบริดจ์ระหว่างตัวจัดสรรภาระงานกับทรัพยากรแบ็กเอนด์ ในบทแนะนำ บริการแบ็กเอนด์จะเชื่อมโยงกับกลุ่มอินสแตนซ์ที่จัดการไม่ได้ |
กลุ่มอินสแตนซ์ที่ไม่มีการจัดการ | รองรับ VM ที่ต้องกำหนดค่าหรือปรับแต่งแต่ละรายการ ไม่รองรับการปรับขนาดอัตโนมัติ |
6. โทโพโลยีของ Codelab
7. การตั้งค่าและข้อกําหนด
การตั้งค่าสภาพแวดล้อมด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณจะอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะต้องไม่ซ้ำกันสำหรับโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) คอนโซล Cloud จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นจะเป็นอะไร ในโค้ดแล็บส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (ปกติจะระบุเป็น
PROJECT_ID
) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสอื่นแบบสุ่มได้ หรือจะลองใช้อุปกรณ์ของคุณเองเพื่อดูว่าอุปกรณ์พร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงชื่อหลังจากขั้นตอนนี้ไม่ได้ และชื่อนี้จะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ามีค่าที่ 3 ซึ่งเป็นหมายเลขโปรเจ็กต์ที่ API บางรายการใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 รายการนี้ได้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตามโค้ดแล็บนี้จะไม่เสียค่าใช้จ่ายมากนัก หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินหลังจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างไว้หรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่ม Cloud Shell
แม้ว่า Google Cloud จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่ในโค้ดแล็บนี้ คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อดำเนินการเสร็จแล้ว คุณควรเห็นข้อมูลดังต่อไปนี้
เครื่องเสมือนนี้โหลดเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ ซึ่งจะมีไดเรกทอรีหลักขนาด 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
สร้างซับเน็ต
ระบบจะเชื่อมโยงซับเน็ต 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 → บริการที่เผยแพร่
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
สร้างซับเน็ต
สร้างเครือข่ายย่อย 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 → ปลายทางที่เชื่อมต่อ
ทดสอบการเชื่อมต่อ
ใน 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 เจ๋งสุดๆ
ขั้นตอนถัดไป
ลองดู Codelab เหล่านี้...
- การใช้ Private Service Connect เพื่อเผยแพร่และใช้บริการด้วย GKE
- การใช้ Private Service Connect เพื่อเผยแพร่และใช้บริการ
- เชื่อมต่อกับบริการในองค์กรผ่านเครือข่ายแบบผสมโดยใช้ Private Service Connect และตัวจัดสรรภาระงานพร็อกซี TCP ภายใน
- เข้าถึง Codelab ของ Private Service Connect ที่เผยแพร่ทั้งหมด