Looker PSA Southbound HTTPS Internet NEG

เกี่ยวกับ Codelab นี้
schedule38 นาที
subjectอัปเดตล่าสุดเมื่อ 2 เมษายน 2568
account_circleเขียนโดย Deepak Michael, Emanuele Mazza

เฉพาะอินสแตนซ์ Looker (Google Cloud Core) ที่ใช้การเข้าถึงบริการส่วนตัวสำหรับการเชื่อมต่อส่วนตัวเท่านั้นที่รองรับการกำหนดค่า IP ส่วนตัวและ IP สาธารณะ

อินสแตนซ์ Looker (Google Cloud Core) ที่มีทั้งการเชื่อมต่อ IP ส่วนตัว (การเข้าถึงบริการส่วนตัว) และการเชื่อมต่อ IP สาธารณะจะมี URL สาธารณะ และการรับส่งข้อมูลขาเข้าทั้งหมดจะผ่านการเชื่อมต่อ IP สาธารณะ การรับส่งข้อมูลขาออกจะกำหนดเส้นทางผ่าน VPC ซึ่งสามารถกําหนดค่าให้อนุญาตเฉพาะการรับส่งข้อมูล IP ส่วนตัวได้ดังที่แสดงในรูปที่ 1

Figure1

9f587c14791dd92e.png

การสื่อสารกับ github.com ได้รับการแก้ไขเป็นที่อยู่ IP สาธารณะ จึงเข้าถึงไม่ได้จากอินสแตนซ์ Looker ที่ติดตั้งใช้งานแบบส่วนตัวหรือแบบสาธารณะและส่วนตัว

ในโค้ดแล็บนี้ คุณจะทำการเชื่อมต่อ HTTPS ไปทางใต้กับ GitHub โดยใช้ตัวจัดสรรภาระงานพร็อกซี TCP ภายในและกลุ่มปลายทางเครือข่ายอินเทอร์เน็ต (NEG) ที่เรียกใช้จาก PSA ของ Looker

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

  • ข้อกำหนดเกี่ยวกับเครือข่าย
  • สร้างการเชื่อมต่อกับ GitHub จาก Looker โดยใช้การเชื่อมต่อทดสอบ

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

5348de53f0a78a50.png

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

คุณจะติดตั้งใช้งานตัวจัดสรรภาระงานพร็อกซี TCP ภายในและ NEG ของอินเทอร์เน็ตที่กําหนดค่าด้วยที่อยู่ IP ที่แก้ไขแล้วของ github.com ซึ่งใช้ประโยชน์จาก Cloud NAT สําหรับการส่งออกทางอินเทอร์เน็ตไปยังองค์กร github.com ที่แก้ไขโดย Looker

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

รายละเอียดข้อกำหนดของเครือข่ายมีดังนี้

คอมโพเนนต์

คำอธิบาย

VPC ($vpc_network)

VPC โหมดที่กำหนดเอง

ซับเน็ตของกฎการส่งต่อ

ใช้เพื่อจัดสรรที่อยู่ IP สําหรับตัวจัดสรรภาระงานพร็อกซี TCP ภายในระดับภูมิภาค

ซับเน็ตเฉพาะพร็อกซี

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

NEG อินเทอร์เน็ต

ทรัพยากรที่ใช้เพื่อกำหนดแบ็กเอนด์ภายนอกสำหรับตัวจัดสรรภาระงาน ปลายทางเข้าถึงได้ผ่าน Cloud VPN หรือ Cloud Interconnect เท่านั้น

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

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

Cloud Router

Cloud NAT อาศัยเราเตอร์ระบบคลาวด์ เพื่อความสามารถของ Control Plane แต่ไม่ได้อาศัยเพื่อการจัดการเซสชัน BGP

Cloud NAT

NEG อินเทอร์เน็ตระดับภูมิภาคใช้ประโยชน์จาก Cloud NAT สำหรับการส่งออกอินเทอร์เน็ต

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

c5871e5418d37f13.png

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

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

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

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

เปิดใช้ API

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
vpc_network=[VPC Name]
echo $project
echo $region
echo $vpc-network

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

gcloud services enable compute.googleapis.com

7. ส่วนประกอบของเครือข่าย VPC

เครือข่าย VPC

ข้อกําหนดเบื้องต้นของบทแนะนําคืออินสแตนซ์ Looker ของ PSA ที่มีอยู่ ดังนั้น VPC ที่เชื่อมโยงจึงสร้างขึ้นแล้ว

สร้างเครือข่ายย่อยของกฎการส่งต่อใน Cloud Shell โดยทำดังนี้

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

สร้างซับเน็ตเฉพาะพร็อกซีระดับภูมิภาคใน Cloud Shell โดยทำดังนี้

gcloud compute networks subnets create $region-proxyonly-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=$vpc_network \
  --range=10.10.10.0/24

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

NAT Gateway ดังกล่าวใช้โดยตัวจัดสรรภาระงานพร็อกซี TCP ภายในระดับภูมิภาคสำหรับการส่งออกอินเทอร์เน็ตที่มีตัวเลือกการกําหนดค่า –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB ดังนั้น NATGW เดียวกันจะไม่รองรับการส่งออกอินเทอร์เน็ตของ GCE/GKE ติดตั้งใช้งาน NAT GW เพิ่มเติมด้วย –endpoint-types=ENDPOINT_TYPE_VM สำหรับการส่งออกอินเทอร์เน็ตของ GCE/GKE

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

gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region

สร้างเกตเวย์ Cloud NAT ภายใน Cloud Shell เพื่อเปิดใช้การส่งออกอินเทอร์เน็ตสำหรับตัวจัดสรรภาระงานพร็อกซี TCP โดยทำดังนี้

gcloud compute routers nats create $vpc_network-natgw \
  --router=$vpc_network-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxyonly-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

สำรองที่อยู่ IP ของตัวจัดสรรภาระงาน

ใน Cloud Shell ให้จองที่อยู่ IP ภายในสำหรับตัวจัดสรรภาระงานที่จะใช้เป็นระเบียน DNS A สำหรับ github.com ในภายหลัง

gcloud compute addresses create internet-neg-lb-ip \
  --region=$region \
  --subnet=psa-fr-subnet

ดูที่อยู่ IP ที่สงวนไว้ใน Cloud Shell โดยทำดังนี้

gcloud compute addresses describe internet-neg-lb-ip \
  --region=$region | grep -i address:

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

user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

8. NEG อินเทอร์เน็ต

การกำหนดค่าปลายทางภายนอกที่ NEG อินเทอร์เน็ต: INTERNET_FQDN_PORT หรือ INTERNET_IP_PORT อ้างอิงทำได้ 2 วิธี หากเลือกรูปแบบ INTERNET_IP_PORT (ตัวเลือกที่ 1) ระบบจะใช้ได้เฉพาะที่อยู่ IP สาธารณะที่รับส่งข้อมูลทางอินเทอร์เน็ตได้ หากเลือกรูปแบบ INTERNET_FQDN_PORT (ตัวเลือกที่ 2) ระบบจะแก้ไข FQDN เป็นที่อยู่ IP สาธารณะที่รับส่งข้อมูลทางอินเทอร์เน็ตได้หรือที่อยู่ IP ส่วนตัว ทั้งนี้ขึ้นอยู่กับขอบเขตของปลายทาง ซึ่งอาจเป็นระดับภูมิภาคหรือทั่วโลก

ตัวเลือกที่ 1: ตั้งค่า NEG ของอินเทอร์เน็ตโดยใช้ที่อยู่ IP

NEG ของอินเทอร์เน็ตต้องใช้ที่อยู่ IP ที่แก้ไขแล้วของ Github.com ดังนั้นเพื่อให้ได้ประสิทธิภาพที่ดีที่สุด ให้เปิดเทอร์มินัลในเครื่องแล้วทำการค้นหาและรับที่อยู่ IP ของ github.com

ตัวอย่างจากเทอร์มินัลในเครื่องจะสร้างที่อยู่ IP ที่แก้ไขแล้ว 140.82.113.4

bash-3.2$ dig github.com
; <<>> DiG 9.10.6 <<>> github.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64801
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;github.com.                        IN        A
;; ANSWER SECTION:
github.com.                60        IN        A        140.82.113.4
;; Query time: 409 msec
;; SERVER: ::1#53(::1)
;; WHEN: Thu Sep 26 15:50:45 CDT 2024
;; MSG SIZE  rcvd: 65

สร้าง NEG อินเทอร์เน็ต และตั้งค่า –network-endpoint-type เป็น internet_ip_port

สร้าง NEG อินเทอร์เน็ตที่ใช้สำหรับ github.com ใน Cloud Shell โดยทำดังนี้

gcloud compute network-endpoint-groups create github-internet-neg \
    --network-endpoint-type=INTERNET_IP_PORT \
    --network=$vpc_network \
    --region=$region

ใน Cloud Shell ให้อัปเดต NEG อินเทอร์เน็ต github-internet-neg ด้วยที่อยู่ IP ที่แก้ไขแล้วของ github.com และพอร์ต 443 ดังนี้

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=[your-resolved-ip],port=443" \
    --region=$region

ตัวอย่าง

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=140.82.113.4,port=443" \
    --region=$region

ตัวเลือกที่ 2: ตั้งค่า NEG ทางอินเทอร์เน็ตโดยใช้ FQDN

คุณสร้าง NEG อินเทอร์เน็ตและตั้งค่า –network-endpoint-type เป็น internet_FQDN_port ได้ด้วย

สร้าง NEG อินเทอร์เน็ตที่ใช้สำหรับ github.com ใน Cloud Shell โดยทำดังนี้

gcloud compute network-endpoint-groups create github-internet-neg \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=$vpc_network \
    --region=$region

ใน Cloud Shell ให้อัปเดต NEG อินเทอร์เน็ต github-internet-neg ด้วย FQDN github.com โดยทำดังนี้

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="fqdn=github.com,port=443" \
    --region=$region

9. สร้างบริการ GitHub

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

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

gcloud compute backend-services create psa-backend-svc  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend psa-backend-svc --network-endpoint-group=github-internet-neg --network-endpoint-group-region=$region --region=$region

ใน Cloud Shell ให้สร้างพร็อกซี TCP เป้าหมายเพื่อกำหนดเส้นทางคำขอไปยังบริการแบ็กเอนด์ โดยทำดังนี้

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=psa-backend-svc  \
      --region=$region

สร้างกฎการส่งต่อ (ตัวจัดสรรภาระงานพร็อกซี TCP ภายใน) ในไวยากรณ์ต่อไปนี้

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

gcloud compute forwarding-rules create psa-github-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=$vpc_network \
     --subnet=psa-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=443

10. โซน DNS ของ GitHub

ในส่วนต่อไปนี้ คุณจะต้องสร้างนโยบายการตอบกลับ DNS สําหรับ GitHub.com ด้วยระเบียน A ที่ประกอบด้วยที่อยู่ IP ของตัวจัดสรรภาระงานพร็อกซี TCP ภายใน

หลังจากนั้น การเพียร์ DNS จะแชร์โซน github.com กับ PSA ของ Looker ซึ่งจะอนุญาตให้เชื่อมต่อกับ github ผ่านตัวกระจายโหลดภายในร่วมกับ NEG ของอินเทอร์เน็ตและ Cloud NAT

สร้างโซนนโยบายการตอบกลับใน Cloud Shell โดยทำดังนี้

gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"

ใน Cloud Shell ให้สร้างระเบียน DNS A ที่ประกอบด้วยที่อยู่ IP ของตัวจัดสรรภาระงานพร็อกซี TCP [insert-your-ip-address] ดังนี้

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="[insert-your-ip-address]"

ตัวอย่าง

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="172.16.20.2"

7b41b2f44609e5ed.png

อัปเดตการเพียร์ DNS

ในส่วนนี้ คุณจะใช้ไวยากรณ์ "gcloud services peered-dns-domains create" ซึ่งสร้างโดเมน DNS ที่เพียร์สำหรับการเชื่อมต่อบริการส่วนตัว ซึ่งจะส่งคำขอระเบียนในเนมสเปซที่ระบุซึ่งมาจากเครือข่าย VPC ของผู้ให้บริการไปยังเครือข่าย VPC ของผู้บริโภคเพื่อแก้ไข

ใน Cloud Shell ให้สร้าง peered-dns-domain ที่ Looker จะค้นหา github.com

gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.

11. ทดสอบการเชื่อมต่อกับ GitHub

ในขั้นตอนต่อไปนี้ คุณจะใช้ Looker Console เพื่อสร้างโปรเจ็กต์เพื่อตรวจสอบการเชื่อมต่อ HTTPS กับ github.com

12. สร้างโปรเจ็กต์ใหม่

เปิดใช้โหมดการพัฒนา

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

เปิดใช้โหมดการพัฒนา (ด้านล่างซ้ายของหน้า) เมื่อเลือกแล้ว แบนเนอร์ "คุณอยู่ในโหมดการพัฒนา" จะปรากฏขึ้น

70c9ded749decfbe.png

สร้างโปรเจ็กต์ใหม่

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

พัฒนา → โปรเจ็กต์

e8ae11e0392a776d.png

เลือกโปรเจ็กต์ LookML ใหม่

65a3c2573e97e1e9.png

ระบุชื่อโปรเจ็กต์ เลือกโปรเจ็กต์ว่าง แล้วสร้างโปรเจ็กต์

9185808e001fa540.png

เลือก "กำหนดค่า Git"

42f5e51ce70642ad.png

กำหนดค่า Git

อัปเดต URL ของที่เก็บข้อมูลด้วยรายละเอียด HTTPS ของ GitHub อย่าลืมใส่ .git ต่อท้าย URL แล้วเลือก "ดำเนินการต่อ"

f5c448f6659b8fc1.png

ตัวอย่าง

4065ab1d196589f.png

อัปเดตรายการที่เลือกด้วยชื่อผู้ใช้ GitHub และโทเค็นการเข้าถึงส่วนบุคคล (แบบคลาสสิก) จากนั้นเลือก "ทดสอบ" และ "ตั้งค่าให้เสร็จสมบูรณ์"

1dc44d63c555a9ae.png

เลือกการดำเนินการ Git

b5903668a50a99ca.png

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

51b722e84f2df38c.png

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

8fb7386b739f60be.png

13. ล้างข้อมูล

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

gcloud compute forwarding-rules delete psa-github-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete psa-backend-svc --region=$region -q

gcloud compute routers nats delete $vpc_network-natgw --router=$vpc_network-cloud-router --router-region=$region -q

gcloud compute routers delete $vpc_network-cloud-router --region=$region -q

gcloud compute network-endpoint-groups delete github-internet-neg --region=$region -q

gcloud compute addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute networks subnets delete psa-fr-subnet $region-proxyonly-subnet --region=$region -q

gcloud services peered-dns-domains delete github-com --network=$vpc_network -q

gcloud dns --project=$project response-policies rules delete github --response-policy="github-com" -q

gcloud dns response-policies update github-com --networks= -q

gcloud dns response-policies delete github-com

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

ยินดีด้วย คุณได้กําหนดค่าและตรวจสอบการเชื่อมต่อกับ GitHub โดยใช้ Looker Console เรียบร้อยแล้ว

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

c911c127bffdee57.jpeg

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

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

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