1. מבוא
ב-codelab הזה תלמדו ליצור חיבור דרומה לשירות ה-SMTP של Looker באמצעות מאזן עומסים פנימי של שרת proxy מסוג TCP וקבוצת נקודות קצה של רשת אינטרנט (NEG) עם FQDN notifications-pa.googleapis.com שמופעל מ-Looker PSC כצרכן שירות.
Private Service Connect הוא יכולת של הרשתות ב-Google Cloud שמאפשרת לצרכנים לגשת לשירותים מנוהלים באופן פרטי מתוך רשת ה-VPC שלהם. באופן דומה, היא מאפשרת ליוצרים של שירותים מנוהלים לארח את השירותים האלה ברשתות VPC נפרדות משלהם ולהציע חיבור פרטי לצרכנים שלהם. לדוגמה, כשמשתמשים ב-Private Service Connect כדי לגשת ל-Looker, אתם צרכני השירות ו-Google היא בעלת השירות המנוהל, כפי שמודגש באיור 1.
איור 1.
גישה דרומה, שנקראת גם PSC הפוך, מאפשרת לצרכן ליצור שירות שפורסם כבעלים כדי לאפשר ל-Looker לגשת לנקודות קצה (endpoints) בארגון, ב-VPC, לשירותים מנוהלים ולאינטרנט. אפשר לפרוס חיבורים דרומיים בכל אזור, ללא קשר למיקום שבו Looker PSC פרוס, כפי שמודגש באיור 2.
איור 2.
מה תלמדו
- דרישות הרשת
- יצירת שירות הפקה ב-Private Service Connect
- יצירת נקודת קצה של Private Service Connect ב-Looker
- יצירת קישוריות לשירות ה-SMTP של Looker
מה צריך להכין
- פרויקט ב-Google Cloud עם הרשאות בעלים
- מכונה קיימת של Looker PSC
2. מה תפַתחו
תיצורו רשת ייצור, looker-psc-demo, כדי לפרוס מאזן עומסים פנימי של שרת proxy מסוג TCP ו-NEG באינטרנט שפורסם כשירות דרך Private Service Connect (PSC). אחרי הפרסום, עליכם לבצע את הפעולות הבאות כדי לאמת את הגישה לשירות של הבעלים:
- יצירת נקודת קצה מסוג PSC ב-Looker שמשויכת לקובץ המצורף של שירות ההפקה
- שימוש במסוף Looker כדי ליצור הגדרות אימייל של SMTP
3. דרישות הרשת
בהמשך מפורטות הדרישות הרשתיות לרשת ה-Producer. הצרכן ב-codelab הזה הוא מכונה של Looker PSC.
רכיבים | תיאור |
VPC (looker-psc-demo) | VPC במצב מותאם אישית |
PSC NAT Subnet | חבילות מרשת ה-VPC של הצרכן מתרגמות באמצעות NAT מקור (SNAT), כך שכתובות ה-IP המקוריות שלהן מומרות לכתובות IP מקור מתת-הרשת של NAT ברשת ה-VPC של היצרן. |
תת-רשת של כלל העברה ב-PSC | משמש להקצאת כתובת IP למאזן עומסים פנימי אזורי בשרתי TCP Proxy |
PSC NEG Subnet | משמש להקצאת כתובת 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
5. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן אותו.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות את השם אחרי השלב הזה, והוא יישאר למשך כל תקופת הפרויקט. - לידיעתך, יש ערך שלישי, מספר פרויקט, שמשתמשים בו בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי העזרה.
- בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.
הפעלת Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.
במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:
תהליך ההקצאה והחיבור לסביבת העבודה אמור להימשך רק כמה רגעים. בסיום, אמור להופיע משהו כזה:
המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 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]
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
יצירת שער 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-type ל-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 לכל המכונות ברשת.
ב-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, עוברים אל:
Network Services → Private Service Connect → Published Services
9. יצירת חיבור לנקודת קצה של PSC ב-Looker
בקטע הבא תשייכו את הצירוף של שירותי הבעלים ל-PSC של Looker Core באמצעות הדגלים -psc-service-attachment ב-Cloud Shell לדומיין יחיד.
ב-Cloud Shell, יוצרים את השיוך של psc על ידי עדכון הפרמטרים הבאים בהתאם לסביבה שלכם:
- INSTANCE_NAME: השם של המכונה של Looker (ליבה של Google Cloud).
- DOMAIN_1: notifications-pa.googleapis.com
- SERVICE_ATTACHMENT_1: URI שצולם בתיאור של Service Attachment, smtp-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=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 → פרטים
10. בדיקת הקישוריות ל-SMTP
בשלבים הבאים נעזרים במסוף Looker כדי לאמת את קישוריות ה-SMTP על ידי יצירת בדיקה ודוח של SMTP.
אימייל לבדיקה
Looker שולח אימיילים באמצעות שרת ה-SMTP notifications-pa.googleapis.com שמוגדר כברירת מחדל. במקרה כזה, לא נדרשים שלבים נוספים. אם רוצים להשתמש בשרת SMTP אחר להתראות, אפשר לעיין בקטע 'הגדרת SMTP מותאמת אישית'.
פותחים את מסוף Looker ועוברים אל:
אדמין → פלטפורמה → SMTP → בחירת Send Test Email
בהמשך מופיע אימייל הבדיקה שקיבלנו מ-Looker:
הודעת אימייל על דוח שנוצר
עוברים אל:
'ניתוח' → 'פעילות מערכת' → 'שימוש ב-API' → 'סוג שאילתה של API' → 'הפעלה'
פלט לדוגמה:
כדי לשלוח את התוצאות באימייל, בוחרים בסמל גלגל השיניים.
בוחרים באפשרות 'שליחה', ייפתח חלון חדש.
מזינים את כתובת האימייל ובוחרים באפשרות 'שליחה'.
בהמשך מופיע אימייל הבדיקה שקיבלנו מ-Looker:
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 שצולם בתיאור של Service Attachment, smtp-svc-attachment
- REGION: האזור שבו מתארחת המכונה של Looker (ליבה של Google Cloud).
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
כדי להשתמש בשירות אימייל אחר, בוחרים באפשרות שימוש בהגדרות אימייל מותאמות אישית.
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 שמופעל על ידי Private Service Connect.
יצרתם את התשתית של הבעלים של השירות, למדתם איך ליצור NEG באינטרנט, שירות של בעלים של שירות ונקודת קצה מסוג PSC של Looker שמאפשרות קישוריות לשירות של בעלים של שירות.
Cosmopup חושב שהקורסים של Codelab הם מדהימים!!
מה השלב הבא?
כדאי לעיין בחלק מהקורסים האלה ב-Codelab…
- שימוש ב-Private Service Connect לפרסום ולצריכה של שירותים
- התחברות לשירותים מקומיים דרך Hybrid Networking באמצעות Private Service Connect ומאזן עומסים פנימי של שרת TCP Proxy
- גישה לכל ה-codelabs שפורסמו בנושא Private Service Connect