Looker PSC Southbound HTTPS Internet NEG SMTP

1. מבוא

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

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

איור 1.

145ea4672c3a3b14.png

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

איור 2.

259493afd914f68b.png

מה תלמדו

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

מה צריך להכין

def88091b42bfe4d.png

2. מה תפַתחו

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

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

3. דרישות רשת

בהמשך מפורטות הדרישות לרשת של הבעלים. הצרכן בקודלאב הזה הוא מכונה של Looker PSC.

רכיבים

תיאור

VPC‏ (looker-psc-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 VPN או Cloud Interconnect.

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

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

Cloud Router

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

Cloud NAT

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

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

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

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

הפעלת ממשקי API

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

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

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

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

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

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

ב-Inside 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 ליצירת תעבורת נתונים יוצאת (egress) באינטרנט עם אפשרות התצורה –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, לכן אותו NATGW לא יתמוך ביצירת תעבורת נתונים יוצאת באינטרנט ב-GCE/GKE. פריסת NAT GW נוסף עם -endpoint-types=ENDPOINT_TYPE_VM לתעבורת נתונים יוצאת (egress) באינטרנט של GCE/GKE.

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

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 באינטרנט

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

ב-Cloud Shell, יוצרים 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 לכל המכונות ברשת.

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

יצירת רכיבים של מאזן עומסים

Inside 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 (קובץ מצורף) שרשום ב-selfLink URI, החל בפרויקטים כדי להגדיר את נקודת הקצה של 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, עוברים אל:

שירותי רשת ← Connect לשירות פרטי ← שירותים שפורסמו

b847b5ee22e3582e.png

b9a7d46c8dea4476.png

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

בקטע הבא נסביר איך לשייך את השירות של הבעלים ל-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
  • REGION: האזור שבו מתארחת המכונה של Looker (Google Cloud Core).

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=notifications-pa.googleapis.com,attachment=projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment \
--region=$region

ב-Cloud Shell, מאמתים שהסטטוס של connectionStatus ב-serviceAttachments הוא 'ACCEPTED', ומעדכנים אותו עם INSTANCE_NAME של PSC ב-Looker.

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

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

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

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

2d4684d722d31e4b.png

a7593db722f86642.png

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

בשלבים הבאים תשתמשו ב-Looker Console כדי לאמת קישוריות SMTP על ידי יצירת בדיקת SMTP שלנו.

אימייל בדיקה

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

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

אדמין → פלטפורמה → SMTP → בחירת Send Test Email

aacb31e399cec9b7.png

בהמשך מופיע אימייל הבדיקה שקיבלנו מ-Looker:

ff75669fb6993d58.png

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

מנווטים אל:

התנסות ← פעילות מערכת ← שימוש ב-API ← סוג שאילתת API ← הפעלה

788f6d6d08f5f055.png

פלט לדוגמה:

cebecdf5f2e968d1.png

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

c6ddb0b234b58ed4.png

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

15b45c5c1bc1b09b.png

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

86970bb94247ed62.png

בהמשך מופיע אימייל הבדיקה שקיבלנו מ-Looker:

c925c8917f8078b3.png

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

במדריך הזה, שרת ה-SMTP של Looker משמש לשליחת התראות באימייל דרך ה-FQDN notifications-pa.googleapis.com ו-Cloud NAT שמבצע תעבורת נתונים יוצאת (egress) באינטרנט. כדי להשתמש בשרת 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).
  • Domain_1: <ה-FQDN של שרת ה-SMTP>
  • SERVICE_ATTACHMENT_1: ה-URI תועד בעת תיאור הקובץ המצורף לשירות, smtp-svc-attachment
  • REGION: האזור שבו מתארחת המכונה של 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, מוחקים את רכיבי שיעור ה-Lab

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.

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

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

c911c127bffdee57.jpeg

מה השלב הבא?

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

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

מסמכי עזר