Looker PSC NEG דרומה היברידי לאתר מקומי

1. מבוא

בקודלאב הזה תבצעו חיבור דרומה (southbound) למסד נתונים מקומי של postgres דרך H-VPN באמצעות מאזן עומסים פנימי של שרת proxy מסוג TCP וקבוצת נקודות קצה של רשת היברידית, שמופעל מ-Looker PSC בתור צרכן שירות.

Private Service Connect הוא יכולת של הרשתות ב-Google Cloud שמאפשרת לצרכנים לגשת לשירותים מנוהלים באופן פרטי מתוך רשת ה-VPC שלהם. באופן דומה, היא מאפשרת ליוצרים של שירותים מנוהלים לארח את השירותים האלה ברשתות VPC נפרדות משלהם ולהציע חיבור פרטי לצרכנים שלהם. לדוגמה, כשמשתמשים ב-Private Service Connect כדי לגשת ל-Looker, אתם צרכני השירות ו-Google היא בעלת השירות המנוהל, כפי שמודגש באיור 1.

איור 1.

145ea4672c3a3b14.png

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

איור 2.

259493afd914f68b.png

מה תלמדו

  • דרישות הרשת
  • יצירת שירות הפקה ב-Private Service Connect
  • יצירת נקודת קצה של Private Service Connect ב-Looker
  • יצירת קישוריות למסד הנתונים המקומי של Postgres מ-Looker באמצעות בדיקת חיבור

מה צריך להכין

def88091b42bfe4d.png

2. מה תפַתחו

תיצורו רשת ייצור, looker-psc-demo, כדי לפרוס מאזן עומסים פנימי של שרת proxy מסוג TCP ו-NEG היברידי שפורסם כשירות דרך Private Service Connect ‏ (PSC). כדי להדגים מסד נתונים מקומי, תפרסו VPC בשם on-prem-demo שמחובר ל-VPC בשם looker-psc-demo באמצעות HA-VPN.

כדי לאמת את הגישה לשירות ה-Producer, מבצעים את הפעולות הבאות:

  • יצירת נקודת קצה מסוג PSC ב-Looker שמשויכת לקובץ המצורף של שירות ההפקה
  • שימוש במסוף Looker כדי לבצע אימות חיבור למסד הנתונים המקומי של Postgres

3. דרישות הרשת

בהמשך מפורטות הדרישות לרשת של הבעלים. הצרכן בקודלאב הזה הוא מכונה של 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 בלבד

לכל אחד משרתי ה-proxy של מאזן העומסים מוקצית כתובת IP פנימית. לחבילות שנשלחות משרת proxy למכונה וירטואלית בקצה העורפי או לנקודת קצה יש כתובת IP של מקור מהתת-רשת של שרת ה-proxy בלבד.

NEG היברידי

שירותים מקומיים ושירותי ענן אחרים נחשבים כמו כל קצה עורפי אחר של Cloud Load Balancing. ההבדל העיקרי הוא שבמקרה הזה משתמשים ב-NEG של קישוריות היברידית כדי להגדיר את נקודות הקצה של הקצוות העורפיים האלה. נקודות הקצה צריכות להיות שילובים תקינים של כתובת IP:יציאה שמאזן העומסים יכול להגיע אליהם באמצעות מוצרי קישוריות היברידית כמו Cloud VPN או Cloud Interconnect.

שירות לקצה העורפי

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

Cloud Router

  • Cloud NAT מסתמך על נתבי Cloud ליכולות של מישור הבקרה, אבל לא לניהול סשנים של BGP.
  • Cloud Router משמש ל-BGP שהוקם לצורך יצירת HA-VPN בין VPC של psc-looker-demo לבין VPC של on-prem-demo.

HA-VPN

HA VPN בין רשתות VPC של Google Cloud. בתצורה הזו, אפשר לחבר שתי רשתות VPC ב-Google Cloud באמצעות שער HA VPN בכל רשת. רשתות ה-VPC יכולות להיות באותו אזור או במספר אזורים.

Cloud NAT

משמש את ה-VPC של on-prem-demo ליציאה לאינטרנט

4. טופולוגיית ה-Codelab

79aeb28b38f237da.png

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

הפעלת Cloud Shell

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

6. לפני שמתחילים

הפעלת ממשקי API

ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
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 את תת-הרשת של NAT ב-PSC:

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

הגדרת 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, מעדכנים את ה-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, יוצרים בדיקת תקינות (health check) שבודקת את היציאה 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, מוסיפים את הקצה העורפי של 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, יוצרים את Service Attachment‏, 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, עוברים אל:

Network Services‏ → Private Service Connect‏ → Published Services

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. יצירת חיבור לנקודת קצה של PSC ב-Looker

בקטע הבא תשייכו את הצירוף של שירותי הבעלים ל-PSC של Looker Core באמצעות הדגלים ‎-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).

ב-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' ומעדכנים אותו בשם של מכונה של Looker ב-PSC:

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

אפשר לאמת את החיבור ל-PSC דרך מסוף Cloud

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

Looker → מכונה של Looker → פרטים

2d4684d722d31e4b.png

993cdaf748f4c030.png

יצירת רשת ה-VPC בארגון

VPC Network

ב-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

יוצרים את שער ה-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.

ב-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 עבור 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 GW

במסוף, עוברים אל HYBRID CONNECTIVITY (קישוריות היברידית) → VPN (רשתות VPN) → CLOUD VPN GATEWAYS (שערי Cloud VPN).

7f1b504616504866.png

יוצרים את 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

ב-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

יצירת מנהרת 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 של on-prem-demo

תיצרו שתי מנהרות VPN בכל שער HA VPN.

יצירת מנהרת VPN0

ב-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

יצירת מנהרת 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).

c2fcb340a7614070.png

11. יצירת שכנים ב-BGP

יצירת ממשק BGP וקישור בין רשתות שכנות (peering) עבור looker-psc-demo

יוצרים את ממשק ה-BGP ב-Cloud Shell:

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

יוצרים את ממשק ה-BGP ב-Cloud Shell:

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 וקישור בין רשתות שכנות (peering) עבור on-prem-demo

יוצרים את ממשק ה-BGP ב-Cloud Shell:

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

יוצרים את ממשק ה-BGP ב-Cloud Shell:

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.

78ab590317919bf5.png

אימות המסלולים של 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.

c11a11ed8b0491c8.png

אימות של נתיבי ה-VPC של on-prem-demo שנלמדו דרך 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

b0073faed026931f.png

12. יצירת מסד נתונים של postgres ב-Looker

בקטע הבא תבצעו SSH למכונה הווירטואלית של מסד הנתונים של Postgres באמצעות Cloud Shell.

ב-Cloud Shell, מבצעים SSH למכונה של מסד הנתונים של Postgres:‏

 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.

sudo nano /etc/postgresql/15/main/pg_hba.conf

צילום המסך שלמטה הוא העדכון שהושלם: eaff2ed6d27fa7cc.png

בקטע הבא, מסירים את ההערה מ-postgresql.conf כדי להאזין לכל כתובות ה-IP מסוג '*', כפי שמתואר בצילום המסך שבהמשך:

sudo nano /etc/postgresql/15/main/postgresql.conf

לפני:

65e0b1074dc48644.png

אחרי:

14a0d1fa5455e23e.png

מפעילים מחדש את שירות 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 וסכימת 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-database של Postgres

בקטע הבא נעזרים במסוף Looker כדי ליצור חיבור למסד נתונים למכונה של מסד הנתונים postgres בארגון.

עוברים אל אדמין → מסד נתונים → חיבורים → בוחרים באפשרות הוספת חיבור.

ממלאים את פרטי החיבור לפי צילום המסך שבהמשך, ובוחרים באפשרות התחברות.

5900fdf0b698cbfc.png

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

4817157fd3b1277e.png

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

עוברים אל Data Connection (חיבור לנתונים) ADMIN → DATABASE → CONNECTIONS → postgres-database → Test

אחרי שבוחרים באפשרות 'בדיקה', Looker מתחבר למסד הנתונים postgres-database כפי שמתואר בהמשך:

774f9313ece41034.png

הסרת המשאבים

מחיקת רכיבי מעבדה ממסוף 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 היברידי, שירות של בעלים של שירות ונקודת קצה מסוג PSC של Looker שמאפשרים קישוריות לשירות של בעלים של שירות.

Cosmopup חושב שהקורסים של Codelab הם מדהימים!!

c911c127bffdee57.jpeg

מה השלב הבא?

כדאי לעיין בחלק מהקורסים האלה ב-Codelab…

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

מסמכי עזרה