Looker PSA Southbound HTTPS Internet NEG

מידע על Codelab זה
schedule38 דקות
subjectהעדכון האחרון: 2 באפריל 2025
account_circleנכתב על ידי Deepak Michael, Emanuele Mazza

רק מכונות Looker (ליבה של Google Cloud) שמשתמשות בגישה לשירותים פרטיים לחיבור הפרטי שלהן תומכות בהגדרה של כתובת IP פרטית וכתובת IP ציבורית.

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

Figure1

9f587c14791dd92e.png

התקשורת אל github.com מנותבת לכתובת IP ציבורית, ולכן אי אפשר להגיע אליה ממכונת Looker שנפרסה כפרטית או כ'ציבורית וגם פרטית'.

בקודלאב הזה תבצעו חיבור HTTPS דרומה ל-GitHub באמצעות מאזן עומסים פנימי של שרת proxy מסוג TCP וקבוצת נקודות קצה של רשת אינטרנט (NEG) שמופעל מ-Looker PSA.

מה תלמדו

  • דרישות הרשת
  • יצירת קישוריות ל-GitHub מ-Looker באמצעות בדיקת חיבור

מה צריך להכין

5348de53f0a78a50.png

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

c5871e5418d37f13.png

5. הגדרה ודרישות

הגדרת סביבה בקצב אישי

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

הפעלת Cloud Shell

אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.

במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 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"

7b41b2f44609e5ed.png

עדכון קישור 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, עוברים אל:

מפעילים את מצב הפיתוח (בדף הימני התחתון). אחרי הבחירה, יוצג הבאנר 'המצב הנוכחי הוא מצב פיתוח'.

70c9ded749decfbe.png

יצירת פרויקט חדש

במסוף Cloud, עוברים אל:

פיתוח ← פרויקטים

e8ae11e0392a776d.png

בוחרים באפשרות 'פרויקט LookML חדש'.

65a3c2573e97e1e9.png

נותנים שם לפרויקט, בוחרים באפשרות 'פרויקט ריק' ואז לוחצים על 'יצירת פרויקט'.

9185808e001fa540.png

בוחרים באפשרות Configure Git (הגדרת 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

מה השלב הבא?

קריאה נוספת וסרטונים

מסמכי עזר