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

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

מה תלמדו
- דרישות רשת
- יצירת שירות הפקה של Private Service Connect
- יצירת נקודת קצה של Private Service Connect ב-Looker
- יצירת קישוריות למסד נתונים של postgres מקומי מ-Looker באמצעות בדיקת חיבור
מה תצטרכו
- פרויקט ב-Google Cloud עם הרשאות בעלים
- מופע קיים של Looker PSC

2. מה תפַתחו
תגדירו רשת של ספק, looker-psc-demo, כדי לפרוס מאזן עומסים פנימי של שרת proxy TCP ו-Hybrid NEG שפורסמו כשירות באמצעות Private Service Connect (PSC). כדי להדגים מסד נתונים מקומי, תפרסו VPC בשם on-prem-demo שמחובר ל-VPC בשם looker-psc-demo באמצעות HA-VPN.
כדי לאמת את הגישה לשירות Producer, תבצעו את הפעולות הבאות:
- יצירת נקודת קצה של PSC ב-Looker שמשויכת לקובץ המצורף של שירות ההפקה
- שימוש במסוף Looker כדי לבצע אימות של חיבור למסד נתונים של postgres מקומי
3. דרישות רשת
בהמשך מפורטות דרישות הרשת עבור רשת המפיק. הצרכן ב-codelab הזה הוא מופע Looker PSC.
רכיבים | תיאור |
VPC (looker-psc-demo) | מצב מותאם אישית של VPC |
VPC (on-prem-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 בלבד. |
Hybrid NEG | שירותים מקומיים ושירותי ענן אחרים נחשבים כמו כל עורף קצה אחר של Cloud Load Balancing. ההבדל העיקרי הוא שמשתמשים ב-NEG עם קישוריות היברידית כדי להגדיר את נקודות הקצה של השרתים העורפיים האלה. נקודות הקצה צריכות להיות שילובים תקפים של כתובת IP ויציאה שמאזן העומסים יכול להגיע אליהם באמצעות מוצרי קישוריות היברידית כמו Cloud VPN או Cloud Interconnect. |
שירות לקצה העורפי | שירות לקצה העורפי משמש כגשר בין מאזן העומסים לבין משאבי הקצה העורפי. במדריך, שירות הקצה העורפי משויך ל-NEG היברידי. |
Cloud Router |
|
HA-VPN | HA VPN בין רשתות Google Cloud VPC. בטופולוגיה הזו, אפשר לחבר שתי רשתות VPC ב-Google Cloud באמצעות שער HA VPN בכל רשת. רשתות ה-VPC יכולות להיות באותו אזור או בכמה אזורים. |
Cloud NAT | משמשת את ה-VPC on-prem-demo ליציאה מהאינטרנט |
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]
zone=[YOUR-ZONE]
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
שמירת כתובת ה-IP של מאזן העומסים
ב-Cloud Shell, שומרים כתובת IP פנימית למאזן העומסים:
gcloud compute addresses create hybrid-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
ב-Cloud Shell, מציגים את כתובת ה-IP השמורה.
gcloud compute addresses describe hybrid-neg-lb-ip \
--region=$region | grep -i address:
פלט לדוגמה:
gcloud compute addresses describe hybrid-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
הגדרת קבוצת נקודות קצה היברידית
יוצרים Hybrid NEG ומגדירים את –network-endpoint-type ל-NON_GCP_PRIVATE_IP_PORT
ב-Cloud Shell, יוצרים Hybrid NEG שמשמש לגישה למסד הנתונים המקומי:
gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
--network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
--network=looker-psc-demo \
--zone=$zone
ב-Cloud Shell, מעדכנים את ה-Hybrid NEG עם כתובת ה-IP והיציאה של מסד הנתונים המקומי, 192.168.10.4 ויציאה 5432, שנוצרו בשלב מאוחר יותר במדריך:
gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
--add-endpoint=ip=192.168.10.4,port=5432 \
--zone=$zone
יצירת בדיקת תקינות אזורית
ב-Cloud Shell, יוצרים בדיקת תקינות שבודקת את יציאת מסד הנתונים המקומי, 5432:
gcloud compute health-checks create tcp on-prem-5432-healthcheck \
--region=$region \
--port=5432
יצירת מדיניות של חומת אש ברשת וכללים לחומת האש
ב-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
כלל חומת האש הבא מאפשר תעבורת נתונים מטווח כתובות ה-NAT של PSC לכל המכונות ברשת.
ב-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 --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region
ב-Cloud Shell, מוסיפים את הבק-אנד של Hybrid NEG לשירות לקצה העורפי:
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --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-hybrid-neg-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=hybrid-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=5432
יצירת קובץ מצורף לשירות
ב-Cloud Shell, יוצרים את קובץ ההגדרות של שירות, onpremdatabase1-svc-attachment:
gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-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/onpremdatabase1-svc-attachment
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region
פלט צפוי לדוגמה:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '2549689544315850024'
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/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-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: onprem.database1.com
- SERVICE_ATTACHMENT_1: URI שנוצר כשיוצרים את קובץ השירות המצורף, onpremdatabase1-svc-attachment
- אזור: האזור שבו מתארח מופע 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=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region
ב-Cloud Shell, מוודאים ש-connectionStatus של serviceAttachments הוא ACCEPTED (התקבל), ומעדכנים את שם מופע ה-PSC של Looker:
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": "looker.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": "onprem.database1.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-09-01T23:15:07.426372901Z"
}
אימות של נקודת הקצה של PSC ב-Cloud Console
אפשר לאמת את חיבור ה-PSC דרך Cloud Console
ב-Cloud Console, עוברים אל:
Looker → מכונה של Looker → פרטים


יצירת רשת VPC מקומית
רשת VPC
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom
יצירת רשת משנה של מסד נתונים ב-Postgresql
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region
ב-Cloud Shell, שומרים כתובת IPv4 פנימית שמשמשת ל-onprem.database1.com, 192.168.10.4:
gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4
יצירת Cloud Router עבור ה-VPC on-prem-demo
במדריך נעשה שימוש ב-Cloud NAT להתקנת חבילת תוכנה, כי למכונה הווירטואלית אין כתובת IP חיצונית.
ב-Cloud Shell, יוצרים את Cloud Router שמשמש עם Cloud NAT ו-HA-VPN:
gcloud compute routers create on-prem-cr \
--region=$region \
--network=on-prem-demo \
--asn=65002
ב-Cloud Shell, יוצרים את שער ה-NAT:
gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region
יצירת מכונת בדיקה של מסד הנתונים
יוצרים מכונת מסד נתונים של postgres שתשמש לבדיקה ולאימות של הקישוריות ל-Looker.
ב-Cloud Shell, יוצרים את המכונה:
gcloud compute instances create postgres-database \
--project=$project \
--zone=$zone \
--machine-type=e2-medium \
--subnet=database-subnet \
--no-address \
--private-network-ip 192.168.10.4 \
--image-family debian-12 \
--image-project debian-cloud \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
יצירת מדיניות של חומת אש ברשת וכללים לחומת האש
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute network-firewall-policies create on-prem-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy
כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:
- רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
- מאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22 --global-firewall-policy
כלל חומת האש הבא מאפשר תעבורת נתונים מטווח תת-הרשת של שרת proxy בלבד לכל המכונות ברשת.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp
10. קישוריות היברידית
בקטע הבא תיצרו Cloud Router שיאפשר לכם להחליף מסלולים באופן דינמי בין הענן הווירטואלי הפרטי (VPC) לבין הרשת השכנה באמצעות Border Gateway Protocol (BGP).
Cloud Router יכול להגדיר סשן BGP דרך מנהרת Cloud VPN כדי לחבר את הרשתות שלכם. הוא לומד באופן אוטומטי טווחי כתובות IP חדשים של רשתות משנה ומכריז עליהם ברשת העמיתים.
בשלבים הבאים תפרסו HA VPN בין ה-VPC looker-psc-demo לבין ה-VPC on-prem-demo כדי להדגים קישוריות של Hybrid NEG ל-onprem.database1.com.
יוצרים שער HA VPN עבור looker-psc-demo
כשכל שער נוצר, מוקצות לו באופן אוטומטי שתי כתובות IPv4 חיצוניות, אחת לכל ממשק של השער.
ב-Cloud Shell, יוצרים שער HA VPN:
gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
--network=looker-psc-demo \
--region=$region
יוצרים שער HA VPN לרשת on-prem-demo
כשכל שער נוצר, מוקצות לו באופן אוטומטי שתי כתובות IPv4 חיצוניות, אחת לכל ממשק של השער.
ב-Cloud Shell, יוצרים שער HA VPN:
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-demo\
--region=$region
אימות של יצירת שער HA VPN
במסוף, עוברים אל HYBRID CONNECTIVITY (קישוריות היברידית) ← VPN ← CLOUD VPN GATEWAYS (שערי Cloud VPN).

יצירת Cloud Router עבור looker-psc-demo
ב-Cloud Shell, יוצרים את Cloud Router:
gcloud compute routers create looker-psc-demo-cr \
--region=$region \
--network=looker-psc-demo\
--asn=65001
יצירת מנהרות VPN עבור looker-psc-demo
תצרו שתי מנהרות VPN בכל שער HA VPN.
יצירת מנהרת VPN tunnel0
ב-Cloud Shell, יוצרים את tunnel0:
gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router looker-psc-demo-cr \
--vpn-gateway looker-psc-demo-vpn-gw \
--interface 0
יצירת מנהרת VPN 1
ב-Cloud Shell, יוצרים את המנהרה tunnel1:
gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router looker-psc-demo-cr \
--vpn-gateway looker-psc-demo-vpn-gw \
--interface 1
יצירת מנהרות VPN עבור on-prem-demo
תצרו שתי מנהרות VPN בכל שער HA VPN.
יצירת מנהרת VPN tunnel0
ב-Cloud Shell, יוצרים את tunnel0:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway looker-psc-demo-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr \
--vpn-gateway on-prem-vpn-gw \
--interface 0
יצירת מנהרת VPN 1
ב-Cloud Shell, יוצרים את המנהרה tunnel1:
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway looker-psc-demo-vpn-gw \
--region $region \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr \
--vpn-gateway on-prem-vpn-gw \
--interface 1
אימות של יצירת מנהרת VPN
במסוף, עוברים אל HYBRID CONNECTIVITY (קישוריות היברידית) ← VPN ← CLOUD VPN TUNNELS (מנהרות Cloud VPN).

11. הגדרת שכנים ב-BGP
יצירת ממשק BGP וקישור בין רשתות שכנות באמצעות BGP עבור looker-psc-demo
ב-Cloud Shell, יוצרים את ממשק ה-BGP:
gcloud compute routers add-interface looker-psc-demo-cr \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel looker-psc-demo-tunnel0 \
--region $region
ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region $region
ב-Cloud Shell, יוצרים את ממשק ה-BGP:
gcloud compute routers add-interface looker-psc-demo-cr \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel looker-psc-demo-tunnel1 \
--region $region
ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region $region
יצירת ממשק BGP וקישור בין רשתות שכנות עבור on-prem-demo
ב-Cloud Shell, יוצרים את ממשק ה-BGP:
gcloud compute routers add-interface on-prem-cr \
--interface-name if-tunnel0-to-looker-psc-demo \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region $region
ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:
gcloud compute routers add-bgp-peer on-prem-cr \
--peer-name bgp-looker-psc-demo-tunnel0 \
--interface if-tunnel1-to-looker-psc-demo \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region $region
ב-Cloud Shell, יוצרים את ממשק ה-BGP:
gcloud compute routers add-interface on-prem-cr \
--interface-name if-tunnel1-to-looker-psc-demo \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region $region
ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:
gcloud compute routers add-bgp-peer on-prem-cr \
--peer-name bgp-looker-psc-demo-tunnel1\
--interface if-tunnel2-to-looker-psc-demo \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region $region
עוברים אל Hybrid CONNECTIVITY → VPN כדי לראות את פרטי מנהרת ה-VPN.

אימות של נתיבים שנלמדו ב-HA VPN ב-looker-psc-demo
עכשיו, אחרי שמנהרות ה-HA VPN והפעלות ה-BGP נוצרו, התנהגות ברירת המחדל של Cloud Router היא לפרסם נתיבי רשתות משנה. צפייה במסלולים שנלמדו ב-looker-psc-demo.
במסוף, עוברים אל רשת VPC → VPC networks → looker-psc-demo → ROUTES → REGION → VIEW
אפשר לראות שהרשת looker-psc-demo למדה על תת-הרשת database-subnet 192.168.10.0/28 מרשת ה-VPC on-prem-demo.

אימות שלמדו נתיבים ברשת ה-VPC on-prem-demo דרך HA VPN
מכיוון שהתנהגות ברירת המחדל של Cloud Router היא לפרסם את כל תת-הרשתות, תת-הרשת של ה-proxy מפורסמת באמצעות BGP. ה-NEG ההיברידי ישתמש ברשת המשנה של ה-Proxy בלבד ככתובת המקור כשהוא מתקשר עם השרת onprem.database1.com.
אפשר לראות שהרשת on-prem-demo למדה את רשת המשנה proxy-only-subnet 10.10.10.0/24 מהרשת looker-psc-demo.
באמצעות המסוף, עוברים אל רשת VPC ← רשתות VPC ← on-prem-demo ← מסלולים ← אזור ← הצגה

12. יצירת מסד נתונים של postgres ב-Looker
בקטע הבא תתבצע כניסה באמצעות SSH למכונה הווירטואלית postgres-database באמצעות Cloud Shell.
בתוך Cloud Shell, מבצעים SSH למכונת מסד הנתונים postgres-database**:**
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
בתוך מערכת ההפעלה, מזהים את כתובת ה-IP (ens4) של מופע מסד הנתונים postgres ורושמים אותה:
ip a
דוגמה:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
link/ether 42:01:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 192.168.10.4/32 metric 100 scope global dynamic ens4
valid_lft 66779sec preferred_lft 66779sec
inet6 fe80::4001:c0ff:fea8:a04/64 scope link
valid_lft forever preferred_lft forever
בתוך מערכת ההפעלה, מתחברים ל-postgresql:
sudo -u postgres psql postgres
בתוך מערכת ההפעלה, מזינים את הסיסמה בהנחיה:
\password postgres
בתוך מערכת ההפעלה, מגדירים את הסיסמה ל-postgres (מזינים את אותה סיסמה פעמיים):
postgres
דוגמה:
user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.
postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:
בתוך מערכת ההפעלה, יוצאים מ-postgres:
\q
דוגמה:
postgres=# \q
user@postgres-database:~$
בקטע הבא, מוסיפים את כתובת ה-IP של מופע מסד הנתונים של postgres (192.168.10.4) ואת תת-הרשת של ה-proxy בלבד (10.10.10.0/24) בקובץ pg_hba.conf בקטע IPv4 local connections (חיבורים מקומיים של IPv4).
sudo nano /etc/postgresql/15/main/pg_hba.conf
צילום המסך שלמטה מציג את העדכון שהושלם: 
בקטע הבא, מבטלים את ההערה של postgresql.conf כדי להאזין לכל כתובות ה-IP של '*' לפי צילום המסך שלמטה:
sudo nano /etc/postgresql/15/main/postgresql.conf
לפני:

אחרי:

בתוך מערכת ההפעלה, מפעילים מחדש את שירות postgresql:
sudo service postgresql restart
בתוך מערכת ההפעלה, מאמתים שהסטטוס של postgresql הוא active:
sudo service postgresql status
דוגמה:
בתוך מערכת ההפעלה, מאמתים שהסטטוס של postgresql הוא active:
user@postgres-database:/$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 20486 (code=exited, status=0/SUCCESS)
CPU: 2ms
Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
13. יצירת מסד נתונים של postgres
בקטע הבא, תיצרו מסד נתונים של postgres בשם postgres_looker וסכימה בשם looker_schema, שישמשו לאימות של looker לקישוריות מקומית.
בתוך מערכת ההפעלה, מתחברים ל-Postgres:
sudo -u postgres psql postgres
בתוך מערכת ההפעלה, יוצרים את מסד הנתונים:
create database postgres_looker;
בתוך מערכת ההפעלה, מציגים את מסד הנתונים:
\l
בתוך מערכת ההפעלה, יוצרים את המשתמש postgres_looker עם הסיסמה postgreslooker:
create user postgres_looker with password 'postgreslooker';
בתוך מערכת ההפעלה, מתחברים למסד הנתונים:
\c postgres_looker;
בתוך מערכת ההפעלה, יוצרים את הסכימה looker-schema ויוצאים להנחיה של Cloud Shell.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Exit from the OS, returning you to cloud shell:
\q
דוגמה:
user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.
postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileges
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
postgres_looker | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
(4 rows)
postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q
14. שילוב Looker עם מסד הנתונים postgres של Postgres
בקטע הבא תשתמשו ב-Looker Console כדי ליצור חיבור למסד נתונים למופע של מסד נתונים postgres מקומי.
עוברים אל ADMIN → DATABASE → CONNECTIONS → (ניהול → מסד נתונים → חיבורים →) בוחרים באפשרות ADD CONNECTION (הוספת חיבור).
ממלאים את פרטי החיבור לפי צילום המסך שלמטה ולוחצים על CONNECT (חיבור).

החיבור מוגדר עכשיו

15. אימות החיבור ל-Looker
בקטע הבא נסביר איך לוודא שיש קישוריות בין Looker לבין מסד הנתונים postgres ב-VPC המקומי באמצעות הפעולה 'test' של Looker ו-TCPDUMP.
אם הסשן הסתיים בגלל חוסר פעילות, מתחברים למסד הנתונים postgres מ-Cloud Shell.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
ממערכת ההפעלה, יוצרים מסנן TCPDUMP עם תת-הרשת של ה-proxy בלבד 10.10.10.0/24
sudo tcpdump -i any net 10.10.10.0/24 -nn
עוברים אל Data Connection (חיבור נתונים) ADMIN (ניהול) → DATABASE (מסד נתונים) → CONNECTIONS (חיבורים) → postgres-database (מסד נתונים של Postgres) → Test (בדיקה)
אחרי שבוחרים באפשרות Test, Looker מתחבר למסד הנתונים של postgres כמו שמוצג בהמשך:

הסרת המשאבים
מחיקה של רכיבי מעבדה ממסוף Cloud Shell יחיד
gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q
gcloud compute forwarding-rules delete producer-hybrid-neg-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 on-prem-nat --router=on-prem-cr --router-region=$region -q
gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q
gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q
gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q
gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q
gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q
gcloud compute instances delete postgres-database --zone=$zone -q
gcloud compute addresses delete on-prem-database1-ip --region=$region -q
gcloud compute networks subnets delete database-subnet --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy --name=on-prem-demo --global-firewall-policy -q
gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q
gcloud compute networks delete on-prem-demo -q
gcloud compute networks delete looker-psc-demo -q
16. מזל טוב
סיימתם להגדיר ולאמת את הקישוריות למסד הנתונים המקומי באמצעות HA-VPN עם Looker Console שמבוסס על Private Service Connect.
יצרתם את התשתית של שירות המקור, ולמדתם איך ליצור Hybrid NEG, שירות מקור ונקודת קצה של Looker PSC שמאפשרים קישוריות לשירות המקור.
Cosmopup חושב ש-codelabs הם מדהימים!!

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