1. מבוא
ב-Codelab הזה תבוצע חיבור לכיוון דרום למסד נתונים מקומי לאחר תעבורת נתונים יוצאת (postgres) באמצעות H-VPN באמצעות מאזן עומסים פנימי של שרת proxy ל-tcp וקבוצת נקודות קצה לרשת היברידית שהופעלו על ידי Looker PSC כצרכן שירות.
Private Service Connect הוא יכולת של רשתות Google Cloud שמאפשרת לצרכנים לגשת לשירותים מנוהלים באופן פרטי מתוך רשת ה-VPC שלהם. באופן דומה, היא מאפשרת ליוצרים של שירותים מנוהלים לארח את השירותים האלה ברשתות VPC נפרדות משלהם ולהציע חיבור פרטי לצרכנים שלהם. לדוגמה, כשמשתמשים ב-Private Service Connect כדי לגשת ל-Looker, אתם צרכן השירות ו-Google היא בעלת השירות, כפי שמודגש באיור 1.
איור 1.
גישה דרומה, שנקראת גם PSC הפוך, מאפשרת לצרכנים ליצור שירות שפורסם בתור יוצרים, כדי לאפשר ל-Looker לגשת לנקודות קצה (endpoints) בארגון, ב-VPC, לשירותים מנוהלים ולסביבה היברידית. אפשר לפרוס חיבורים דרומיים בכל אזור, ללא קשר למיקום שבו Looker PSC פרוס, כפי שמודגש באיור 2.
איור 2.
מה תלמדו
- דרישות הרשת
- יצירת שירות הפקה ב-Private Service Connect
- יצירת נקודת קצה של Private Service Connect ב-Looker
- יצירת קישוריות למסד הנתונים המקומי של Postgres מ-Looker באמצעות 'חיבור בדיקה'
מה צריך להכין
- פרויקט ב-Google Cloud עם הרשאות בעלים
- מכונה קיימת של Looker PSC
2. מה תפַתחו
יוצרים רשת של Producer, Looker-psc-demo, כדי לפרוס מאזן עומסים פנימי של שרת proxy ל-tcp ו-NEG היברידי שפורסם כשירות באמצעות Private Service Connect (PSC). כדי להדגים מסד נתונים מקומי, תפרסו VPC בשם on-prem-demo שמחובר ל-VPC בשם looker-psc-demo באמצעות HA-VPN.
כדי לאמת את הגישה לשירות Producer, מבצעים את הפעולות הבאות:
- יצירת נקודת קצה (endpoint) של PSC ב-Looker שמשויכת לקובץ המצורף של שירות Producer
- שימוש במסוף Looker כדי לבצע אימות חיבור למסד הנתונים המקומי של Postgres
3. דרישות הרשת
בהמשך מפורטות הדרישות לרשת של הבעלים. הצרכן בקודלאב הזה הוא מכונה של Looker PSC.
רכיבים | תיאור |
VPC (looker-psc-demo) | VPC במצב מותאם אישית |
VPC (on-prem-demo) | VPC במצב מותאם אישית |
רשת משנה של PSC NAT | חבילות מרשת ה-VPC של הצרכן מתרגמות באמצעות NAT מקור (SNAT), כך שכתובות ה-IP המקוריות שלהן מומרות לכתובות IP מקור מתת-הרשת של NAT ברשת ה-VPC של היצרן. |
תת-רשת של כלל העברה ב-PSC | משמש להקצאת כתובת IP למאזן עומסים פנימי אזורי בשרתי TCP Proxy |
רשת משנה של PSC NEG | משמש להקצאת כתובת IP לקבוצת נקודות הקצה ברשת |
רשת משנה של שרת proxy בלבד | לכל אחד משרתי ה-proxy של מאזן העומסים מוקצית כתובת IP פנימית. למנות שנשלחות משרת proxy למכונה וירטואלית או לנקודת קצה עורפית יש כתובת IP של המקור מרשת המשנה לשרת proxy בלבד. |
NEG היברידי | הטיפול בשירותי ענן בארגון ובשירותי ענן אחרים דומה לכל קצה עורפי אחר של Cloud Load Balancing. ההבדל העיקרי הוא שבמקרה הזה משתמשים ב-NEG של קישוריות היברידית כדי להגדיר את נקודות הקצה של הקצוות העורפיים האלה. נקודות הקצה צריכות להיות שילובים תקינים של כתובת IP:יציאה שמאזן העומסים יכול להגיע אליהם באמצעות מוצרי קישוריות היברידית כמו Cloud VPN או Cloud Interconnect. |
שירות לקצה העורפי | שירות לקצה העורפי משמש כגשר בין מאזן העומסים לבין המשאבים בקצה העורפי. במדריך, השירות לקצה העורפי משויך ל-NEG ההיברידי. |
Cloud Router |
|
HA-VPN | HA VPN בין רשתות VPC של Google Cloud. בטופולוגיה הזו אפשר לחבר שתי רשתות Google Cloud VPC באמצעות שער HA VPN בכל רשת. רשתות ה-VPC יכולות להיות באותו אזור או בכמה אזורים. |
Cloud NAT | משמש את ה-VPC של on-prem-demo לתעבורת נתונים יוצאת (egress) באינטרנט |
4. טופולוגיה של Codelab
5. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן אותו.
- Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך הפרויקט. - לידיעתך, יש ערך שלישי, Project Number, שבו משתמשים בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או ב-API של Cloud. מעבר ב-Codelab הזה לא יעלה הרבה כסף, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הפעלת Cloud Shell
אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.
במסוף Google Cloud, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:
נדרשים רק כמה דקות כדי להקצות את הסביבה ולהתחבר אליה. בסיום, אמור להופיע משהו כזה:
המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את ביצועי הרשת ואת האימות. כל העבודה ב-Codelab הזה יכולה להתבצע בתוך דפדפן. אין צורך להתקין שום דבר.
6. לפני שמתחילים
הפעלת ממשקי API
ב-Inside 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 של Producer
רשת VPC
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute networks create looker-psc-demo --subnet-mode custom
יצירת רשתות משנה
תת-הרשת של PSC תשויך לקובץ המצורף של שירות PSC לצורך תרגום כתובות רשת (NAT).
בתוך Cloud Shell, יוצרים את PSC NAT Subnet:
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
Inside 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
הגדרת ה-NEG המשולב
יוצרים NEG היברידי ומגדירים את –network-endpoint-type לערך NON_GCP_PRIVATE_IP_PORT
ב-Cloud Shell, יוצרים 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:Port של מסד הנתונים המקומי, 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
יצירת מדיניות של חומת אש ברשת וכללי חומת אש
Inside 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 לכל המכונות ברשת.
Inside 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, מוסיפים את הקצה העורפי של 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
בתחביר הבא, יוצרים כלל העברה (מאזן עומסים פנימי של שרת Proxy ל-tcp).
ב-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 (קובץ מצורף) שרשום ב-selfLink URI, החל בפרויקטים כדי להגדיר את נקודת הקצה של PSC ב-Looker.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment
Inside 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, עוברים אל:
Network Services → Private Service Connect → Published Services
9. יצירת חיבור לנקודת קצה של PSC ב-Looker
בקטע הבא יתבצע שיוך של הקובץ המצורף לשירות של המפיקים ל-Looker Core PSC באמצעות הדגלים -psc-service-attachment ב-Cloud Shell לדומיין יחיד.
ב-Cloud Shell, יוצרים את השיוך של psc על ידי עדכון הפרמטרים הבאים בהתאם לסביבה שלכם:
- INSTANCE_NAME: השם של המכונה של Looker (ליבה של Google Cloud).
- Domain_1: onprem.database1.com
- SERVICE_ATTACHMENT_1: URI שצולם כשיצרתם את Service Attachment, onpremdatabase1-svc-attachment
- REGION: האזור שבו מתארחת המכונה של Looker (ליבה של Google Cloud).
Inside 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
ב-Inside Cloud Shell, מוודאים שהסטטוס של חיבור ה-serviceAttachments הוא TRUEED, ומעדכנים אותו עם שם מכונת Looker 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
מ-Cloud Console אפשר לאמת את החיבור של PSC
במסוף Cloud, עוברים אל:
Looker → מכונה של Looker → פרטים
יצירת רשת ה-VPC בארגון
רשת VPC
Inside 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 בארגון להדגמה
במדריך הזה נעשה שימוש ב-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
יוצרים את שער ה-NAT ב-Cloud Shell:
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.
Inside 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 כדי להדגים את הקישוריות של NEG היברידי ל-onprem.database1.com.
יוצרים את ה-HA VPN GW עבור 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 GW עבור הדגמה מקומית
כשיוצרים כל שער, מוקצות לו באופן אוטומטי שתי כתובות IPv4 חיצוניות, אחת לכל ממשק של השער.
ב-Cloud Shell, יוצרים את שער ה-HA VPN:
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-demo\
--region=$region
אימות היצירה של HA VPN GW
באמצעות המסוף, עוברים אל HYBRID CONNECTIVITY ← VPN ← CLOUD VPN GATEWAYS.
יוצרים את Cloud Router עבור looker-psc-demo
יוצרים את Cloud Router ב-Cloud Shell:
gcloud compute routers create looker-psc-demo-cr \
--region=$region \
--network=looker-psc-demo\
--asn=65001
יצירת מנהרות ה-VPN עבור looker-psc-demo
כך יוצרים שתי מנהרות VPN בכל שער HA VPN.
יצירת מנהרת VPN0
Inside Cloud Shell, יוצרים מנהרה0:
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
יצירת מנהרת VPN1
ב-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 להדגמה (דמו) בארגון
כך יוצרים שתי מנהרות VPN בכל שער HA VPN.
יצירת מנהרת VPN0
Inside Cloud Shell, יוצרים מנהרה0:
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
יצירת מנהרת VPN1
ב-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 (VPN) → CLOUD VPN TUNNELS (מנהרות VPN ב-Cloud).
11. הקמת שכנים ל-BGP
יצירת ממשק BGP וקישור בין רשתות שכנות (peering) בשביל 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
Inside 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 וקישור בין רשתות שכנות (peering) עבור 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.
אימות מסלולים שנלמדו ב-looker-psc-demo דרך HA VPN
עכשיו, אחרי שהמנהרות של HA VPN ופגישות ה-BGP הוקמו, ברירת המחדל של Cloud Router היא לפרסם נתיבי תת-רשתות. הצגת המסלולים שנלמדו ב-looker-psc-demo.
במסוף, עוברים אל VPC network → VPC networks → looker-psc-demo → ROUTES → REGION → VIEW.
בודקים ש-looker-psc-demo למדה את תת-הרשת של מסד הנתונים 192.168.10.0/28 מרשת ה-VPC on-prem-demo.
אימות שהמסלולים שנלמדו באמצעות VPC מקומי באמצעות HA VPN
מכיוון שפעולת ברירת המחדל של Cloud Router היא לפרסם את כל רשתות המשנה, רשת המשנה של שרת ה-proxy בלבד מתפרסמת דרך BGP. כשה-NEG היברידי יתקשר עם השרת onprem.database1.com, הוא ישתמש רק ברשת המשנה של שרת ה-proxy ככתובת המקור.
בודקים ש-on-prem-demo למדה את תת-הרשת proxy-only-subnet 10.10.10.0/24 מ-looker-psc-demo.
במסוף, עוברים אל VPC network → VPC networks → on-prem-demo → ROUTES → REGION → VIEW
12. יצירת מסד נתונים של postgres ב-Looker
בקטע הבא תבצעו SSH ב-vm של מסד הנתונים postgres-data באמצעות Cloud Shell.
Inside Cloud Shell, מבצעים SSH למופע של postgres-database**:**
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
בתוך מערכת ההפעלה, מזהים את כתובת ה-IP (ens4) של מכונת 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 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:
בתוך מערכת ההפעלה, יוצאים מפעולות המרה לאחור:
\q
דוגמה:
postgres=# \q
user@postgres-database:~$
בקטע הבא, תוסיפו את כתובת ה-IP של מכונה של מסד נתונים של postgres (192.168.10.4) ואת תת-הרשת של שרת proxy בלבד (10.10.10.0/24) לקובץ pg_hba.conf בקטע של החיבורים המקומיים של 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 כפעיל:
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 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 ו-schema looker_schema שישמש לאימות הצופה בקישוריות מקומית.
בתוך מערכת ההפעלה, מתחברים ל-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-database של Postgres
בקטע הבא תשתמשו ב-Looker Console כדי ליצור חיבור למסד נתונים למכונה המקומית של Postgres-database.
עוברים אל 'אדמין' ← 'מסד נתונים' ← 'חיבורים' ← בוחרים באפשרות הוספת חיבור.
ממלאים את פרטי החיבור לפי צילום המסך שלמטה, לוחצים על התחברות.
החיבור מוגדר עכשיו
15. אימות החיבור ל-Looker
בקטע הבא תלמדו איך לאמת את קישוריות Looker למסד הנתונים postgres-database ב-on-prem-vpc באמצעות הפעולה 'test' ב-Looker ו-TCPDUMP.
ב-Cloud Shell, מתחברים למסד הנתונים postgres-database אם פג התוקף של הסשן.
ב-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 ממערכת ההפעלה עם תת-הרשת 10.10.10.0/24 לשרתי proxy בלבד.
sudo tcpdump -i any net 10.10.10.0/24 -nn
עוברים לקטע 'חיבור נתונים' אדמין ← DATABASE ← CONNECTIONS ← מסד נתונים לאחר מכן ← בדיקה
אחרי שבוחרים באפשרות 'בדיקה', Looker מתחבר למסד הנתונים postgres-database כפי שמתואר בהמשך:
הסרת המשאבים
מחיקת רכיבי מעבדה ממסוף 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.
יצרתם את התשתית של היצרן, למדתם איך ליצור NEG היברידי, Producer Service ונקודת קצה של Looker PSC שאפשרו קישוריות לשירות של Producer.
Cosmopup אומר ש-Codelabs מדהימים!
מה השלב הבא?
כדאי לנסות כמה מ-Codelabs האלה...
- שימוש ב-Private Service Connect כדי לפרסם ולצרוך שירותים
- התחברות לשירותים מקומיים באמצעות Networking היברידי באמצעות Private Service Connect ומאזן עומסים פנימי של TCP Proxy
- גישה לכל ה-codelabs שפורסמו בנושא Private Service Connect