Looker PSC Southbound HTTPS Internet NEG SMTP

1. מבוא

ב-codelab הזה תיצרו חיבור דרומה לשירות ה-SMTP של Looker באמצעות מאזן עומסים פנימי של פרוקסי TCP וקבוצת נקודות קצה ברשת (NEG) באינטרנט עם ה-FQDN notifications-pa.googleapis.com שהופעל מ-Looker PSC כצרכן שירות.

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

Figure 1.

145ea4672c3a3b14.png

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

איור 2.

259493afd914f68b.png

מה תלמדו

  • דרישות רשת
  • יצירת שירות הפקה של Private Service Connect
  • יצירת נקודת קצה של Private Service Connect ב-Looker
  • יצירת קישוריות לשירות ה-SMTP של Looker

מה תצטרכו

def88091b42bfe4d.png

2. מה תפַתחו

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

  • יצירת נקודת קצה של PSC ב-Looker שמשויכת לקובץ המצורף של שירות ההפקה
  • שימוש ב-Looker Console כדי ליצור הגדרות אימייל של SMTP

3. דרישות רשת

בהמשך מפורטות דרישות הרשת עבור רשת היצרן. הצרכן ב-codelab הזה הוא מופע Looker PSC.

רכיבים

תיאור

VPC (looker-psc-demo)

מצב מותאם אישית של VPC

רשת משנה של NAT ב-PSC

מנות מרשת ה-VPC של הצרכן מתורגמות באמצעות NAT של המקור (SNAT), כך שכתובות ה-IP המקוריות שלהן מומרות לכתובות IP של המקור מרשת המשנה של ה-NAT ברשת ה-VPC של היצרן.

תת-רשת של כלל העברה של PSC

משמש להקצאת כתובת IP למאזן עומסים אזורי פנימי מסוג TCP Proxy

PSC NEG Subnet

משמש להקצאת כתובת IP לקבוצת נקודות קצה ברשת

Proxy Only Subnet

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

NEG באינטרנט

משאב שמשמש להגדרת בק-אנד חיצוני למאזן העומסים. אי אפשר להגיע לנקודת הקצה רק דרך Cloud VPN או Cloud Interconnect.

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

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

Cloud Router

‫Cloud NAT מסתמך על Cloud Routers לצורך יכולות של מישור הבקרה, אבל לא לניהול סשנים של BGP.

Cloud NAT

ה-NEG האזורי לאינטרנט משתמש ב-Cloud NAT לתעבורת נתונים יוצאת באינטרנט.

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

a4eb7693cbdbdfd4.png

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

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

מפעילים את Cloud Shell

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

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

הפעלת ממשקי ה-API

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

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region

מפעילים את כל השירותים הנדרשים:

gcloud services enable compute.googleapis.com

7. יצירת רשת VPC של יצרן

רשת VPC

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks create looker-psc-demo --subnet-mode custom

יצירת תת-רשתות

רשת המשנה של PSC תשויך לקובץ המצורף של שירות PSC לצורך תרגום כתובות רשת (NAT).

ב-Cloud Shell, יוצרים את תת-הרשת של PSC NAT:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

ב-Cloud Shell, יוצרים את תת-הרשת של כלל העברת התנועה של היצרן:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

ב-Cloud Shell, יוצרים את תת-הרשת של ה-proxy האזורי של היצרן בלבד:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

יצירת שער NAT ציבורי

מאזן העומסים האזורי בשרתי TCP Proxy פנימיים משתמש ב-NAT Gateway ליציאה לאינטרנט עם אפשרות ההגדרה ‎–endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, ולכן אותו NATGW לא יתמוך ביציאה לאינטרנט של GCE/GKE. פריסת שער NAT נוסף עם ‎–endpoint-types=ENDPOINT_TYPE_VM ליציאה של GCE/GKE לאינטרנט.

ב-Cloud Shell, יוצרים את Cloud Router:

gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region

ב-Cloud Shell, יוצרים את שער Cloud NAT ומאפשרים תעבורת נתונים יוצאת (egress) לאינטרנט עבור מאזן העומסים של שרת ה-TCP Proxy:

gcloud compute routers nats create looker-psc-demo-natgw \
  --router=looker-psc-demo-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

שמירת כתובת ה-IP של מאזן העומסים

ב-Cloud Shell, שומרים כתובת IP פנימית למאזן העומסים:

gcloud compute addresses create internet-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

ב-Cloud Shell, מציגים את כתובת ה-IP השמורה.

gcloud compute addresses describe internet-neg-lb-ip \
  --region=$region | grep -i address:

פלט לדוגמה:

user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

הגדרת NEG באינטרנט

יוצרים Internet NEG ומגדירים את ‎–network-endpoint-type ל-internet-fqdn-port (שם המארח והיציאה שדרכם אפשר להגיע לקצה העורפי החיצוני).

ב-Cloud Shell, יוצרים Internet NEG שמשמש ל-github.com

gcloud compute network-endpoint-groups create smtp-internet-neg \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

ב-Cloud Shell, מעדכנים את ה-NEG של האינטרנט smtp-internet-neg עם ה-FQDN notifications-pa.googleapis.com והיציאה 443.

gcloud compute network-endpoint-groups update smtp-internet-neg \
    --add-endpoint="fqdn=notifications-pa.googleapis.com,port=443" \
    --region=$region

יצירת מדיניות של חומת אש ברשת וכללים לחומת האש

ב-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  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=smtp-internet-neg --network-endpoint-group-region=$region --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-smtp-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=443

יצירת קובץ מצורף לשירות

ב-Cloud Shell, יוצרים את קובץ השירות המצורף, smtp-svc-attachment:

gcloud compute service-attachments create smtp-svc-attachment --region=$region --producer-forwarding-rule=producer-smtp-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/github-svc-attachment-https

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute service-attachments describe smtp-svc-attachment --region=$region

דוגמה:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-10-04T14:56:50.409-07:00'
description: ''
enableProxyProtocol: false
fingerprint: KUPXTZjrGkw=
id: '8947818105173563981'
kind: compute#serviceAttachment
name: smtp-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '23100082169578472'
  low: '8947818105173563981'
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/smtp-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-smtp-fr

ב-Cloud Console, עוברים אל:

שירותי רשת → Private Service Connect → שירותים שפורסמו

b847b5ee22e3582e.png

b9a7d46c8dea4476.png

9. יצירת חיבור של נקודת קצה (endpoint) מסוג PSC ב-Looker

בקטע הבא, תשייכו את קובץ ה-Service Attachment של ספק השירות ל-PSC של Looker Core באמצעות השימוש בדגלים ‎–psc-service-attachment ב-Cloud Shell עבור דומיין יחיד.

ב-Cloud Shell, יוצרים את השיוך של ה-PSC על ידי עדכון הפרמטרים הבאים כך שיתאימו לסביבה שלכם:

  • INSTANCE_NAME: השם של המכונה של Looker (Google Cloud Core)‎.
  • DOMAIN_1: notifications-pa.googleapis.com
  • ‫SERVICE_ATTACHMENT_1: כתובת ה-URI שמתקבלת כשמתארים את Service Attachment, ‏ smtp-svc-attachment
  • אזור: האזור שבו מתארחת המכונה של Looker (Google Cloud Core).

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

דוגמה:

gcloud looker instances update looker-psc-instance \
--psc-service-attachment  domain=notifications-pa.googleapis.com,attachment=projects/$project/regions/$region/serviceAttachments/smtp-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

דוגמה:

{
...........................
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "notifications-pa.googleapis.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-10-04T22:02:31.445761128Z"
}

אימות של נקודת הקצה של PSC ב-Cloud Console

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

ב-Cloud Console, עוברים אל:

‫Looker ‏→ מכונת Looker ‏→ פרטים

2d4684d722d31e4b.png

a7593db722f86642.png

10. בדיקת הקישוריות של SMTP

בשלבים הבאים תשתמשו במסוף Looker כדי לאמת את הקישוריות של SMTP על ידי יצירת דוח ובדיקת SMTP.

אימייל לבדיקה

‫Looker שולח אימייל באמצעות שרת ה-SMTP שמוגדר כברירת מחדל notifications-pa.googleapis.com. במקרה כזה לא צריך לבצע פעולות נוספות. אם רוצים להשתמש בשרת SMTP אחר לשליחת התראות, אפשר לעיין בקטע בנושא הגדרת SMTP בהתאמה אישית.

פותחים את מסוף Looker ועוברים אל:

אדמין ← פלטפורמה ← SMTP ← בחירה באפשרות 'שליחת אימייל לבדיקה'

aacb31e399cec9b7.png

בהמשך מוצגת הודעת האימייל לבדיקה שהתקבלה מ-Looker:

ff75669fb6993d58.png

הודעת אימייל עם דוח שנוצר

עוברים אל:

‫Explore → System Activity → API Usage → API Query Type → Run

788f6d6d08f5f055.png

פלט לדוגמה:

cebecdf5f2e968d1.png

כדי לשלוח את התוצאות לאימייל, לוחצים על סמל גלגל השיניים

c6ddb0b234b58ed4.png

לוחצים על 'שליחה' כדי לפתוח חלון חדש.

15b45c5c1bc1b09b.png

מזינים את כתובת האימייל ולוחצים על 'שליחה'.

86970bb94247ed62.png

בהמשך מוצגת הודעת האימייל לבדיקה שהתקבלה מ-Looker:

c925c8917f8078b3.png

11. הגדרת SMTP בהתאמה אישית

במדריך הזה נעשה שימוש בשרת SMTP של Looker כדי לשלוח התראות באימייל דרך ה-FQDN notifications-pa.googleapis.com, ו-Cloud NAT מבצע יציאה מהאינטרנט. כדי להשתמש בשרת SMTP משלכם, צריך ליצור קובץ מצורף חדש לשירות עם השינויים הבאים:

מעדכנים את ה-NEG באינטרנט עם ה-FQDN של שרת ה-SMTP:

gcloud compute network-endpoint-groups update smtp-internet-neg \
    --add-endpoint="fqdn=<your SMTP FQDN>,port=443" \
    --region=$region

מציינים את דומיין ה-SMTP כשמעדכנים את מופע Looker PSC:

  • INSTANCE_NAME: השם של המכונה של Looker (Google Cloud Core)‎.
  • DOMAIN_1: <your SMTP server FQDN>
  • ‫SERVICE_ATTACHMENT_1: כתובת ה-URI שמתקבלת כשמתארים את Service Attachment, ‏ smtp-svc-attachment
  • אזור: האזור שבו מתארחת המכונה של Looker (Google Cloud Core).
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

כדי להשתמש בשירות אימייל אחר, בוחרים באפשרות שימוש בהגדרות אימייל בהתאמה אישית.

a3fe7a0b66c80402.png

12. הסרת המשאבים

מחיקת רכיבי מעבדה ממסוף Cloud Shell יחיד

gcloud compute service-attachments delete smtp-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-smtp-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 looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q

gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q

gcloud compute network-endpoint-groups delete smtp-internet-neg --region=$region -q

gcloud compute addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q

gcloud compute networks delete looker-psc-demo -q

13. מזל טוב

הגדרתם ואימתתם בהצלחה את הקישוריות לשירות ה-SMTP של Looker באמצעות Looker Console שמבוסס על Private Service Connect.

יצרתם את התשתית של בעל השירות, ולמדתם איך ליצור Internet NEG, שירות של בעל השירות ונקודת קצה של Looker PSC שמאפשרים קישוריות לשירות של בעל השירות.

‫Cosmopup חושב ש-codelabs הם מדהימים!!

c911c127bffdee57.jpeg

מה השלב הבא?

כדאי לעיין ב-Codelabs הבאים…

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

מאמרי עזרה