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 באמצעות מאזן עומסים פנימי של שרת proxy מסוג TCP וקבוצה של נקודות קצה (endpoint) ברשת האינטרנט (NEG) שהופעלה מ-Looker PSA.
מה תלמדו
- דרישות רשת
- יצירת קישוריות ל-GitHub מ-Looker באמצעות בדיקת חיבור
מה תצטרכו
- פרויקט ב-Google Cloud עם הרשאות בעלים
- חשבון ומאגר ב-GitHub
- GitHub Personal Access Token (Classic)
- מופע PSA קיים של Looker עם הפעלה של 'גלוי לכולם + פרטי' או 'פרטי בלבד'

2. מה תפַתחו
תפרסו מאזן עומסים פנימי של TCP Proxy ו-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 | קבוצת נקודות הקצה ברשת האינטרנט ברמה האזורית משתמשת ב-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 ציבורי
מאזן העומסים האזורי בשרתי TCP Proxy פנימיים משתמש ב-NAT Gateway ליציאה לאינטרנט עם אפשרות ההגדרה –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, ולכן אותו NATGW לא יתמוך ביציאה לאינטרנט של GCE/GKE. פריסת שער NAT נוסף עם –endpoint-types=ENDPOINT_TYPE_VM לתעבורת נתונים יוצאת (egress) מ-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 פנימית למאזן העומסים, שתשמש בהמשך כרשומת DNS 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 באינטרנט
יש שתי דרכים להגדיר את נקודת הקצה החיצונית שאליה מתייחס ה-NEG של האינטרנט: INTERNET_FQDN_PORT או INTERNET_IP_PORT. אם בוחרים בפורמט INTERNET_IP_PORT (אפשרות 1), אפשר להשתמש רק בכתובת IP ציבורית שניתן לנתב באינטרנט. אם בוחרים בפורמט INTERNET_FQDN_PORT (אפשרות 2), אפשר לפתור את ה-FQDN לכתובת IP ציבורית שניתן לנתב באינטרנט או לכתובת IP פרטית, בהתאם להיקף נקודת הקצה: אזורית או גלובלית.
אפשרות 1: הגדרה של Internet 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
יוצרים קבוצת נקודות קצה ברשת באינטרנט ומגדירים את הערך של –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
אופציונלי: אפשר ליצור קבוצה של נקודות קצה ברשת האינטרנט ולהגדיר את הערך internet_FQDN_port לפרמטר –network-endpoint-type.
ב-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.
לאחר מכן, שיתוף ה-DNS יאפשר ל-Looker PSA לשתף את אזור github.com, וכך תתאפשר קישוריות ל-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, מוסיפים בסוף כתובת ה-URL את הסיומת .git ולוחצים על Continue (המשך).

דוגמה:

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

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

בוחרים באפשרות Test Git Connection (בדיקת חיבור Git).

אימות של בדיקת החיבור ל-Git

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.
Cosmopup חושב ש-codelabs הם מדהימים!!
