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

1. บทนำ

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

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

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

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

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

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

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

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

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

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

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

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

จาก 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 ของวิธีการที่นี่เพื่อสร้างใบรับรองแบบ Self-signed คุณเรียกใช้คำสั่งทั้งหมดใน 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. สร้าง Application Load Balancer ภายในระดับภูมิภาค

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

ในตัวอย่างนี้ เราจะกำหนดค่าการเชื่อมต่อบริการเพื่ออนุญาตเฉพาะการเชื่อมต่อ PSC จากโปรเจ็กต์นี้เท่านั้น คุณกำหนดค่าให้ยอมรับโปรเจ็กต์หรือเครือข่ายที่เฉพาะเจาะจงอย่างน้อย 1 รายการได้ แต่จะกำหนดค่าทั้ง 2 อย่างพร้อมกันไม่ได้ เราได้กำหนดขีดจำกัดการเชื่อมต่อสูงสุดไว้ที่ 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 ภายนอกและสร้างใบรับรองแบบ Self-Signed ฝั่งผู้ใช้

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. สร้างคอมโพเนนต์ของตัวจัดสรรภาระงาน

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

เตรียม 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. ขั้นตอนการล้างข้อมูล

ลบคอมโพเนนต์ของ Lab จากเทอร์มินัล 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