1. מבוא
ב-Codelab הזה תבצעו חיבור SSH דרומה ל-GitHub באמצעות מאזן עומסים פנימי של שרת proxy מסוג TCP וקבוצת נקודות קצה ברשת האינטרנט, שמופעלים מ-Looker PSC כצרכן שירות.
Private Service Connect הוא יכולת של רשת Google Cloud שמאפשרת לצרכנים לגשת לשירותים מנוהלים באופן פרטי מתוך רשת ה-VPC שלהם. באופן דומה, הוא מאפשר ליצרני שירותים מנוהלים לארח את השירותים האלה ברשתות VPC נפרדות משלהם ולהציע חיבור פרטי לצרכנים שלהם. לדוגמה, כשמשתמשים ב-Private Service Connect כדי לגשת ל-Looker, המשתמש הוא צרכן השירות ו-Google היא בעלת השירות המנוהל, כפי שמודגש באיור 1.
Figure 1.

גישה מדרום לצפון, שנקראת גם PSC הפוך, מאפשרת לצרכן ליצור שירות שפורסם בתור יצרן כדי לאפשר ל-Looker גישה לנקודות קצה (endpoints) מקומיות, ב-VPC, לשירותים מנוהלים ולאינטרנט. אפשר לפרוס חיבורים מדרום לצפון בכל אזור, בלי קשר למיקום הפריסה של Looker PSC, כפי שמודגש באיור 2.
איור 2.

מה תלמדו
- דרישות רשת
- יצירת שירות מנוהל של Private Service Connect
- יצירת נקודת קצה של Private Service Connect ב-Looker
- יצירת קישוריות ל-GitHub מ-Looker באמצעות בדיקת חיבור
מה תצטרכו
- פרויקט ב-Google Cloud עם הרשאות בעלים
- חשבון ומאגר ב-GitHub
- SSH Deploy Key משותף בין Looker ל-GitHub
- מופע קיים של Looker PSC

2. מה תפַתחו
תגדירו רשת של יצרן, looker-psc-demo, כדי לפרוס מאזן עומסים של שרת proxy פנימי של TCP ו-NEG באינטרנט שפורסם כשירות באמצעות Private Service Connect (PSC). אחרי הפרסום, תבצעו את הפעולות הבאות כדי לאמת את הגישה לשירות Producer:
- יצירת נקודת קצה של PSC ב-Looker שמשויכת לקובץ המצורף של שירות ההפקה
- משתמשים ב-Looker Console כדי ליצור פרויקט חדש ולבדוק את קישוריות ה-SSH אל GitHub.com באמצעות התהליך Connecting to Git using SSH
3. דרישות רשת
למטה מפורטות דרישות הרשת עבור רשת היצרן. הצרכן בשיעור Codelab הזה הוא מופע Looker PSC.
Producer Network
רכיבים | תיאור |
VPC (looker-psc-demo) | מצב מותאם אישית של VPC |
רשת משנה של NAT ב-PSC | מנות מרשת ה-VPC של הצרכן מתורגמות באמצעות NAT של המקור (SNAT), כך שכתובות ה-IP המקוריות של המקור מומרות לכתובות IP של המקור מרשת המשנה של ה-NAT ברשת ה-VPC של היצרן. |
תת-רשת של כלל העברה של PSC | משמש להקצאת כתובת IP למאזן עומסים אזורי פנימי מסוג TCP Proxy |
תת-רשת של PSC NEG | משמש להקצאת כתובת IP לקבוצת נקודות קצה ברשת |
Proxy Only Subnet | לכל אחד מהפרוקסי של מאזן העומסים מוקצית כתובת IP פנימית. למנות שנשלחות משרת proxy למכונה וירטואלית או לנקודת קצה של קצה עורפי יש כתובת IP של מקור מרשת המשנה של ה-proxy בלבד. |
NEG באינטרנט | משאב שמשמש להגדרת בק-אנד חיצוני למאזן העומסים. אי אפשר להגיע לנקודת הקצה רק דרך Cloud VPN או Cloud Interconnect. |
שירות לקצה העורפי | שירות לקצה העורפי משמש כגשר בין מאזן העומסים לבין משאבי הקצה העורפי. במדריך, שירות הקצה העורפי משויך ל-Internet 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]
echo $project
echo $region
מפעילים את כל השירותים הנדרשים:
gcloud services enable compute.googleapis.com
7. יצירת רשת VPC של ספק
רשת VPC
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute networks create looker-psc-demo --subnet-mode custom
יצירת תת-רשתות
רשת המשנה של PSC תשויך לקובץ המצורף של שירות PSC לצורך תרגום כתובות רשת (NAT).
ב-Cloud Shell, יוצרים את תת-הרשת של PSC NAT:
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
ב-Cloud Shell, יוצרים את תת-הרשת של כלל העברת התנועה של היצרן:
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
ב-Cloud Shell, יוצרים את תת-הרשת של ה-proxy האזורי של היצרן בלבד:
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--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 looker-psc-demo-cloud-router --network looker-psc-demo --region $region
ב-Cloud Shell, יוצרים את שער Cloud NAT ומפעילים תעבורת נתונים יוצאת מהאינטרנט למאזן העומסים של שרת ה-TCP Proxy:
gcloud compute routers nats create looker-psc-demo-natgw \
--router=looker-psc-demo-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
--auto-allocate-nat-external-ips \
--region=$region
שמירת כתובת ה-IP של מאזן העומסים
ב-Cloud Shell, שומרים כתובת IP פנימית למאזן העומסים:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=producer-psc-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
הגדרת NEG באינטרנט
יוצרים קבוצת נקודות קצה ברשת האינטרנט ומגדירים את –network-endpoint-type ל-internet-fqdn-port (שם המארח והיציאה שדרכם אפשר להגיע לבק-אנד החיצוני).
ב-Cloud Shell, יוצרים Internet NEG שמשמש ל-github.com
gcloud compute network-endpoint-groups create github-internet-neg-ssh \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--region=$region
בתוך Cloud Shell, מעדכנים את ה-NEG של האינטרנט github-internet-neg-ssh עם ה-FQDN github.com והיציאה 22.
gcloud compute network-endpoint-groups update github-internet-neg-ssh \
--add-endpoint="fqdn=github.com,port=22" \
--region=$region
יצירת מדיניות חומת אש ברשת וכללים לחומת האש
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy
כלל חומת האש הבא מאפשר תעבורת נתונים מטווח תת-הרשת של PSC NAT לכל המכונות ברשת.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
8. יצירת שירות של ספק
יצירת רכיבים של מאזן עומסים
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute backend-services create producer-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=github-internet-neg-ssh --network-endpoint-group-region=$region --region=$region
ב-Cloud Shell, יוצרים שרת proxy של TCP ליעד כדי לנתב בקשות לשירות הקצה העורפי:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
בתחביר הבא, יוצרים כלל העברה (מאזן עומסים פנימי מסוג TCP Proxy).
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute forwarding-rules create producer-github-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=22
יצירת קובץ מצורף לשירות
ב-Cloud Shell, יוצרים את קובץ השירות, github-svc-attachment-ssh:
gcloud compute service-attachments create github-svc-attachment-ssh --region=$region --producer-forwarding-rule=producer-github-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
לאחר מכן, צריך להשיג את Service Attachment שמופיע ב-URI של selfLink שמתחיל ב-projects ולרשום אותו כדי להגדיר את נקודת הקצה של PSC ב-Looker.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-attachment-ssh
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region
פלט לדוגמה
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '7557641709467614900'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr
ב-Cloud Console, עוברים אל:
שירותי רשת ← Private Service Connect ← שירותים שפורסמו


9. יצירת חיבור לנקודת קצה של PSC ב-Looker
בקטע הבא, תשייכו את קובץ ה-Service Attachment של שירות הבעלים ל-PSC של Looker Core באמצעות השימוש בדגלים –psc-service-attachment ב-Cloud Shell עבור דומיין יחיד.
ב-Cloud Shell, יוצרים את השיוך של ה-PSC על ידי עדכון הפרמטרים הבאים בהתאם לסביבה שלכם:
- INSTANCE_NAME: השם של המכונה של Looker (Google Cloud Core).
- DOMAIN_1: githubssh.com
- SERVICE_ATTACHMENT_1: ה-URI שמתקבל כשמתארים את קובץ ה-Service Attachment, github-svc-attachment-ssh.
- אזור: האזור שבו מתארח מופע Looker (Google Cloud Core).
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
דוגמה:
gcloud looker instances update looker-psc-instance \
--psc-service-attachment domain=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region
ב-Cloud Shell, מוודאים ש-connectionStatus של serviceAttachments הוא ACCEPTED. מעדכנים את הערך עם שם המופע של Looker PSC INSTANCE_NAME.
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
דוגמה:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
דוגמה:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "cosmopup.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.14.18",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo",
"projects/$project/global/networks/looker-shared-vpc"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "githubssh.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-08-31T20:53:04.824018122Z"
}
אימות של נקודת הקצה של PSC ב-Cloud Console
אפשר לאמת את חיבור ה-PSC במסוף Cloud
ב-Cloud Console, עוברים אל:
Looker → מכונת Looker → פרטים


10. בדיקת הקישוריות ל-GitHub
בשלבים הבאים תשתמשו ב-Looker Console כדי ליצור פרויקט לאימות קישוריות SSH ל-GitHub.com על ידי עדכון הדומיין github.com ל-githubssh.com בממשק המשתמש של Looker. הפעולה הזו נדרשת רק לחיבורי SSH ל-GitHub.
11. יצירת פרויקט חדש
הפעלת מצב פיתוח
ב-Looker Console, עוברים אל:
מפעילים את מצב הפיתוח (בפינה הימנית התחתונה של הדף). אחרי הבחירה, מוצג הבאנר 'אתם במצב פיתוח'.

יצירת פרויקט חדש
ב-Cloud Console, עוברים אל:
פיתוח → פרויקטים

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

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

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

הגדרת Git

אחרי שתלחצו על 'המשך', תתבקשו לאמת את כתובת ה-URL של המאגר ואת שירות אירוח Git.

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

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

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

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

12. הסרת המשאבים
מחיקת רכיבי מעבדה ממסוף Cloud Shell יחיד
gcloud compute service-attachments delete github-svc-attachment-ssh --region=$region -q
gcloud compute forwarding-rules delete producer-github-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q
gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q
gcloud compute addresses delete internet-neg-lb-ip --region=$region -q
gcloud compute network-endpoint-groups delete github-internet-neg-ssh --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud compute networks delete looker-psc-demo -q
13. מזל טוב
הגדרתם ואימתתם בהצלחה את הקישוריות ל-GitHub באמצעות Looker Console שמבוסס על Private Service Connect.
יצרתם את התשתית של בעל השירות, ולמדתם איך ליצור Internet NEG, שירות של בעל השירות ונקודת קצה (endpoint) של Looker PSC שמאפשרים קישוריות לשירות של בעל השירות.
Cosmopup חושב ש-codelabs הם מדהימים!!

מה השלב הבא?
כדאי לעיין ב-Codelabs הבאים…
- שימוש ב-Private Service Connect כדי לפרסם ולצרוך שירותים
- התחברות לשירותים בארגון דרך Hybrid Networking באמצעות Private Service Connect ומאזן עומסים (LB) פנימי מסוג TCP Proxy
- גישה לכל ה-codelab שפורסמו בנושא Private Service Connect