1. מבוא
Looker (Google Cloud core) מספק הקצאה, הגדרה וניהול פשוטים ויעילים של מופע Looker מתוך מסוף Google Cloud. אפשר לבצע חלק ממשימות הניהול של המופע גם מהמסוף.
יש שלוש הגדרות רשת שזמינות למופעים של Looker (הליבה של Google Cloud):
- ציבורי: חיבור הרשת משתמש בכתובת IP חיצונית שאפשר לגשת אליה באינטרנט.
- פרטי: חיבור הרשת משתמש בכתובת IP פנימית של ענן וירטואלי פרטי (VPC) שמתארחת ב-Google.
- ציבורי ופרטי: חיבור הרשת משתמש גם בכתובת IP ציבורית וגם בכתובת IP פרטית. תעבורה נכנסת תנותב דרך כתובת ה-IP הציבורית, ותעבורה יוצאת תנותב דרך כתובת ה-IP הפרטית.
במדריך הזה תפרסו רשת פרטית מקיפה מקצה לקצה כדי לתמוך בקישוריות של Looker ל-VPC מקומי דרך HA VPN שאפשר לשכפל כדי לעמוד בדרישות שלכם לקישוריות מרובת עננים ומקומית.
Looker (Google Cloud Core) תומך בכתובות IP פרטיות עבור מקרים שעומדים בקריטריונים הבאים:
- מהדורות של מופעים צריכות להיות Enterprise או Embed.
מה תפַתחו
במדריך הזה תבנו פריסה מקיפה של רשת פרטית של Looker ב-VPC עצמאי עם קישוריות היברידית למרובה עננים ולסביבה מקומית.
תגדירו רשת VPC בשם on-prem-vpc כדי לייצג סביבה מקומית. בפריסה שלכם, ה-on-prem-vpc לא יתקיים, ובמקומו ישמש חיבור רשת היברידי למרכז הנתונים המקומי או לספק שירותי הענן.
בהמשך מפורטים השלבים העיקריים של ההדרכה
- יצירת VPC עצמאי באזור us-central1
- הקצאת רשת משנה של כתובות IP לגישה לשירותים פרטיים
- פריסת מופע Looker ב-VPC עצמאי
- יצירת רשת ה-VPC on-prem ורשת היברידית
- פרסום ואימות של טווח כתובות ה-IP של Looker באמצעות BGP
- שילוב של Looker ו-Postgresql ואימות של תקשורת הנתונים
Figure1

מה תלמדו
- איך יוצרים VPC ורשת היברידית משויכת
- איך פורסים את Looker ב-VPC עצמאי
- איך יוצרים רשת VPC מקומית ורישות היברידי משויך
- חיבור של on-prem-vpc ל-analytics-vps באמצעות HA VPN
- איך לפרסם רשתות משנה של Looker באמצעות רישות היברידי
- איך עוקבים אחרי תשתית רשת היברידית
- איך משלבים מסד נתונים של Postgresql עם Looker Cloud Core
מה תצטרכו
- פרויקט ב-Google Cloud
הרשאות IAM
2. לפני שמתחילים
עדכון הפרויקט כדי לתמוך במדריך
במדריך הזה נעשה שימוש ב-$variables כדי לעזור בהטמעה של הגדרות gcloud ב-Cloud Shell.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. הגדרת VPC
יצירת analytics-vpc
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
יצירת on-prem-vpc
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
יצירת תת-רשת של מסד נתונים של Postgresql
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
הגדרת Cloud Router ו-NAT
במדריך הזה נעשה שימוש ב-Cloud NAT להתקנת חבילת תוכנה, כי למכונה הווירטואלית של מסד הנתונים אין כתובת IP חיצונית.
ב-Cloud Shell, יוצרים את Cloud Router.
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
ב-Cloud Shell, יוצרים את שער ה-NAT.
gcloud compute routers nats create on-prem-nat-us-central1 --router=on-prem-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
יצירת מכונת בדיקה של מסד הנתונים
יוצרים מכונת מסד נתונים של postgres שתשמש לבדיקה ולאימות של הקישוריות ל-Looker.
ב-Cloud Shell, יוצרים את המכונה.
gcloud compute instances create postgres-database \
--project=$projectid \
--zone=us-central1-a \
--machine-type=e2-medium \
--subnet=database-subnet-us-central1 \
--no-address \
--image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
יצירת כללים לחומת האש
כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:
- רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
- מאפשר תנועה נכנסת מטווח כתובות ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.
מ-Cloud Shell
gcloud compute firewall-rules create on-prem-ssh \
--network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
4. גישה לשירותים פרטיים
גישה לשירותים פרטיים היא חיבור פרטי בין רשת ה-VPC שלכם לבין רשת בבעלות Google או צד שלישי. Google או הצד השלישי, ישויות שמספקות שירותים, נקראות גם יצרני שירותים. Looker Cloud Core הוא בעלים של שירות מנוהל.
החיבור הפרטי מאפשר למכונות וירטואליות ברשת ה-VPC ולשירותים שאתם ניגשים אליהם לתקשר באופן בלעדי באמצעות כתובות IP פנימיות.
כדי להשתמש בגישה לשירותים פרטיים, צריך להקצות טווח כתובות IP (בלוק CIDR) ברשת ה-VPC, ואז ליצור חיבור פרטי לבעלים של שירות מנוהל.
הקצאת טווח כתובות IP לשירותים
לפני שיוצרים חיבור פרטי, צריך להקצות טווח כתובות IPv4 לשימוש ברשת ה-VPC של בעלים של שירות מנוהל. כך נמנעת התנגשות בין כתובות ה-IP ברשת ה-VPC שלכם לבין כתובות ה-IP ברשת של ספק השירות.
כשמקצים טווח ברשת ה-VPC, אי אפשר להשתמש בטווח הזה ברשתות משנה (טווחים ראשיים ומשניים) ובכתובות יעד של מסלולים סטטיים מותאמים אישית.
אין תמיכה בשימוש בטווחים של כתובות IPv6 עם גישה לשירותים פרטיים.
מפעילים את Service Networking API בפרויקט במסוף Google Cloud. כשמפעילים את ה-API, יכול להיות שיהיה צורך לרענן את דף המסוף כדי לוודא שה-API הופעל.
יצירת הקצאת כתובת IP
כדי לציין טווח כתובות ואורך קידומת (מסכה של רשת משנה), משתמשים בדגלים addresses ו-prefix-length. לדוגמה, כדי להקצות את בלוק ה-CIDR 192.168.0.0/22, מציינים 192.168.0.0 לכתובת ו-22 לאורך הקידומת.
ב-Cloud Shell, יוצרים הקצאת כתובת IP ל-Looker.
gcloud compute addresses create psa-range-looker \
--global \
--purpose=VPC_PEERING \
--addresses=192.168.0.0 \
--prefix-length=22 \
--description="psa range for looker" \
--network=analytics-vpc
ב-Cloud Shell, מאמתים את הקצאת כתובת ה-IP.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
דוגמה:
userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION:
SUBNET:
STATUS: RESERVED
יצירת חיבור פרטי
אחרי שיוצרים טווח מוקצה, אפשר ליצור חיבור פרטי לבעלים של השירות המנוהל, Looker Cloud Core. החיבור הפרטי יוצר קישור בין רשת ה-VPC לרשת של ספק השירות אחרי שמוגדר מופע Looker.
חיבורים פרטיים הם קשר של אחד לאחד בין רשת ה-VPC שלכם לבין בעלים של שירות מנוהל. אם בעלים יחיד של שירות מנוהל מציע כמה שירותים, אתם צריכים רק חיבור פרטי אחד לכל השירותים של הבעלים.
אם אתם מתחברים לכמה בעלים של שירותים מנוהלים, צריך להשתמש בהקצאה ייחודית לכל בעלים של שירות מנוהל. שיטה זו עוזרת לכם לנהל את הגדרות הרשת, כמו מסלולים וכללי חומת אש, עבור כל בעלים של שירות מנוהל.
ב-Cloud Shell, יוצרים חיבור פרטי ורושמים את שם הפעולה.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
דוגמה:
user@cloudshell$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
ב-Cloud Shell, בודקים אם הפעולה הצליחה. מחליפים את OPERATION_NAME בשם שנוצר בשלב הקודם.
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
דוגמה:
user@cloudshell$ gcloud services vpc-peerings operations describe \
--name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
5. יצירת מופע של Looker (Google Cloud Core)
לפני שמתחילים
מפעילים את Looker API בפרויקט במסוף Google Cloud. כשמפעילים את ה-API, יכול להיות שיהיה צורך לרענן את דף המסוף כדי לוודא שה-API הופעל.
מגדירים לקוח OAuth כדי לבצע אימות ולגשת למופע.
בקטע הבא תצטרכו להשתמש במזהה הלקוח ובסוד הלקוח של OAuth כדי ליצור את מופע Looker.
אין צורך במקורות מורשים של JavaScript ובכתובות URI להפניה אוטומטית.

במסוף Cloud, יוצרים מכונה על סמך צילומי המסך שמופיעים כאן.
עוברים אל LOOKER → CREATE AN INSTANCE (יצירת מכונה)
מאכלסים את מזהה הלקוח והסוד של OAuth שנוצרו קודם.



לוחצים על יצירה.
במהלך יצירת המופע, תועברו לדף Instances במסוף. יכול להיות שתצטרכו לרענן את הדף כדי לראות את הסטטוס של המופע החדש. אפשר גם לראות את פעילות יצירת המופע בלחיצה על סמל ההתראות בתפריט של מסוף Google Cloud. בזמן יצירת המופע, סמל ההתראות בתפריט של מסוף Google Cloud יוקף בסמל טעינה.
אחרי שיוצרים את מכונת Looker, נוצרת כתובת URL של המכונה. שימו לב לכתובת ה-URL.

6. עדכון מזהה הלקוח ב-OAuth 2.0
בקטע הבא, תצטרכו לעדכן את מזהה הלקוח ב-OAuth שיצרתם קודם Authorized redirect URI על ידי הוספת /oauth2callback לכתובת ה-URL של המופע.
אחרי שמסיימים, אפשר להשתמש בכתובת ה-URL של המכונה כדי להתחבר לממשק המשתמש של Looker.
במסוף Cloud, עוברים אל APIs & SERVICES → CREDENTIALS.
בוחרים את מזהה הלקוח ב-OAuth 2.0 ומעדכנים את כתובת ה-URL של המופע. דוגמה:

7. אימות הגישה ל-Looker
ב-Cloud Console, עוברים אל Looker ובוחרים את כתובת ה-URL של המכונה שפותחת את ממשק המשתמש של Looker.

אחרי ההפעלה, יוצג דף הנחיתה כמו בצילום המסך שלמטה, שמאשר את הגישה שלכם ל-Looker Cloud Core.

8. קישוריות היברידית
בקטע הבא תיצרו Cloud Router שיאפשר לכם להחליף מסלולים באופן דינמי בין הענן הווירטואלי הפרטי (VPC) לבין הרשת השכנה באמצעות Border Gateway Protocol (BGP).
Cloud Router יכול להגדיר סשן BGP דרך מנהרת Cloud VPN כדי לחבר את הרשתות שלכם. הוא לומד באופן אוטומטי טווחי כתובות IP חדשים של רשתות משנה ומכריז עליהם ברשת העמיתים.
במדריך הזה תפרסו HA VPN בין analytics-vpc לבין on-prem-vpc כדי להדגים קישוריות פרטית ל-Looker.
יצירת שער HA VPN עבור analytics-vpc
כשכל שער נוצר, מוקצות לו באופן אוטומטי שתי כתובות IPv4 חיצוניות, אחת לכל ממשק של השער. חשוב לרשום את כתובות ה-IP האלה כדי להשתמש בהן בהמשך בשלבי ההגדרה.
ב-Cloud Shell, יוצרים שער HA VPN
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
יוצרים שער HA VPN עבור on-prem-vpc
כשכל שער נוצר, מוקצות לו באופן אוטומטי שתי כתובות IPv4 חיצוניות, אחת לכל ממשק של השער. חשוב לרשום את כתובות ה-IP האלה כדי להשתמש בהן בהמשך בשלבי ההגדרה.
ב-Cloud Shell, יוצרים שער HA VPN.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
אימות של יצירת שער HA VPN
במסוף, עוברים אל HYBRID CONNECTIVITY (קישוריות היברידית) ← VPN ← CLOUD VPN GATEWAYS (שערי Cloud VPN).

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

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

אימות של מסלולים שנלמדו ב-analytics-vpc דרך HA VPN
מכיוון שמנהרות ה-HA VPN וסשני ה-BGP נוצרו, המסלולים מ-on-prem-vpc נלמדים מ-analytics-vpc. במסוף, עוברים אל רשת VPC ← רשתות VPC ← analytics-vpc ← מסלולים ← אזור ← us-central1 ← הצגה
בודקים שהרשת analytics-vpc למדה מסלולים ממסד הנתונים של on-prem-vpc, מרשת המשנה database-subnet-us-central1 172.16.10.0/27

אימות לכך שרשת on-prem-vpc לא למדה מסלולים דרך HA VPN
ל-analytics-vpc אין רשת משנה, ולכן Cloud Router לא יפרסם רשתות משנה ל-on-prem-vpc . במסוף, עוברים אל רשת VPC ← רשתות VPC ← on-prem-vpc ← מסלולים ← אזור ← us-central1 ← הצגה

10. פרסום תת-הרשת של Looker ב-on-prem
נתב הענן analytics-cr-us-central1 לא מפרסם אוטומטית את רשת המשנה של Looker Private Service Access (PSA) כי רשת המשנה מוקצית ל-PSA ולא ל-VPC.
תצטרכו ליצור פרסום של מסלול מותאם אישית מ-analytics-cr-central1 עבור רשת המשנה של PSA 192.168.0.0/22 (psa-range-looker), שיפורסם בסביבה המקומית וישמש עומסי עבודה כדי לגשת ל-Looker.
במסוף, עוברים אל HYBRID CONNECTIVITY → CLOUD ROUTERS → analytics-cr-us-central1 ולוחצים על EDIT.
בקטע 'מסלולים שפורסמו', בוחרים באפשרות יצירת מסלולים בהתאמה אישית, מעדכנים את השדות לפי הדוגמה שבהמשך, בוחרים באפשרות סיום ואז לוחצים על שמירה.

11. בדיקה שהרשת הפרטית הווירטואלית (VPC) המקומית למדה את רשת המשנה של Looker
עכשיו לרשת ה-VPC המקומית תהיה גישה לתת-הרשת של PSA ב-Looker, כי היא פורסמה מ-analytics-cr-us-central1 כפרסום ניתוב (route advertisement) מותאם אישית.
במסוף, עוברים אל VPC NETWORK → VPC NETWORKS → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW
בודקים את המסלולים של Looker שפורסמו מ-analytics-vpc:

12. אימות של קישור בין רשתות VPC שכנות (peering)
החיבור בין Looker Cloud Core לבין analytics-vpc מתבצע באמצעות קישור בין רשתות VPC שכנות (peering), שמאפשר החלפה של מסלולים מותאמים אישית שנלמדו באמצעות BGP. במדריך, צריך לפרסם את המסלולים שנלמדו על ידי analytics-vpc ב-Looker. כדי להפעיל את הפונקציונליות הזו, קישור בין רשתות שכנות (peering) ב-VPC דורש עדכון כדי לייצא מסלולים מותאמים אישית.
אימות של נתיבים מיובאים ומיוצאים.
עוברים אל VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com

בצילום המסך שלמטה מפורט ייבוא הניתוח analytics-vpc של psa-range-looker מרשת ה-VPC המנוהלת על ידי Google, servicesnetworking.

בחירה באפשרות EXPORTED ROUTES לא תציג נתיבים שיוצאו לרשת ה-VPC המקושרת כי 1) לא הוגדרו רשתות משנה ב-analytics-vpc 2) לא נבחרה האפשרות Export custom routes

13. עדכון של קישור בין רשתות VPC שכנות (peering)
עוברים אל VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com → EDIT
בוחרים באפשרות ייצוא של נתיבים מותאמים אישית → שמירה.

14. אימות של קישור בין רשתות VPC שכנות (peering)
מאמתים את הנתיבים שיוצאו.
עוברים אל VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com
בחירה באפשרות EXPORTED ROUTES (נתיבים מיוצאים) חושפת שהנתיבים של ה-VPC המקומי (רשת המשנה של מסד הנתונים 172.16.10.0/27) מיוצאים לרשת ה-VPC המקבילה שמארחת את Looker על ידי analytics-vpc.

15. יצירת מסד נתונים של postgres ב-Looker
בקטע הבא תתבצע כניסה באמצעות SSH למכונה הווירטואלית postgres-database באמצעות Cloud Shell.
בתוך Cloud Shell, מבצעים SSH למכונת מסד הנתונים postgres**.**
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
בתוך מערכת ההפעלה, מזהים את כתובת ה-IP (ens4) של מופע מסד הנתונים postgres ורושמים אותה.
ip a
דוגמה:
user@postgres-database:~$ 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
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:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 172.16.10.2/32 metric 100 scope global dynamic ens4
valid_lft 84592sec preferred_lft 84592sec
inet6 fe80::4001:acff:fe10:a02/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 ואת תת-הרשת של Looker גישה פרטית ל-Google (192.168.0.0/22) בקובץ pg_hba.conf בקטע IPv4 local connections, כמו בצילום המסך שלמטה:

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 הוא פעיל.
sudo service postgresql status
דוגמה:
בתוך מערכת ההפעלה, מאמתים שהסטטוס של postgresql הוא פעיל.
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 Sat 2023-07-01 23:40:59 UTC; 7s ago
Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 4073 (code=exited, status=0/SUCCESS)
CPU: 2ms
Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
16. יצירת מסד נתונים של postgres
בקטע הבא, תיצרו מסד נתונים של postgres בשם postgres_looker וסכימה בשם looker_schema, שישמשו לאימות של looker לקישוריות מקומית.
בתוך מערכת ההפעלה, מתחברים ל-postgres.
sudo -u postgres psql postgres
בתוך מערכת ההפעלה, יוצרים את מסד הנתונים.
create database postgres_looker;
בתוך מערכת ההפעלה, מציגים את מסד הנתונים.
\l
בתוך מערכת ההפעלה, יוצרים את המשתמש looker עם הסיסמה looker
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
דוגמה:
user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
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 SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit
יוצאים ממערכת ההפעלה וחוזרים אל Cloud Shell.
\q
exit
17. יצירת חומת אש ב-on-prem-vpc
בקטע הבא, יוצרים חומת אש של Ingress עם רישום ביומן שמאפשרת תקשורת של רשת המשנה של Looker עם מופע מסד הנתונים של postgres.
יוצרים את חומת האש on-prem-vpc מ-Cloud Shell.
gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging
18. יצירת DNS פרטי ב-analytics-vpc
למרות ש-Looker נפרס ב-VPC מנוהל של Google, הגישה לשרת ה-DNS הפרטי של analytics-vpc נתמכת באמצעות קישור בין רשתות שכנות (peering) עם Service Networking.
בקטע הבא תיצרו תחום DNS פרטי ב-analytics-vpc, שכולל רשומת A של שם דומיין שמוגדר במלואו (postgres.analytics.com)) וכתובת ה-IP של מופע postgres-database.
מ-Cloud Shell, יוצרים את האזור הפרטי analytics.com.
gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"
מ-Cloud Shell, מזהים את כתובת ה-IP של מופע postgres-database.
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
דוגמה:
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
מ-Cloud Shell, יוצרים את רשומת A ומוסיפים את כתובת ה-IP שזוהתה קודם.
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
דוגמה:
user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2
מ-Cloud Shell, מקשרים בין dns-suffix analytics.com לבין Service Networking, וכך מאפשרים ל-Looker גישה לאזור הפרטי analytics-vpc.
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
19. שילוב Looker עם מסד הנתונים postgres של Postgres
בקטע הבא נשתמש ב-Cloud Console כדי ליצור חיבור למסד נתונים למופע של postgres-database מקומי.
ב-Cloud Console, עוברים אל Looker ובוחרים את כתובת ה-URL של המכונה שפותחת את ממשק המשתמש של Looker.

אחרי ההשקה, יוצג לכם דף הנחיתה כמו בצילום המסך שלמטה.

עוברים אל ADMIN → DATABASE → CONNECTIONS → בוחרים באפשרות ADD CONNECTION (הוספת חיבור).
ממלאים את פרטי החיבור לפי צילום המסך שלמטה ולוחצים על CONNECT (חיבור).

החיבור הצליח

20. אימות החיבור ל-Looker
בקטע הבא נסביר איך לוודא שיש קישוריות בין Looker לבין מסד הנתונים postgres ב-VPC המקומי באמצעות הפעולה 'test' של Looker ו-TCPDUMP.
אם הסשן הסתיים בגלל חוסר פעילות, מתחברים למסד הנתונים postgres מ-Cloud Shell.
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
ממערכת ההפעלה, יוצרים מסנן TCPDUMP עם רשת המשנה psa-range-looker 192.168.0.0/22
sudo tcpdump -i any net 192.168.0.0/22 -nn
עוברים אל Data Connection (חיבור נתונים) ADMIN (ניהול) → DATABASE (מסד נתונים) → CONNECTIONS (חיבורים) → Select (בחירה) → Test (בדיקה)
אחרי שבוחרים באפשרות Test (בדיקה), Looker מתחבר בהצלחה למסד הנתונים של postgres, כמו שמוצג בהמשך:

חוזרים למסוף של מערכת ההפעלה ומוודאים שהכלי TCPDUMP זיהה שהכלי psc-range-looker מתחבר למופע של מסד הנתונים postgres-database המקומי.
הוספת הערה שלפיה כל כתובת IP מטווח ה-PSA תוצג מ-Looker
user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4 In IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4 Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0
21. המלצות בנושא אבטחה
יש כמה המלצות ושיטות מומלצות לאבטחה שקשורות לאבטחת Looker ומסד הנתונים של Postgres. למשל:
- הגדרת הרשאות מינימליות לחשבון מסד הנתונים ב-Looker, שעדיין מאפשרות לו לבצע את הפונקציות הנדרשות.
- הנתונים בזמן המעבר בין הלקוח לממשק המשתמש של Looker ובין Looker למסד הנתונים מוצפנים באמצעות TLS 1.2 ומעלה.
- נתונים באחסון מוצפנים כברירת מחדל, והלקוחות יכולים גם להשתמש ב-CMEK עבור מופעי Looker ( https://cloud.google.com/looker/docs/looker-core-cmek) ועבור Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek).
- בקרת גישה ב-Looker – אדמינים ב-Looker יכולים לקבוע מה גורם מרכזי או קבוצת משתמשים יכולים לראות ולעשות ב-Looker, על ידי הענקת גישה לתוכן, גישה לנתונים וגישה לפיצ'רים. האפשרויות האלה מאפשרות לאדמין ב-Looker להגדיר תפקידים ספציפיים שכוללים מודל וקבוצת הרשאות, וליצור בקרת גישה לנתונים ברמת גרנולריות גבוהה.
- Looker תומך ביומני ביקורת וביומני גישה לנתונים שמתעדים מי עשה מה, מתי ואיפה. יומני הביקורת מופעלים כברירת מחדל, אבל צריך להפעיל באופן מפורש את יומני הגישה לנתונים.
- נכון לעכשיו, VPC-SC תומך במכונות Enterprise ובמכונות Embed שמוגדרות עם כתובת IP פרטית בלבד
22. הסרת המשאבים
מוחקים את המכונה של Looker Cloud Core. עוברים אל:
LOOKER → looker-tutorial → DELETE

ב-Cloud Shell, מוחקים את רכיבי ההדרכה.
gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete postgres-database --zone=us-central1-a --quiet
gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet
gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
gcloud dns managed-zones delete gcp-private-zone
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute addresses delete psa-range-looker --global --quiet
gcloud compute networks delete analytics-vpc --quiet
23. מזל טוב
הצלחתם להגדיר ולאמת את הקישוריות של Looker דרך רשת היברידית, וכך לאפשר תקשורת נתונים בסביבות מקומיות ובסביבות מרובות עננים.
בנוסף, הצלחת לבדוק את הקישוריות של Looker Cloud Core למסד הנתונים postgres באמצעות כלי הבדיקה של Looker Connect ו-TCPDUMP במופע של מסד הנתונים postgres.
Cosmopup חושב שסרטוני הדרכה הם מדהימים!!

קריאה נוספת וסרטונים
- אנחנו שמחים להציג את הדור הבא של Looker
- רוצים לעבור ל-GCP? קודם כל: רשתות VPC
- ניתוב דינמי באמצעות Cloud Router