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

การสื่อสารกับ github.com จะได้รับการแก้ไขเป็นที่อยู่ IP สาธารณะ จึงไม่สามารถเข้าถึงได้จากอินสแตนซ์ Looker ที่ติดตั้งใช้งานเป็นแบบส่วนตัวหรือสาธารณะ + ส่วนตัว
ใน Codelab นี้ คุณจะทำการเชื่อมต่อ HTTPS ขาออกไปยัง GitHub โดยใช้ตัวจัดสรรภาระงานพร็อกซี TCP ภายในและกลุ่มอุปกรณ์ปลายทางของเครือข่ายอินเทอร์เน็ต (NEG) ที่เรียกใช้จาก Looker PSA
สิ่งที่คุณจะได้เรียนรู้
- ข้อกำหนดเกี่ยวกับเครือข่าย
- สร้างการเชื่อมต่อกับ GitHub จาก Looker โดยใช้การทดสอบการเชื่อมต่อ
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud ที่มีสิทธิ์เจ้าของ
- บัญชีและที่เก็บ GitHub
- โทเค็นการเข้าถึงส่วนบุคคลของ GitHub (คลาสสิก)
- อินสแตนซ์ PSA ของ Looker ที่มีอยู่ซึ่งเปิดใช้แบบสาธารณะ + ส่วนตัว หรือส่วนตัวเท่านั้น

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 อาศัยเราเตอร์ระบบคลาวด์ สำหรับความสามารถของระนาบควบคุม แต่ไม่ใช่สำหรับการจัดการเซสชัน BGP |
Cloud NAT | NEG อินเทอร์เน็ตระดับภูมิภาคใช้ Cloud NAT สำหรับการรับส่งข้อมูลอินเทอร์เน็ตขาออก |
4. โทโพโลยี Codelab

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



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

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

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดใน Codelab นี้ได้ภายในเบราว์เซอร์ คุณไม่จำเป็นต้องติดตั้งอะไร
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
สร้าง Public NAT gateway
ตัวจัดสรรภาระงานพร็อกซี TCP ภายในระดับภูมิภาคใช้เกตเวย์ NAT สำหรับการรับส่งข้อมูลอินเทอร์เน็ตขาออกที่มีตัวเลือกการกำหนดค่า –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 ภายในสำหรับตัวจัดสรรภาระงานที่จะใช้ในภายหลังเป็นระเบียน A ของ DNS สำหรับ 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 อินเทอร์เน็ต ทำได้ 2 วิธี ได้แก่ INTERNET_FQDN_PORT หรือ INTERNET_IP_PORT หากเลือกรูปแบบ INTERNET_IP_PORT (ตัวเลือกที่ 1) จะใช้ได้เฉพาะที่อยู่ IP ที่กำหนดเส้นทางได้ในอินเทอร์เน็ตสาธารณะ หากเลือกรูปแบบ INTERNET_FQDN_PORT (ตัวเลือกที่ 2) จะสามารถแก้ไข FQDN เป็นที่อยู่ IP ที่กำหนดเส้นทางได้ในอินเทอร์เน็ตสาธารณะหรือเป็นที่อยู่ IP ส่วนตัวก็ได้ ขึ้นอยู่กับขอบเขตของอุปกรณ์ปลายทาง ไม่ว่าจะเป็นระดับภูมิภาคหรือระดับโลก
ตัวเลือกที่ 1: ตั้งค่า NEG อินเทอร์เน็ตโดยใช้ที่อยู่ IP
NEG อินเทอร์เน็ตต้องใช้ที่อยู่ IP ที่ได้รับการแก้ไขของ Github.com ดังนั้นเพื่อประสิทธิภาพที่ดีที่สุด ให้เปิดเทอร์มินัลในเครื่องแล้วเรียกใช้คำสั่ง dig เพื่อรับที่อยู่ 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 กับ Looker PSA เพื่ออนุญาตการเชื่อมต่อกับ GitHub ผ่านตัวจัดสรรภาระงานภายในร่วมกับ NEG ของอินเทอร์เน็ตและ Cloud NAT
สร้างโซนนโยบายการตอบกลับใน Cloud Shell โดยทำดังนี้
gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"
ใน Cloud Shell ให้สร้างระเบียน A ของ DNS ที่ประกอบด้วยที่อยู่ 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"

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

สร้างโปรเจ็กต์ใหม่
ใน Cloud Console ให้ไปที่
พัฒนา → โปรเจ็กต์

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

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

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

กำหนดค่า Git
อัปเดต URL ของที่เก็บด้วยรายละเอียด GitHub ของ HTTPS ตรวจสอบว่าได้ต่อท้าย URL ด้วย .git แล้ว จากนั้นเลือก "ต่อไป"

ตัวอย่าง

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

เลือก Git Actions

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

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

13. ล้างข้อมูล
จากเทอร์มินัล Cloud Shell เดียว ให้ลบคอมโพเนนต์ของ Lab ดังนี้
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 นั้นยอดเยี่ยม!!
