1. מבוא
רק מופעים של Looker (ליבת Google Cloud) שמשתמשים בגישה לשירותים פרטיים לחיבור הפרטי שלהם תומכים בהגדרה של כתובת IP פרטית וכתובת IP ציבורית.
למכונת Looker (Google Cloud core) שיש לה קישור דרך IP פרטי (גישה לשירותים פרטיים) וקישור דרך IP ציבורי יש כתובת URL ציבורית, וכל תעבורת הנתונים הנכנסת תעבור דרך הקישור דרך ה-IP הציבורי. תעבורת נתונים יוצאת מנותבת דרך ה-VPC שלכם, שאפשר להגדיר אותו כך שיאפשר רק תעבורת נתונים של כתובות IP פרטיות, כפי שמוצג באיור 1.
Figure1

התקשורת עם github.com מנותבת לכתובת IP ציבורית, ולכן אי אפשר להגיע אליה ממופע Looker שנפרס כפרטי או כציבורי+פרטי.
ב-codelab הזה תבצעו חיבור HTTPS דרומה ל-GitHub באמצעות מאזן עומסים פנימי של שרת proxy מסוג TCP וקבוצת נקודות קצה ברשת (NEG) באינטרנט, שמופעלים מ-Looker PSA.
מה תלמדו
- דרישות רשת
- יצירת קישוריות ל-GitHub מ-Looker באמצעות בדיקת חיבור
מה תצטרכו
- פרויקט ב-Google Cloud עם הרשאות בעלים
- חשבון ומאגר ב-GitHub
- GitHub Personal Access Token (Classic)
- מופע PSA קיים של Looker עם גישה ציבורית ופרטית או גישה פרטית בלבד

2. מה תפַתחו
תפרסו מאזן עומסים פנימי של פרוקסי TCP ו-NEG באינטרנט שהוגדרו עם כתובת ה-IP של github.com שפוענחה, שממנף את Cloud NAT ליציאה מהאינטרנט לארגונים של github.com שפוענחו על ידי Looker.
3. דרישות רשת
בהמשך מפורטות דרישות הרשת:
רכיבים | תיאור |
VPC ($vpc_network) | מצב מותאם אישית של VPC |
רשת משנה של כלל העברה | משמש להקצאת כתובת IP למאזן עומסים אזורי פנימי מסוג TCP Proxy |
Proxy Only Subnet | לכל אחד מהפרוקסי של מאזן העומסים מוקצית כתובת IP פנימית. למנות שנשלחות משרת proxy למכונה וירטואלית או לנקודת קצה בקצה העורפי יש כתובת IP של מקור מרשת המשנה של ה-proxy בלבד. |
NEG באינטרנט | משאב שמשמש להגדרת בק-אנד חיצוני למאזן העומסים. אי אפשר להגיע לנקודת הקצה רק דרך Cloud VPN או Cloud Interconnect. |
שירות לקצה העורפי | שירות לקצה העורפי משמש כגשר בין מאזן העומסים לבין משאבי הקצה העורפי. במדריך, שירות הקצה העורפי משויך ל-NEG של האינטרנט. |
Cloud Router | Cloud NAT מסתמך על Cloud Routers לצורך יכולות של מישור הבקרה, אבל לא לניהול סשנים של BGP. |
Cloud NAT | ה-NEG האזורי לאינטרנט משתמש ב-Cloud NAT לתעבורת נתונים יוצאת באינטרנט. |
4. טופולוגיית Codelab

5. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



- שם הפרויקט הוא השם המוצג של הפרויקט הזה למשתתפים. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. תמיד אפשר לעדכן את המיקום.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud, והוא קבוע (אי אפשר לשנות אותו אחרי שהוא מוגדר). מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך לדעת מה היא. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל מסומן כ-
PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות כתובת משלכם ולבדוק אם היא זמינה. אי אפשר לשנות את הערך הזה אחרי השלב הזה, והוא יישאר כזה למשך הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. במאמרי העזרה מפורט מידע נוסף על שלושת הערכים האלה.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. השלמת ה-codelab הזה לא תעלה לכם הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים נוספים אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
ב-מסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-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
הדרישה המוקדמת לשימוש במדריך היא מופע PSA Looker קיים, ולכן ה-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, יוצרים את תת-הרשת של ה-proxy האזורי בלבד:
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 משמש את מאזן העומסים האזורי הפנימי של שרת proxy ל-TCP ליציאה לאינטרנט עם אפשרות ההגדרה –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, ולכן אותו NATGW לא יתמוך בתעבורת נתונים יוצאת (egress) לאינטרנט של GCE/GKE. פריסת שער NAT נוסף עם –endpoint-types=ENDPOINT_TYPE_VM לתעבורת נתונים יוצאת של GCE/GKE לאינטרנט.
ב-Cloud Shell, יוצרים את Cloud Router:
gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region
ב-Cloud Shell, יוצרים את שער Cloud NAT ומפעילים יציאה לאינטרנט עבור מאזן העומסים של שרת ה-TCP Proxy:
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 עבור github.com:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=psa-fr-subnet
ב-Cloud Shell, מציגים את כתובת ה-IP השמורה:
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 באינטרנט
יש שתי דרכים להגדיר את נקודת הקצה החיצונית שאליה מתייחס קצה העורף של האינטרנט: INTERNET_FQDN_PORT או INTERNET_IP_PORT. אם בוחרים בפורמט INTERNET_IP_PORT (אפשרות 1), אפשר להשתמש רק בכתובת IP ציבורית שניתן לנתב באינטרנט. אם בוחרים בפורמט INTERNET_FQDN_PORT (אפשרות 2), אפשר לפתור את ה-FQDN לכתובת IP ציבורית שניתן לנתב באינטרנט או לכתובת IP פרטית, בהתאם להיקף נקודת הקצה: אזורית או גלובלית.
אפשרות 1: הגדרה של קבוצת נקודות קצה ברשת האינטרנט באמצעות כתובת 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
יוצרים Internet NEG ומגדירים את –network-endpoint-type ל-internet_ip_port.
בתוך Cloud Shell, יוצרים Internet NEG שמשמש ל-github.com:
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.
בתוך Cloud Shell, יוצרים Internet NEG שמשמש ל-github.com:
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, יוצרים שרת proxy TCP ליעד כדי לנתב בקשות לשירות הקצה העורפי:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=psa-backend-svc \
--region=$region
בתחביר הבא, יוצרים כלל העברה (מאזן עומסים פנימי מסוג TCP Proxy).
ב-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 Proxy.
לאחר מכן, רשתות שכנות (peering) של DNS ישתפו את אזור github.com עם Looker PSA, ויאפשרו קישוריות ל-github דרך מאזן העומסים הפנימי בשילוב עם Internet NEG ו-Cloud NAT.
ב-Cloud Shell, יוצרים את האזור של מדיניות התגובה:
gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"
יוצרים ב-Cloud Shell את רשומת ה-DNS A שכוללת את כתובת ה-IP של מאזן העומסים של שרת ה-TCP Proxy, [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 בין רשתות שכנות (peering)
בקטע הזה, משתמשים בתחביר "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 חדש'.

מזינים שם לפרויקט, בוחרים באפשרות Blank Project (פרויקט ריק) ואז לוחצים על Create Project (יצירת פרויקט).

בוחרים באפשרות Configure Git (הגדרת Git).

הגדרת Git
מעדכנים את כתובת ה-URL של המאגר עם פרטי ה-HTTPS של GitHub, מוסיפים את הסיומת .git לכתובת ה-URL ולוחצים על Continue (המשך).

דוגמה:

מעדכנים את הבחירה עם שם המשתמש שלכם ב-GitHub ועם אסימון גישה אישי (קלאסי), ואז בוחרים באפשרות Test and Finalize Setup (בדיקה וסיום ההגדרה).

בוחרים באפשרות Git Actions

בוחרים באפשרות Test Git Connection (בדיקת חיבור 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.
Cosmopup חושב ש-codelabs הם מדהימים!!
