Private Service Connect - การใช้แบ็กเอนด์ PSC เพื่อเข้าถึงบริการของผู้ผลิต

1. บทนำ

Private Service Connect ช่วยให้ผู้ผลิตบริการแสดงบริการจากเครือข่าย VPC หนึ่งไปยังอีกเครือข่ายหนึ่งได้แบบส่วนตัว ผู้บริโภคสามารถเข้าถึงบริการของผู้ผลิตผ่านปลายทาง PSC หรือแบ็กเอนด์ PSC

เนื้อหาหลักของ Codelab นี้คือแบ็กเอนด์ PSC แบ็กเอนด์ PSC ใช้ร่วมกับตัวจัดสรรภาระงานพร็อกซีของ Google Cloud (แอปพลิเคชันหรือเครือข่าย) การใช้แบ็กเอนด์ PSC จะช่วยให้ควบคุมฝั่งผู้บริโภคได้ละเอียดยิ่งขึ้น เช่น

  • ความสามารถในการสังเกตและการบันทึกที่ละเอียดยิ่งขึ้น
  • การผสานรวม Cloud Armor
  • URL ที่กำหนดเอง
  • การจัดการการรับส่งข้อมูลขั้นสูง
  • ใบรับรอง TLS ที่กําหนดเอง

ในโค้ดแล็บนี้ คุณจะได้เรียนรู้วิธีสร้างแบ็กเอนด์ Private Service Connect ด้วย Global External Application Load Balancer เพื่อเข้าถึงบริการของผู้ผลิตในเครือข่ายอื่นแบบส่วนตัว

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

  • สร้างและกําหนดค่าแบ็กเอนด์ PSC ที่เชื่อมโยงกับตัวจัดสรรภาระงานแอปพลิเคชันภายนอกทั่วโลก
  • กำหนดค่าเว็บเซอร์วิสที่จัดการโดย Apache และแสดงเป็นบริการ PSC ผ่านไฟล์แนบบริการ
  • สร้างใบรับรอง SSL เพื่อสิ้นสุด SSL ใน Application Load Balancer ภายในและภายนอก
  • กำหนดค่าโซนสาธารณะของ Cloud DNS เพื่อเข้าถึงบริการ PSC

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

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

2. สภาพแวดล้อมการทดสอบ

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

ใน VPC ของผู้บริโภค คุณจะติดตั้งใช้งาน Global External Application Load Balancer ที่มีบริการแบ็กเอนด์ PSC ที่ชี้ไปยังบริการ Apache จากนั้นคุณจะตั้งค่าโซน DNS สาธารณะเพื่อเข้าถึงบริการ PSC บนอินเทอร์เน็ตสาธารณะ

31e7497bf3d9035c.png

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

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

  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 ซึ่งจะช่วยเพิ่มประสิทธิภาพเครือข่ายและการรับรองได้อย่างมีประสิทธิภาพ คุณทํางานทั้งหมดในโค้ดแล็บนี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไรเลย

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

เปิดใช้ API

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

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

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

gcloud services enable compute.googleapis.com
gcloud services enable servicedirectory.googleapis.com
gcloud services enable dns.googleapis.com

5. การตั้งค่า VPC ของผู้ผลิต

สร้างเครือข่าย VPC

จาก Cloud Shell

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

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

ระบบจะติดตั้งใช้งานซับเน็ตอเนกประสงค์ 2 รายการใน producer-vpc ระบบจะใช้ซับเน็ตบริการเพื่อทำให้ VM เว็บเซอร์วิส Apache ใช้งานได้ รวมถึงกฎการส่งต่อของตัวจัดสรรภาระงาน test-client-subnet จะอยู่ในภูมิภาคอื่นและจะใช้เพื่อติดตั้งใช้งาน VM เพื่อทดสอบบริการ Apache ที่เปิดใช้การเข้าถึงแบบทั่วโลก

จาก Cloud Shell

gcloud compute networks subnets create service-subnet \
    --network=producer-vpc \
    --range=10.0.0.0/28 \
    --region=$region

จาก Cloud Shell

gcloud compute networks subnets create test-client-subnet \
    --network=producer-vpc \
    --range=10.0.1.0/28 \
    --region=us-east4

นอกจากนี้ เรายังต้องติดตั้งใช้งานซับเน็ตเฉพาะพร็อกซีเพื่อใช้กับตัวจัดสรรภาระงานแอปพลิเคชันภายในระดับภูมิภาคด้วย

จาก Cloud Shell

gcloud compute networks subnets create central-proxy-subnet \
    --network=producer-vpc \
    --range=10.100.101.0/24 \
    --region=$region \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE

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

จาก Cloud Shell

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --region=$region \
    --range=10.100.100.0/24 \
    --purpose=PRIVATE_SERVICE_CONNECT

สร้าง Cloud NAT

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

จาก Cloud Shell

gcloud compute routers create central-cr \
    --network=producer-vpc \
    --region=$region

จาก Cloud Shell

gcloud compute routers nats create central-nat \
    --router=central-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

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

จาก Cloud Shell

gcloud compute network-firewall-policies rules create 2000 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow traffic from load balancer proxy subnet" \
    --direction INGRESS \
    --src-ip-ranges 10.100.101.0/24 \
    --layer4-configs tcp:443 \
    --global-firewall-policy


gcloud compute network-firewall-policies rules create 2001 \
    --action ALLOW \
    --firewall-policy producer-vpc-policy \
    --description "allow load balancer health checks" \
    --direction INGRESS \
    --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
    --layer4-configs tcp:443 \
    --global-firewall-policy

6. สร้างบริการเว็บ Apache

เราจะสร้างเว็บเซอร์วิส Apache แบบง่ายที่แสดง "บริการ PSC"

สร้างเทมเพลตอินสแตนซ์

จาก Cloud Shell

gcloud compute instance-templates create apache-service-template \
    --network producer-vpc \
    --subnet service-subnet \
    --region $region \
    --no-address \
    --metadata startup-script='#! /bin/bash
    sudo apt-get update
    apt-get install apache2 -y
    a2enmod ssl
    sudo a2ensite default-ssl
    echo "PSC Service" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

สร้างการตรวจสอบประสิทธิภาพการทำงานสําหรับ MIG

จาก Cloud Shell

gcloud compute health-checks create https service-mig-healthcheck \
    --port=443 \
    --global

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

จาก Cloud Shell

gcloud compute instance-groups managed create psc-service-mig \
    --region $region \
    --size=2 \
    --template=apache-service-template \
    --health-check=service-mig-healthcheck

gcloud compute instance-groups managed set-named-ports psc-service-mig \
    --named-ports=https:443 \
    --region=$region

7. สร้างใบรับรองที่ลงนามด้วยตนเอง

ทำตามขั้นตอนที่ 1 ของวิธีการที่นี่เพื่อสร้างใบรับรองที่ลงนามด้วยตนเอง คุณเรียกใช้คําสั่งทั้งหมดใน Cloud Shell ได้ กลับมาที่หน้านี้เมื่อทำขั้นตอนที่ 1 เสร็จแล้ว คุณต้องกำหนดค่าชื่อทั่วไปกับ EXAMPLE.COM

สร้างทรัพยากรใบรับรองเพื่อเชื่อมโยงกับตัวจัดสรรภาระงาน แทนที่พารามิเตอร์ใบรับรองและคีย์ส่วนตัวด้วยชื่อไฟล์ที่เฉพาะเจาะจง

จาก Cloud Shell

gcloud compute ssl-certificates create producer-service-cert \
    --certificate=<your-producer-certfile.cert> \
    --private-key=<your-producer-keyfile.pem> \
    --region=$region

8. สร้างตัวจัดสรรภาระงานแอปพลิเคชันระดับภูมิภาคภายใน

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

สร้างที่อยู่ IP ภายในที่จะใช้กับกฎการส่งต่อของตัวจัดสรรภาระงาน และจดบันทึก IP ที่จะใช้ในภายหลังเมื่อทำการโทรทดสอบบริการ

จาก Cloud Shell

gcloud compute addresses create apache-service-ip \
 --region=$region \
 --subnet=service-subnet

gcloud compute addresses describe apache-service-ip \
   --format="get(address)" \
   --region=$region

สร้างการตรวจสอบประสิทธิภาพการทํางานของตัวจัดสรรภาระงาน

จาก Cloud Shell

gcloud compute health-checks create https lb-apache-service-hc \
    --region=$region \
    --port-name=https

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

จาก Cloud Shell

gcloud compute backend-services create apache-bes\
  --load-balancing-scheme=INTERNAL_MANAGED \
  --protocol=HTTPS \
  --port-name=https \
  --health-checks=lb-apache-service-hc \
  --health-checks-region=$region \
  --region=$region


gcloud compute backend-services add-backend apache-bes \
  --balancing-mode=UTILIZATION \
  --instance-group=psc-service-mig \
  --region=$region

สร้างแผนที่ URL

จาก Cloud Shell

gcloud compute url-maps create producer-url-map \
  --default-service=apache-bes \
  --region=$region

สร้างพร็อกซี HTTPS เป้าหมาย

จาก Cloud Shell

gcloud compute target-https-proxies create https-proxy \
  --url-map=producer-url-map \
  --region=$region \
  --ssl-certificates=producer-service-cert

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

จาก Cloud Shell

gcloud compute forwarding-rules create apache-fr \
  --load-balancing-scheme=INTERNAL_MANAGED \
  --network=producer-vpc \
  --subnet=service-subnet \
  --address=apache-service-ip \
  --ports=443 \
  --region=$region \
  --target-https-proxy=https-proxy \
  --target-https-proxy-region=$region \
  --allow-global-access

9. สร้าง VM ทดสอบและทดสอบบริการในเครื่อง

ก่อนสร้างไฟล์แนบบริการ เราจะสร้าง VM ไคลเอ็นต์ทดสอบในภูมิภาคอื่นเพื่อทดสอบว่าตัวจัดสรรภาระงานได้รับการกําหนดค่าอย่างถูกต้องด้วย Global Access และ TLS

จาก Cloud Shell

gcloud compute instances create vm-client \
    --zone=us-east4-a \
    --subnet=test-client-subnet \
    --no-address

รอประมาณ 1 นาทีเพื่อให้การจัดสรรเสร็จสมบูรณ์ แล้ว SSH เข้าสู่อินสแตนซ์

จาก Cloud Shell

gcloud compute ssh \
    --zone "us-east4-a" "vm-client" \
    --tunnel-through-iap \
    --project $project

ทดสอบบริการ Apache โดยเชื่อมต่อผ่าน 443 ผ่านตัวจัดสรรภาระงาน ที่อยู่ IP ภายในคือที่อยู่ที่คุณจองไว้และจดไว้ก่อนหน้านี้

curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443

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

PSC Service

ออกจาก VM

จาก vm-client

exit

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

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

จาก Cloud Shell

gcloud compute service-attachments create apache-service-attachment \
    --region=$region \
    --producer-forwarding-rule=apache-fr \
    --connection-preference=ACCEPT_MANUAL \
    --consumer-accept-list=$project=5 \
    --nat-subnets=psc-nat-subnet

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

จาก Cloud Shell

gcloud compute service-attachments describe apache-service-attachment \
    --region $region

คัดลอก URI ที่เริ่มต้นด้วย projects

ตัวอย่าง: projects/$project/regions/$region/serviceAttachments/apache-service-attachment

11. การตั้งค่า VPC ของผู้บริโภค

สร้างเครือข่าย VPC

จาก Cloud Shell

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

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

ต้องมีซับเน็ตฝั่งผู้บริโภคที่จะติดตั้งใช้งานกลุ่มปลายทางเครือข่าย (NEG) ของ Private Service Connect

จาก Cloud Shell

gcloud compute networks subnets create consumer-subnet \
    --network=consumer-vpc \
    --region=$region \
    --range=10.0.0.0/28

12. จอง IP ภายนอกและสร้างใบรับรองที่ลงนามด้วยตนเองฝั่งผู้บริโภค

IP ภายนอก

สร้างที่อยู่ IP ภายนอกแบบคงที่จะใช้ในภายหลังสำหรับกฎการส่งต่อของตัวจัดสรรภาระงาน และบันทึกที่อยู่ IP ในตัวแปร Cloud Shell

จาก Cloud Shell

gcloud compute addresses create external-psc-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

export externalip=$(gcloud compute addresses describe external-psc-ip \
    --format="get(address)" \
    --global)

echo $externalip

ใบรับรองที่ผู้บริโภคลงนามด้วยตนเอง

ทำตามขั้นตอนที่ 1 ของวิธีการที่นี่อีกครั้งเพื่อสร้างใบรับรองที่ลงนามด้วยตนเอง คุณเรียกใช้คําสั่งทั้งหมดใน Cloud Shell ได้ กลับมาที่หน้านี้เมื่อทำขั้นตอนที่ 1 เสร็จแล้ว เราจะใช้บริการ DNS สาธารณะแบบไวลด์การ์ดแบบโอเพนซอร์สชื่อ nip.io แทนการเป็นเจ้าของโซน DNS สาธารณะของเราเอง URL สาธารณะของบริการ PSC จะใช้ที่อยู่ IP ภายนอกที่คุณเพิ่งกําหนดค่า คุณต้องกำหนดค่าชื่อทั่วไปด้วย <YOUR-EXTERNAL-IP.nip.io>

สร้างทรัพยากรใบรับรองเพื่อเชื่อมโยงกับตัวจัดสรรภาระงานภายนอก แทนที่พารามิเตอร์ใบรับรองและคีย์ส่วนตัวด้วยชื่อไฟล์ที่เฉพาะเจาะจง

จาก Cloud Shell

gcloud compute ssl-certificates create consumer-service-cert \
    --certificate=<your-consumer-certfile.cert> \
    --private-key=<your-consumer-keyfile.pem> \
    --global

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

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

เตรียม URI ของไฟล์แนบบริการที่เราจดไว้ให้ในขั้นตอนสุดท้าย แทนที่ psc-target-service ด้านล่างด้วย URI ของคุณ

จาก Cloud Shell

gcloud compute network-endpoint-groups create apache-psc-neg \
--network-endpoint-type=private-service-connect \
--psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \
--region=$region \
--network=consumer-vpc \
--subnet=consumer-subnet

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

จาก Cloud Shell

gcloud compute backend-services create apache-pscneg-bes \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTPS \
    --global

gcloud compute backend-services add-backend apache-pscneg-bes \
    --network-endpoint-group=apache-psc-neg \
    --network-endpoint-group-region=$region \
    --global

สร้างแผนที่ URL

จาก Cloud Shell

gcloud compute url-maps create consumer-url-map \
    --default-service=apache-pscneg-bes \
    --global

สร้างพร็อกซี HTTPS เป้าหมาย

จาก Cloud Shell

gcloud compute target-https-proxies create psc-https-proxy \
    --url-map=consumer-url-map \
    --ssl-certificates=consumer-service-cert

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

จาก Cloud Shell

gcloud compute forwarding-rules create external-fr \
  --load-balancing-scheme=EXTERNAL_MANAGED \
  --network-tier=PREMIUM \
  --address=external-psc-ip \
  --global \
  --target-https-proxy=psc-https-proxy \
  --ports=443

14. สร้างโซน DNS สาธารณะ

จาก Cloud Shell

gcloud dns managed-zones create "psc-service" \
    --dns-name=$externalip.nip.io. \
    --description="public dns for psc service" \
    --visibility=public

จาก Cloud Shell

gcloud dns record-sets transaction start \
   --zone="psc-service"

gcloud dns record-sets transaction add $externalip \
   --name=$externalip.nip.io \
   --ttl=300 \
   --type=A \
   --zone="psc-service"

gcloud dns record-sets transaction execute \
   --zone="psc-service"

15. ทดสอบการเชื่อมต่อ PSC ของผู้บริโภค

รอ 7-10 นาทีก่อนทดสอบเพื่อให้ DNS สาธารณะทำงาน

จาก Cloud Shell

curl https://$externalip.nip.io -k

นอกจากนี้ คุณยังทดสอบจากเบราว์เซอร์ได้โดยป้อน https://<YOUR-EXTERNAL-IP>.nip.io ลงในเบราว์เซอร์หรือเทอร์มินัลในเดสก์ท็อป

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

PSC Service

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

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

gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q

gcloud dns managed-zones delete "psc-service" -q

gcloud compute forwarding-rules delete external-fr --global -q 

gcloud compute target-https-proxies delete psc-https-proxy -q

gcloud compute url-maps delete consumer-url-map --global -q

gcloud compute backend-services delete apache-pscneg-bes --global -q

gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q

gcloud compute ssl-certificates delete consumer-service-cert --global -q

gcloud compute addresses delete external-psc-ip --global -q

gcloud compute networks subnets delete consumer-subnet --region $region -q

gcloud compute networks delete consumer-vpc -q

gcloud compute instances delete vm-client --zone=us-east4-a -q

gcloud compute service-attachments delete apache-service-attachment --region $region -q

gcloud compute forwarding-rules delete apache-fr --region $region -q

gcloud compute target-https-proxies delete https-proxy --region $region -q

gcloud compute url-maps delete producer-url-map --region $region -q

gcloud compute backend-services delete apache-bes --region $region -q

gcloud compute health-checks delete lb-apache-service-hc --region $region -q

gcloud compute addresses delete apache-service-ip --region $region -q

gcloud compute ssl-certificates delete producer-service-cert --region $region -q

gcloud compute instance-groups managed delete psc-service-mig --region $region -q

gcloud compute health-checks delete service-mig-healthcheck --global -q

gcloud compute instance-templates delete apache-service-template -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=network-producer-vpc --global-firewall-policy -q

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

gcloud compute routers nats delete central-nat --router=central-cr --region $region -q

gcloud compute routers delete central-cr --region $region -q

gcloud compute networks subnets delete psc-nat-subnet --region $region -q

gcloud compute networks subnets delete service-subnet --region $region -q

gcloud compute networks subnets delete test-client-subnet --region us-east4 -q 

gcloud compute networks subnets delete central-proxy-subnet --region $region -q

gcloud compute networks delete producer-vpc -q

17. ยินดีด้วย

ขอแสดงความยินดีที่ทํา Codelab จนเสร็จสมบูรณ์

สิ่งที่เราได้พูดถึง

  • สร้างการกำหนดค่าแบ็กเอนด์ PSC ที่เชื่อมโยงกับตัวจัดสรรภาระงานแอปพลิเคชันภายนอกทั่วโลก
  • กำหนดค่าเว็บเซอร์วิสที่จัดการโดย Apache และแสดงเป็นบริการ PSC ผ่านไฟล์แนบบริการ
  • สร้างใบรับรอง SSL เพื่อสิ้นสุด SSL ใน Application Load Balancer ภายในและภายนอก
  • กำหนดค่าโซนสาธารณะของ Cloud DNS เพื่อเข้าถึงบริการ PSC