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

1. מבוא

ב-Codelab הזה תבוצע חיבור לכיוון דרום למסד נתונים מקומי לאחר תעבורת נתונים יוצאת (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. מה תפַתחו

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

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

HA-VPN

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

Cloud NAT

משמש את ה-VPC של on-prem-demo לתעבורת נתונים יוצאת (egress) באינטרנט

4. טופולוגיה של Codelab

79aeb28b38f237da.png

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

הגדרת סביבה בקצב עצמאי

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

הפעלת Cloud Shell

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 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

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

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 → פרטים

2d4684d722d31e4b.png

993cdaf748f4c030.png

יצירת רשת ה-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.

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

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).

c2fcb340a7614070.png

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.

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 מקומי באמצעות 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 ב-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

צילום המסך שלמטה הוא העדכון שהושלם: 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 ו-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.

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

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

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

עוברים לקטע 'חיבור נתונים' אדמין ← DATABASE ← CONNECTIONS ← מסד נתונים לאחר מכן ← בדיקה

אחרי שבוחרים באפשרות 'בדיקה', 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 היברידי, Producer Service ונקודת קצה של Looker PSC שאפשרו קישוריות לשירות של Producer.

Cosmopup אומר ש-Codelabs מדהימים!

c911c127bffdee57.jpeg

מה השלב הבא?

כדאי לנסות כמה מ-Codelabs האלה...

המשך קריאה סרטונים

מסמכי עזר