1. מבוא
רק מכונות Looker (ליבה של Google Cloud) שמשתמשות בגישה לשירותים פרטיים לחיבור הפרטי שלהן תומכות בהגדרה של כתובת IP פרטית וכתובת IP ציבורית.
למכונה של Looker (ליבה של Google Cloud) שיש לה גם חיבור IP פרטי (גישה לשירותים פרטיים) וגם חיבור IP ציבורי יש כתובת URL ציבורית, וכל התנועה הנכנסת תעבור דרך החיבור ל-IP הציבורי. תעבורת הנתונים היוצאת מנותבת דרך VPC, שאפשר להגדיר אותו כך שיאפשר רק תעבורת נתונים של כתובות IP פרטיות, כפי שמתואר באיור 1.
Figure1
התקשורת אל github.com מנותבת לכתובת IP ציבורית, ולכן אי אפשר להגיע אליה ממכונת Looker שנפרסה כפרטית או כ'ציבורית וגם פרטית'.
בקודלאב הזה תבצעו חיבור HTTPS דרומה ל-GitHub באמצעות מאזן עומסים פנימי של שרת proxy מסוג TCP וקבוצת נקודות קצה של רשת אינטרנט (NEG) שמופעל מ-Looker PSA.
מה תלמדו
- דרישות הרשת
- יצירת קישוריות ל-GitHub מ-Looker באמצעות בדיקת חיבור
מה צריך להכין
- פרויקט ב-Google Cloud עם הרשאות בעלים
- חשבון ומאגר ב-GitHub
- אסימון גישה אישי ל-GitHub (קלאסי)
- מכונה קיימת של Looker PSA עם הרשאות גישה 'גלוי לכולם' ו'פרטי' או 'פרטי' בלבד
2. מה תפַתחו
תפרסו מאזן עומסים פנימי מסוג שרת proxy של TCP ו-NEG באינטרנט שמוגדרים עם כתובת ה-IP שהוגדרה של github.com, שמשתמש ב-Cloud NAT לתעבורת נתונים יוצאת (egress) באינטרנט לארגונים של github.com שהוגדרו על ידי Looker.
3. דרישות הרשת
בהמשך מפורטות הדרישות לרשת:
רכיבים | תיאור |
VPC ($vpc_network) | VPC במצב מותאם אישית |
רשת משנה של כלל העברה | משמש להקצאת כתובת IP למאזן עומסים פנימי אזורי בשרתי TCP Proxy |
תת-רשת ל-Proxy בלבד | לכל אחד משרתי ה-proxy של מאזן העומסים מוקצית כתובת IP פנימית. לחבילות שנשלחות משרת proxy למכונה וירטואלית בקצה העורפי או לנקודת קצה יש כתובת IP של מקור מרשת המשנה של שרת ה-proxy בלבד. |
NEG באינטרנט | משאב המשמש להגדרת קצה עורפי חיצוני למאזן העומסים. אי אפשר לגשת לנקודת הקצה רק דרך Cloud VPN או Cloud Interconnect. |
שירות לקצה העורפי | שירות לקצה העורפי משמש כגשר בין מאזן העומסים לבין המשאבים בקצה העורפי. במדריך, שירות הקצה העורפי משויך ל-NEG של האינטרנט. |
Cloud Router | Cloud NAT מסתמך על נתבי Cloud ליכולות של מישור הבקרה, אבל לא לניהול סשנים של BGP. |
Cloud NAT | ה-NEG האזורי לאינטרנט משתמש ב-Cloud NAT לתעבורת נתונים יוצאת באינטרנט. |
4. טופולוגיית ה-Codelab
5. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן אותו.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות את השם אחרי השלב הזה, והוא יישאר למשך כל פרק הזמן של הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שמשתמשים בו בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.
הפעלת Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.
במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:
ההקצאה והחיבור לסביבת העבודה אמורים להימשך רק כמה רגעים. בסיום, אמור להופיע משהו כזה:
המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-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
התנאי המקדים לשימוש במדריך הוא מכונה קיימת של 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 Gateway משמש את מאזן העומסים הפנימי של שרת ה-TCP Proxy האזורי ליציאה לאינטרנט עם אפשרות התצורה –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, לכן אותו NATGW לא יתמוך ביציאה לאינטרנט ב-GCE/GKE. פורסים NAT GW נוסף עם –endpoint-types=ENDPOINT_TYPE_VM ליציאה (egress) לאינטרנט ב-GCE/GKE.
יוצרים את Cloud Router ב-Cloud Shell:
gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region
ב-Cloud Shell, יוצרים את שער Cloud NAT שמאפשר תעבורת נתונים יוצאת (egress) לאינטרנט למאזן העומסים בשרתי ה-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 של DNS עבור 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 NEG: INTERNET_FQDN_PORT או INTERNET_IP_PORT. אם בוחרים בפורמט INTERNET_IP_PORT (אפשרות 1), אפשר להשתמש רק בכתובת IP ציבורית שניתנת לניתוב באינטרנט. אם בוחרים בפורמט INTERNET_FQDN_PORT (אפשרות 2), אפשר לפתור את ה-FQDN לכתובת IP ציבורית שניתנת לניתוב באינטרנט או לכתובת IP פרטית, בהתאם להיקף של נקודת הקצה: אזורית או גלובלית.
אפשרות 1: הגדרת NEG באינטרנט באמצעות כתובת IP
כדי לקבל את הביצועים הטובים ביותר, פותחים טרמינל מקומי ומבצעים את הפקודה 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.
ב-Cloud Shell, יוצרים 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, יוצרים 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 peering ישתף את האזור 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 של מאזן העומסים של שרת ה-proxy מסוג 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 בין רשתות שכנות (peering)
בקטע הזה נשתמש בתחביר "gcloud services peered-dns-domains create", שיוצר דומיין DNS מקביל לחיבור שירות פרטי. החיבור הזה שולח בקשות לרשומות במרחב שמות נתון שמקורן ברשת ה-VPC של הבעלים של השירות, לרשת ה-VPC של הצרכן לצורך פתרון.
יוצרים ב-Cloud Shell דומיין peered-dns ש-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, עוברים אל:
מפעילים את מצב הפיתוח (בדף הימני התחתון). אחרי הבחירה, יוצג הבאנר 'המצב הנוכחי הוא מצב פיתוח'.
יצירת פרויקט חדש
במסוף Cloud, עוברים אל:
פיתוח ← פרויקטים
בוחרים באפשרות 'פרויקט LookML חדש'.
נותנים שם לפרויקט, בוחרים באפשרות 'פרויקט ריק' ואז לוחצים על 'יצירת פרויקט'.
בוחרים באפשרות Configure Git (הגדרת Git).
הגדרת Git
מעדכנים את כתובת ה-URL של המאגר עם פרטי ה-HTTPS של GitHub, מוודאים שמוסיפים את הסיומת .git לכתובת ה-URL ובוחרים באפשרות 'המשך'.
דוגמה:
מעדכנים את הבחירה בשם המשתמש ב-GitHub ובאסימון הגישה האישי (בגרסה הקלאסית), ובוחרים באפשרות 'בדיקה' ואז באפשרות 'סיום ההגדרה'.
בחירת פעולות Git
בוחרים באפשרות 'בדיקת החיבור ל-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 Console.
Cosmopup חושב שהקורסים של Codelab הם מדהימים!!