במדריך הזה נסביר איך ליצור נקודת קצה פנימית של HTTP ברשת של ענן וירטואלי פרטי (VPC) שמקבלת אירועים של הודעות Pub/Sub באמצעות Eventarc. מידע נוסף על יעד האירועים הזה זמין במאמר ניתוב אירועים לנקודת קצה פנימית של HTTP ברשת VPC.
אפשר להריץ את הפקודות הבאות באמצעות Google Cloud CLI בטרמינל או ב-Cloud Shell.
מטרות
במדריך הזה תלמדו:
- יוצרים רשת VPC כדי לספק רשת למשאבים ולשירותים מבוססי-ענן. רשת VPC מבודדת באופן לוגי מרשתות אחרות ב- Google Cloud.
- יוצרים רשת משנה. כל רשת VPC מורכבת מטווח אחד או יותר של כתובות IP שנקראות תת-רשתות. תת-רשתות הן משאבים אזוריים, ויש להן טווחי כתובות IP שמשויכים אליהן.
- יוצרים כללי חומת אש ב-VPC כדי לאפשר או לחסום תעבורת נתונים אל מכונות וירטואליות (VM) ברשת ה-VPC או מהן.
- יוצרים קובץ מצורף לרשת שמאפשר לרשת VPC של יצרן ליזום חיבורים לרשת VPC של צרכן.
- יוצרים מכונה וירטואלית ב-Compute Engine ברשת ה-VPC.
- פורסים שרת אינטרנט כשירות לקבלת אירועים במופע של המכונה הווירטואלית.
- יוצרים טריגר Eventarc שמנתב אירועים של Pub/Sub למקלט האירועים במכונה הווירטואלית.
- יוצרים חיבור SSH למכונת ה-VM.
- מפרסמים הודעה בנושא Pub/Sub כדי ליצור אירוע, ומציגים את תוכן האירוע בכלי SSH בדפדפן.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-API של Compute Engine, Eventarc ו-Pub/Sub, אם הם עדיין לא מופעלים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable compute.googleapis.com
eventarc.googleapis.com pubsub.googleapis.com -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-API של Compute Engine, Eventarc ו-Pub/Sub, אם הם עדיין לא מופעלים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable compute.googleapis.com
eventarc.googleapis.com pubsub.googleapis.com - מעדכנים את הרכיבים של Google Cloud CLI:
gcloud components update
- נכנסים באמצעות החשבון:
gcloud auth login
- מגדירים את משתני ההגדרה שבהם נעשה שימוש במדריך הזה להתחלה מהירה:
REGION=us-central1 ZONE=us-central1-a
-
אם אתם יוצרי הפרויקט, מוקצה לכם תפקיד הבעלים הבסיסי (
roles/owner). כברירת מחדל, תפקיד ניהול הזהויות והרשאות הגישה (IAM) הזה כולל את ההרשאות שנדרשות לגישה מלאה לרוב המשאבים Google Cloud, ואפשר לדלג על השלב הזה.אם אתם לא יוצרי הפרויקט, צריך להעניק את ההרשאות הנדרשות בחשבון המשתמש המתאים בפרויקט. לדוגמה, חשבון משתמש יכול להיות חשבון Google (למשתמשי קצה) או חשבון שירות (לאפליקציות ולעומסי עבודה ממוחשבים). מידע נוסף זמין בדף תפקידים והרשאות של יעד האירוע.
ההרשאות הנדרשות
כדי לקבל את ההרשאות שדרושות לביצוע ההפעלה המהירה הזו, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- אדמין ברשת Compute (
roles/compute.networkAdmin) - אדמין אבטחה ב-Compute (
roles/compute.securityAdmin) - אדמין ב-Eventarc (
roles/eventarc.admin) - גישה לצפייה ביומנים (
roles/logging.viewAccessor) - אדמין IAM בפרויקט (
roles/resourcemanager.projectIamAdmin) - Pub/Sub Publisher (
roles/pubsub.publisher) - אדמין בחשבון שירות (
roles/iam.serviceAccountAdmin) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - אדמין Service Usage (
roles/serviceusage.serviceUsageAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- אדמין ברשת Compute (
- אם הפעלתם את סוכן השירות של Cloud Pub/Sub ב-8 באפריל 2021 או לפני כן, כדי לתמוך בבקשות push מאומתות של Pub/Sub, צריך להקצות לסוכן השירות את התפקיד 'יצירת אסימונים בחשבון שירות' (
roles/iam.serviceAccountTokenCreator). אחרת, התפקיד הזה מוענק כברירת מחדל: מחליפים את מה שכתוב בשדות הבאים:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud . אפשר לראות את מספר הפרויקט בדף Welcome במסוף Google Cloud או על ידי הרצת הפקודה הבאה:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
-
יצירת רשת VPC במצב מותאם אישית
רשת VPC היא גרסה וירטואלית של רשת פיזית שמוטמעת בתוך רשת הייצור של Google. הוא מספק קישוריות למכונות הווירטואליות שלכם ב-Compute Engine.
כשיוצרים רשת VPC במצב מותאם אישית, לא נוצרות רשתות משנה באופן אוטומטי. סוג הרשת הזה מאפשר לכם שליטה מלאה ברשתות המשנה ובטווחים של כתובות ה-IP שלה.
gcloud compute networks create NETWORK_NAME \ --subnet-mode=custom \ --bgp-routing-mode=regional \ --mtu=1460
מחליפים את NETWORK_NAME בשם של רשת ה-VPC.
שימו לב לנקודות הבאות:
- לכל רשת חדשה שיוצרים צריך להיות שם ייחודי באותו פרויקט.
- מצב הניתוב
Border Gateway Protocol (BGP) קובע את ההתנהגות של נתבי Cloud ברשת, ויכול להיות
globalאוregional. ערך ברירת המחדל הואregional. - יחידת השידור המקסימלית (MTU) היא גודל החבילה הגדול ביותר ברשת.
אפשר להגדיר את ה-MTU לכל ערך מ-
1300עד8896. ערך ברירת המחדל הוא1460. לפני שמגדירים את ה-MTU לערך גבוה מ-1460, כדאי לעיין במאמר בנושא יחידת שידור מקסימלית.
מידע נוסף זמין במאמר בנושא יצירה וניהול של רשתות VPC.
יצירת רשת משנה עם כתובות IPv4 בלבד
כדי להשתמש ברשת, היא צריכה לכלול לפחות רשת משנה אחת.
כשיוצרים רשת משנה, מגדירים שם, אזור ולפחות טווח כתובות IPv4 ראשי בהתאם לכללים של רשת המשנה. שימו לב: אי אפשר ליצור מופעים באזור שלא הוגדרה בו רשת משנה.
gcloud compute networks subnets create SUBNET_NAME \ --region=$REGION \ --network=NETWORK_NAME \ --range=10.10.10.0/24
מחליפים את SUBNET_NAME בשם של רשת המשנה החדשה.
מידע נוסף זמין במאמר בנושא רשתות משנה.
יצירת כללים לחומת אש ב-VPC
כללי חומת אש ב-VPC מאפשרים לכם לאשר או לחסום תעבורה בין משאבים ברשת VPC על סמך מספר יציאה, תג או פרוטוקול.
כללי חומת אש של VPC מוגדרים ברמת הרשת, והם חלים רק על הרשת שבה הם נוצרו. עם זאת, השם שבוחרים לכלל חייב להיות ייחודי לפרויקט.
יוצרים כלל חומת אש לרשת ה-VPC שמאפשר תעבורת נתונים נכנסת (ingress) מכל כתובת IPv4 (
0.0.0.0/0) לכל מכונה ברשת באמצעות יציאה 22. הכלל הזה לא נדרש למסירת אירועים. עם זאת, לצורך המדריך הזה, צריך ליצור את הכלל כדי שתוכלו להתחבר למכונה הווירטואלית באמצעות SSH ולאשר את מסירת האירוע:gcloud compute firewall-rules create RULE_NAME_ONE \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --direction=INGRESS \ --priority=65534 \ --action=ALLOW \ --source-ranges=0.0.0.0/0 \ --rules=tcp:22
יוצרים כלל חומת אש לרשת VPC שמאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות IP ספציפי לכל מכונה ברשת באמצעות יציאה 80 (כי תפרסו שרת אינטרנט במכונה הווירטואלית שמקשיב ביציאה 80):
gcloud compute firewall-rules create RULE_NAME_TWO \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --direction=INGRESS \ --priority=1000 \ --action=ALLOW \ --source-ranges=10.10.10.0/24 \ --rules=tcp:80
מחליפים את
RULE_NAME_ONEואתRULE_NAME_TWOבשמות ייחודיים לכללי חומת האש.שימו לב: השימוש ב-
--source-rangesהוא אופציונלי, והוא מציין רשימה של בלוקים של כתובות IP שמורשים ליצור חיבורים נכנסים שתואמים לכלל חומת האש למכונות ברשת. במקרה הזה, הטווח תואם לטווח שבו נעשה שימוש ברשת המשנה שיצרתם קודם.מומלץ להשתמש בדגל כדי להחיל את כלל חומת האש באופן ספציפי על התנועה ב-Eventarc. אם לא מציינים את
--source-rangesולא את--source-tags, ערך ברירת המחדל של--source-rangesהוא0.0.0.0/0, כלומר הכלל חל על כל חיבורי IPv4 נכנסים מתוך הרשת או מחוצה לה.
מידע נוסף על שימוש בכללים של חומת האש ב-VPC
יצירת קובץ מצורף לרשת
צירוף רשת הוא משאב שמאפשר לרשת VPC של יצרן ליזום חיבורים לרשת VPC של צרכן דרך ממשק Private Service Connect.
כדי לפרסם אירועים, Eventarc משתמש בחיבור לרשת כדי ליצור חיבור לנקודת קצה פנימית של HTTP שמארחת ברשת VPC.
אתם יכולים ליצור מחבר רשת שיקבל באופן אוטומטי חיבורים מכל ממשק Private Service Connect שמפנה למחבר הרשת. יוצרים את מחבר הרשת באותה רשת ובאותו אזור שמכילים את שירות היעד של HTTP.
gcloud compute network-attachments create ATTACHMENT_NAME \ --region=$REGION \ --subnets=SUBNET_NAME \ --connection-preference=ACCEPT_AUTOMATIC
מחליפים את ATTACHMENT_NAME בשם של רכיב הרשת.
מידע נוסף זמין במאמר בנושא קובצי רשת מצורפים.
יצירת מכונה וירטואלית ברשת משנה ספציפית
מכונה וירטואלית ב-Compute Engine היא מכונה וירטואלית שמארחת בתשתית של Google. המונחים מכונה של Compute Engine (Compute Engine instance), מכונת VM (VM instance) ו-VM הם מילים נרדפות ומשמשים לסירוגין. מכונות וירטואליות כוללות אשכולות של Google Kubernetes Engine (GKE), מכונות עם סביבה גמישה של App Engine ו Google Cloud מוצרים אחרים שנבנו על מכונות וירטואליות של Compute Engine.
יוצרים מכונה וירטואלית ב-Compute Engine ברשת ה-VPC שאליה אפשר לפרוס שירות לקבלת אירועים.
gcloud compute instances create INSTANCE_NAME \ --zone=$ZONE \ --machine-type=e2-medium \ --subnet=SUBNET_NAME
מחליפים את INSTANCE_NAME בשם של המכונה הווירטואלית.
מידע נוסף זמין במאמר יצירה והפעלה של מכונה וירטואלית.
פריסת מקלט אירועים במכונה הווירטואלית
פורסים שרת אינטרנט במכונה הווירטואלית שמקשיב ליציאה 80, ומקבל ומנהל יומן רישום של אירועים.
יוצרים חיבור SSH למופע של מכונה וירטואלית באמצעות הלחצן SSH במסוף Google Cloud כדי להתחבר למכונה הווירטואלית.
אחרי שנוצר חיבור לשרת SSH, משתמשים במסוף SSH בדפדפן כדי להריץ פקודות במכונה הווירטואלית.
בחלון הטרמינל של SSH בתוך הדפדפן, יוצרים קובץ טקסט עם שם הקובץ
server.pyשמכיל את קוד Python הבא:מפעילים את השרת ומשאירים אותו פועל לשלבים הבאים במדריך הזה:
sudo python3 server.py
יצירת טריגר Eventarc
יוצרים טריגר Eventarc שיוצר נושא חדש ב-Pub/Sub ומנתב אירועים אל מקבל האירועים שנפרס במכונה הווירטואלית כשמתפרסמת הודעה בנושא ב-Pub/Sub.
אחרי שמפעילים את Compute Engine API, חשבון השירות שמוגדר כברירת מחדל הוא חשבון השירות של Compute Engine שמוגדר כברירת מחדל (PROJECT_NUMBER-compute@developer.gserviceaccount.com). לצורך בדיקות, הטריגר משתמש בחשבון השירות הזה שמוגדר כברירת מחדל לצורך הזדהות.
gcloud eventarc triggers create TRIGGER_NAME \ --location=$REGION \ --destination-http-endpoint-uri=http://INSTANCE_NAME.$ZONE.c.PROJECT_ID.internal \ --network-attachment="projects/PROJECT_ID/regions/$REGION/networkAttachments/ATTACHMENT_NAME" \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
מחליפים את PROJECT_NUMBER במספר הפרויקט ב- Google Cloud. אפשר לראות את מספר הפרויקט בדף Welcome במסוף Google Cloud או על ידי הרצת הפקודה הבאה:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
מידע נוסף על הגדרת הטריגר זמין במאמר בנושא ניתוב אירועים לנקודת קצה פנימית של HTTP ברשת VPC.
יצירה והצגה של אירוע בנושא Pub/Sub
אפשר ליצור אירוע על ידי פרסום הודעה בנושא Pub/Sub.
מאתרים ומגדירים את נושא ה-Pub/Sub כמשתנה סביבה:
export MY_TOPIC=$(gcloud eventarc triggers describe TRIGGER_NAME \ --location=$REGION \ --format='value(transport.pubsub.topic)')
כדי ליצור אירוע, מפרסמים הודעה בנושא Pub/Sub:
gcloud pubsub topics publish $MY_TOPIC --message "Hello World"
הטריגר של Eventarc מעביר את האירוע לנקודת הקצה הפנימית של HTTP ברשת ה-VPC. בחלון הטרמינל של SSH בתוך הדפדפן, מוצג גוף האירוע. הוא אמור להיראות כך:
Body: { "message": { "data": "SGVsbG8gV29ybGQ=", "messageId": "8795720366614192", "publishTime": "2023-08-26T13:09:48Z" } } 10.10.10.3 - - [26/Aug/2023 13:09:49] "POST / HTTP/1.1" 200 -שימו לב שאם מפענחים את הערך
dataשלSGVsbG8gV29ybGQ=מפורמט Base64, מוחזר הערך Hello World.
הצלחתם לפרוס שירות לקבלת אירועים לנקודת קצה פנימית של HTTP ברשת VPC, ליצור טריגר Eventarc, ליצור אירוע מ-Pub/Sub ולאשר שהאירוע הועבר כמצופה על ידי הטריגר לנקודת היעד.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
מחיקת משאבים בודדים
- מוחקים את הטריגר של Eventarc:
gcloud eventarc triggers delete TRIGGER_NAME --location=$REGION
-
מוחקים את המכונה:
gcloud compute instances delete INSTANCE_NAME
- מוחקים את הקובץ המצורף לרשת:
gcloud compute network-attachments delete ATTACHMENT_NAME --region=$REGION
- מוחקים את הכללים של חומת האש:
gcloud compute firewall-rules delete RULE_NAME_ONE gcloud compute firewall-rules delete RULE_NAME_TWO
- מוחקים את תת-הרשת:
gcloud compute networks subnets delete SUBNET_NAME --region=$REGION
- מחיקת רשת ה-VPC:
gcloud compute networks delete NETWORK_NAME