1. מבוא
Private Service Connect מאפשר לבעלים של שירות מנוהל להציע שירותים באופן פרטי לצרכן שירות. היתרונות של Private Service Connect:
- רשת VPC של בעלים של שירות מנוהל יכולה לתמוך ביותר מצרכן שירות אחד.
- כל צרכן מתחבר לכתובת IP פנימית שהוא מגדיר. Private Service Connect מבצע תרגום כתובות רשת (NAT) כדי לנתב את הבקשה לבעלים של השירות המנוהל.

איור 2. Private Service Connect משתמש בנקודות קצה ובקבצים מצורפים לשירות כדי לאפשר לצרכני שירות לשלוח תנועה מרשת ה-VPC של הצרכן לשירותים ברשת ה-VPC של ספק השירות (אפשר ללחוץ כדי להגדיל).
מה תלמדו
- היתרונות של Private Service Connect
- מושגי מפתח לצרכני שירות
- מושגי מפתח עבור ספקי שירותים
- יצירת סביבת הפקה
- חשיפת שירות (סביבת הפקה) באמצעות קובץ מצורף של שירות
- יצירת סביבה לצרכנים
- יצירת כלל העברה ברשת הצרכן
- אימות הגישה של הצרכן
- הפעלת בקרת גישה למדיניות
- שימוש בכלל חומת אש ליציאה כדי לחסום גישה לכלל העברה לצרכן
מה תצטרכו
- ידע בפריסה של אשכולות ושירותים של GKE
- ידע במאזני עומסים פנימיים
- אפשרות ליצור רשתות VPC בשני פרויקטים
- יכולת ליצור אשכול GKE
2. היתרונות של Private Service Connect
לשימוש ב-PSC יש כמה יתרונות בהשוואה לשימוש בקישור בין רשתות שכנות (peering) של VPC:
שליטה טובה יותר במרחב כתובות ה-IP הפרטיות
- בתור צרכני שירות, אתם יכולים לקבוע את כתובת ה-IP הפרטית שמשמשת לחיבור לשירות המנוהל שאתם רוצים לגשת אליו.
- בתור צרכני שירות, אתם לא צריכים לדאוג להזמנת טווחי כתובות IP פרטיות לשירותי קצה עורפיים שנצרכים ב-VPC שלכם. כדי להתחבר לשירותי ההפקה, צריך לבחור כתובת IP מתת-הרשת שלכם.
- בתור בעלים של שירות מנוהל, אתם יכולים לבחור לפרוס מודל מרובה דיירים, שבו ה-VPC שלכם מכיל שירותים שמשרתים כמה רשתות VPC של צרכנים. הבעיה של צרכנים עם טווחי רשתות משנה חופפים כבר לא קיימת.
- כספקי שירות, אתם יכולים להרחיב את השירות שלכם למספר מכונות וירטואליות שנדרש, בלי שתצטרכו לפנות לצרכן כדי לקבל עוד כתובות IP.
אבטחה ובידוד משופרים
- כצרכני שירות, רק אתם יכולים ליצור קשר עם הבעלים של השירות המנוהל. הקישוריות החד-כיוונית הזו מפשטת מאוד את ההגדרה של חומת האש, אבל גם מפחיתה את הסיכון לתנועה לא רצויה שמגיעה מבעלים של שירות מנוהל.
- בתור ספק שירות, אתם לא צריכים לשנות את כללי חומת האש בהתאם לטווחים של רשתות המשנה ב-VPC של הצרכן. פשוט יוצרים כללים לחומת האש עבור טווח כתובות ה-IP של NAT שהוגדר לשירות.
יכולת מדרגיות משופרת
- PSC מאפשרת עיצוב עם יכולת הרחבה גבוהה, כי היא תומכת באלפי צרכנים, ומאפשרת לבעלי שירותים מנוהלים להציע שירותים עם יכולת הרחבה גבוהה של ריבוי דיירים או דייר יחיד.
- אם אתם צרכני שירות שמשתמשים ב-Private Service Connect, אתם יכולים ליצור משאבים לפי הצורך ב-VPC. ההיקף של זה לא מושפע ממספר המשאבים שנוצרו ב-VPC של היצרן.
3. מושגי מפתח לצרכני שירות
אתם יכולים להשתמש בנקודות קצה של Private Service Connect כדי לצרוך שירותים שנמצאים מחוץ לרשת ה-VPC שלכם. צרכני השירותים יוצרים נקודות קצה של Private Service Connect שמתחברות לשירות היעד.
נקודות קצה
אתם משתמשים בנקודות קצה מסוג Private Service Connect כדי להתחבר לשירות יעד. לנקודות קצה יש כתובת IP פנימית ברשת ה-VPC, והן מבוססות על משאב כלל ההעברה.
אתם שולחים תעבורה לנקודת הקצה, והיא מעבירה אותה ליעדים מחוץ לרשת ה-VPC.
יעדים
לנקודות קצה של Private Service Connect יש יעד, שהוא השירות שאליו רוצים להתחבר:
- חבילת API:
- כל ממשקי ה-API: רוב ממשקי Google APIs
- VPC-SC: ממשקי API ש-VPC Service Controls תומך בהם
- שירות שפורסם ברשת VPC אחרת. הארגון שלכם או צד שלישי יכולים לנהל את השירות הזה.
שירות שפורסם
כדי לחבר את נקודת הקצה לשירות של ספק שירותים, צריך את הצמדת השירות של השירות. הפורמט של ה-URI של קובץ השירות הוא: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
4. מושגי מפתח עבור ספקי שירותים
כדי להפוך שירות לזמין לצרכנים, יוצרים רשתות משנה ייעודיות אחת או יותר לשימוש בתרגום כתובות רשת (NAT) של כתובות ה-IP של הצרכנים. לאחר מכן יוצרים קובץ מצורף לשירות שמפנה לתתי הרשתות האלה.
רשתות משנה של Private Service Connect
כדי לחשוף שירות, בעלי השירות קודם יוצרים רשתות משנה אחת או יותר עם מטרה Private Service Connect.
כשבקשה נשלחת מרשת VPC של צרכן, כתובת ה-IP של המקור של הצרכן מתורגמת באמצעות NAT של המקור (SNAT) לכתובת IP שנבחרה מאחת מרשתות המשנה של Private Service Connect.
אם רוצים לשמור את פרטי כתובת ה-IP של החיבור של הצרכן, אפשר לעיין במאמר בנושא צפייה בפרטי החיבור של הצרכן.
אי אפשר להשתמש בתת-הרשתות האלה למשאבים כמו מופעי מכונות וירטואליות או כללי העברה. תת-הרשתות משמשות רק כדי לספק כתובות IP ל-SNAT של חיבורים נכנסים של צרכנים.
תת-הרשת של Private Service Connect צריכה להכיל לפחות כתובת IP אחת לכל 63 מכונות וירטואליות של צרכנים, כדי שלכל מכונה וירטואלית של צרכן יוקצו 1,024 טפלים של מקור לתרגום כתובות רשת.
הגודל המינימלי של תת-רשת של Private Service Connect הוא /24.
קבצים מצורפים לשירות
הבעלים של השירות המנוהל חושפים את השירות שלהם באמצעות קובץ מצורף של שירות.
- כדי לחשוף שירות, הבעלים של השירות המנוהל יוצר צירוף שירות שמפנה לכלל העברת התנועה של מאזן העומסים של השירות.
- כדי לגשת לשירות, צרכן שירות יוצר נקודת קצה שמפנה לחיבור השירות.
העדפות חיבור
כשיוצרים שירות, בוחרים איך להפוך אותו לזמין. יש שתי אפשרויות:
- אישור אוטומטי של חיבורים לכל הפרויקטים – כל צרכן שירות יכול להגדיר נקודת קצה ולהתחבר לשירות באופן אוטומטי.
- אישור חיבורים לפרויקטים נבחרים – צרכני השירות מגדירים נקודת קצה לחיבור לשירות, ובעלים של שירות מנוהל מאשר או דוחה את בקשות החיבור.
דרישות ומגבלות
- חלות מגבלות על Private Service Connect.
- אפשר ליצור קובץ מצורף לשירות בגרסאות GKE 1.21.4-gke.300 ואילך.
- אי אפשר להשתמש באותה רשת משנה בכמה הגדרות של קובצי שירות מצורפים.
- צריך ליצור שירות GKE שמשתמש במאזן עומסים פנימי מסוג TCP/UDP.
5. סביבת בדיקה
הרשת של הצרכן מורכבת מכתובת IP סטטית שמשמשת ליצירת בקשות לבעלים של השירות המנוהל, בנוסף ל-target-service-attachment שממופה ל-service attachment של הבעלים (שירות שפורסם).

עכשיו נסתכל על רשת היוצרים. שימו לב שאין מיפוי בין הרשת של בעלי השירות לבין הרשת של צרכני השירות. במקום זאת, הרשת של בעלי השירות מכילה קובץ מצורף של שירות (שירות שפורסם) שמשמש את צרכני השירות. קובץ מצורף עם שירות ההפקה נחשף על ידי GKE ingress L4 ILB (שירות שפורסם) שמאפשר תקשורת עם קבוצות ה-Pod של GKE והאפליקציות המשויכות.
רשת המשנה של NAT משמשת כשבקשה נשלחת מרשת VPC של צרכן. כתובת ה-IP של המקור של הצרכן מתורגמת באמצעות NAT של המקור (SNAT) לכתובת IP שנבחרה מאחת מרשתות המשנה של Private Service Connect.
אי אפשר להשתמש בתת-הרשתות האלה למשאבים כמו מופעי מכונות וירטואליות או כללי העברה. תת-הרשתות משמשות רק כדי לספק כתובות IP ל-SNAT של חיבורים נכנסים של צרכנים.
כדי לקבל מידע נוסף על L4ILB ל-GKE Private Service Connect וגישה ישירה לתוכן שמשמש ליצירת ההפניה הזו למעבדה, אפשר לעיין ב מאמרים הבאים.
הגדרת סביבה בקצב אישי
- נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



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

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

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-Lab הזה רק באמצעות דפדפן.
6. לפני שמתחילים
ב-Codelab נדרשים שני פרויקטים, אבל זה לא נדרש ב-PSC. שימו לב להפניות לתמיכה בפרויקט יחיד או בכמה פרויקטים.
פרויקט יחיד – עדכון הפרויקט כדי לתמוך ברשת של יצרנים וצרכנים
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
פרויקטים מרובים – עדכון הפרויקט כדי לתמוך ברשת של יצרן
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
שימו לב למוסכמות הבאות לגבי קוד הצבעים:

7. יצירת רשת VPC של מפיקים

רשת VPC
מ-Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
יצירת תת-רשת של אשכול GKE
מ-Cloud Shell
gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access
יצירת אשכול GKE
מ-Cloud Shell
gcloud container clusters create gke-psc-l4 \
--release-channel=rapid \
--enable-ip-alias \
--zone=us-central1-a \
--network gke-producer-l4-vpc \
--num-nodes 1 \
--subnetwork node-subnet1 \
--cluster-secondary-range-name pod \
--services-secondary-range-name service
יצירת רשת משנה ל-Private Service Connect (NAT Subnet)
צריך ליצור רשתות משנה ייעודיות לשימוש עם Private Service Connect. אם אתם משתמשים במסוף Google Cloud כדי לפרסם שירות, אתם יכולים ליצור את רשתות המשנה במהלך התהליך הזה.
מידע על רשתות משנה של Private Service Connect זמין במאמר רשתות משנה של Private Service Connect.
מ-Cloud Shell
gcloud beta compute networks subnets create gke-nat-subnet \
--project $prodproject \
--network gke-producer-l4-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
8. פריסת עומס עבודה ושירותים
קובץ המניפסט הבא מתאר פריסה שמריצה קובץ אימג' של קונטיינר של אפליקציית אינטרנט לדוגמה. שומרים את המניפסט כ-my-deployment.yaml מ-Cloud Shell
apiVersion: apps/v1
kind: Deployment
metadata:
name: psc-ilb
spec:
replicas: 3
selector:
matchLabels:
app: psc-ilb
template:
metadata:
labels:
app: psc-ilb
spec:
containers:
- name: whereami
image: gcr.io/google-samples/whereami:v1.2.1
ports:
- name: http
containerPort: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 5
timeoutSeconds: 1
החלת המניפסט על האשכול מ-Cloud Shell
kubectl apply -f my-deployment.yaml
יצירת שירות
המניפסט הבא מתאר שירות שיוצר מאזן עומסים פנימי מסוג TCP/UDP ביציאת TCP 8080. שומרים את קובץ המניפסט בשם my-service.yaml מ-Cloud Shell.
apiVersion: v1
kind: Service
metadata:
name: gke-l4-psc
annotations:
networking.gke.io/load-balancer-type: "Internal"
spec:
type: LoadBalancer
selector:
app: psc-ilb
ports:
- port: 80
targetPort: 8080
protocol: TCP
החלת המניפסט על האשכול מ-Cloud Shell
kubectl apply -f my-service.yaml
יצירת ServiceAttachment
המניפסט הבא מתאר ServiceAttachment שחושף את השירות שיצרתם לצרכני השירות. שומרים את קובץ המניפסט בשם my-psc.yaml מ-Cloud Shell.
apiVersion: networking.gke.io/v1beta1 kind: ServiceAttachment metadata: name: emoji-sa namespace: default spec: connectionPreference: ACCEPT_AUTOMATIC natSubnets: - gke-nat-subnet proxyProtocol: false resourceRef: kind: Service name: gke-l4-psc
החלת המניפסט על האשכול מ-Cloud Shell
kubectl apply -f my-psc.yaml
ל-ServiceAttachment יש את השדות הבאים:
- connectionPreference: העדפת החיבור שקובעת איך הלקוחות מתחברים לשירות. אפשר להשתמש באישור אוטומטי של פרויקטים באמצעות ACCEPT_AUTOMATIC או באישור מפורש של פרויקטים באמצעות ACCEPT_MANUAL. מידע נוסף זמין במאמר פרסום שירותים באמצעות Private Service Connect.
- natSubnets: רשימה של שמות משאבי רשתות משנה לשימוש בצירוף השירות.
- proxyProtocol: אם הערך מוגדר כ-true, כתובת ה-IP של המקור של הצרכן ומזהה החיבור של Private Service Connect זמינים בבקשות. השדה הזה הוא אופציונלי, ואם לא מציינים ערך, ברירת המחדל היא false.
- consumerAllowList: רשימת הפרויקטים של הצרכנים שמורשים להתחבר ל-ServiceAttachment. אפשר להשתמש בשדה הזה רק אם הערך של connectionPreference הוא ACCEPT_MANUAL. מידע נוסף על השדה הזה ואפשרויות אחרות זמין במאמר פרסום שירותים באמצעות Private Service Connect.
אימות של תוכן שנוצר על ידי משתמשים
הצגת הפרטים של Service Attachment
כדי לראות את הפרטים של ServiceAttachment, מריצים את הפקודה הבאה מ-Cloud Shell
kubectl describe serviceattachment emoji-sa
צפייה ב-GKE L4 ILB
במסוף Cloud, עוברים אל Network Services → Load Balancing → Frontends
מזהים את כתובת ה-IP של הקצה הקדמי שמתאימה לרשת המשנה של הצומת שהוגדרה קודם לכן 192.168.10.0/24. שימו לב לצילום המסך שבהמשך, כתובת ה-IP שלכם עשויה להיות שונה.

צפייה בשירות שפורסם
במסוף Cloud, עוברים אל Network Services (שירותי רשת) → Private Service Connect (חיבור שירות פרטי) → Published Services (שירותים שפורסמו).
מזהים את השירות עם הרשת שבה נעשה שימוש במעבדה, gke-producer-l4-vpc, כמו בצילום המסך שבהמשך, למרות שהערכים של Service ו-Target עשויים להיות שונים

לוחצים על שם השירות כדי לעבור למסך שמוצג למטה, ורושמים את פרטי ההצמדה של השירות שמופיעים בפרטים הבסיסיים. בנוסף, שימו לב שהקטע 'פרויקטים מקושרים' ריק כי הלקוח עדיין לא נרשם לשירות. הלחצנים אישור ודחייה יישארו מושבתים כי העדפת החיבור מוגדרת ל"ACCEPT_AUTOMATICALLY". אפשר לשנות את האפשרות הזו בכל שלב ל"ACCEPT_MANUAL" על ידי שינוי קובץ ה-YAML של קובץ השירות (my-psc.yaml).


9. יצירת רשת VPC של צרכנים

בקטע הבא מוסבר איך להגדיר את ה-VPC של הצרכן בפרויקט נפרד. התקשורת בין רשת הצרכן לרשת הבעלים של השירות מתבצעת באמצעות קובץ השירות המצורף שמוגדר ברשת הצרכן.
ב-Codelab נדרשים שני פרויקטים, אבל זה לא נדרש ב-PSC. שימו לב להפניות לתמיכה בפרויקט יחיד או בכמה פרויקטים.
פרויקט יחיד – עדכון הפרויקט כדי לתמוך ברשת של יצרנים וצרכנים
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
פרויקטים מרובים – עדכון הפרויקט כדי לתמוך ברשת צרכנים
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
רשת VPC
מ-Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
יצירת תת-רשת ל-PSC
מ-Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
יצירת תת-רשת למכונות וירטואליות
מ-Cloud Shell
gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1
יצירת כתובת IP סטטית כדי לגשת לשירות שפורסם
מ-Cloud Shell
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
יצירת כללים לחומת האש
כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:
- רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
- מאפשר תנועה נכנסת מטווח כתובות ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP
מ-Cloud Shell
gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
למרות שלא נדרש ליצור כלל חומת אש ליציאה כדי ליצור PSC, מומלץ לעשות זאת כדי לעקוב אחרי תעבורת הנתונים של הצרכן ב-PSC לנקודת השירות של הספק
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
10. יצירת מופע בדיקה לצרכן 1
מ-Cloud Shell
gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud
11. יצירת מופע בדיקה לצרכן 2
מ-Cloud Shell
gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud
12. יצירת קובץ מצורף של שירות
בשלב הקודם העתקתם את המחרוזת Producer Service Attachment (קבצים מצורפים לשירות של יצרן) למקום בטוח. עכשיו צריך להזין את הערך ששמרתם בשדה target-service-attachment (קבצים מצורפים לשירות היעד).

מ-Cloud Shell
gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment
13. אימות – צרכן
נשתמש ב-CURL ובלוגים של חומת האש כדי לאמת את התקשורת בין הצרכן לבין היצרן.
בפרויקט של הצרכן, כתובות ה-IP הסטטיות משמשות ליצירת תקשורת עם הספק. כדי לאמת את המיפוי הזה של כתובת IP סטטית לכלל העברה לצרכן, מבצעים את התחביר הבא.

מתוך מעטפת השימוש בענן של רשתות ה-VPC של הצרכן, מזהים את כלל ההעברה ואת כתובת ה-IP הסטטית
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
הפלט מוצג למטה. נשתמש בכתובת 10.0.60.100 כדי להגיע אל המפיק בשלב מאוחר יותר
IPAddress: 10.0.60.100 creationTimestamp: '2021-09-30T21:13:54.124-07:00' id: '3564572805904938477' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '36583161500548196' pscConnectionStatus: ACCEPTED
הצגת השירות המקושר
ב-Cloud Console, עוברים אל Network Services (שירותי רשת) → Private Service Connect (חיבור שירות פרטי) → Connected Endpoints (נקודות קצה מחוברות) וצופים בנקודת הקצה החדשה שנוצרה.

נכנסים ל-consumer-instance-1 ובודקים את הגישה לשירות שפורסם על ידי הבעלים
פותחים כרטיסייה חדשה ב-Cloud Shell על ידי לחיצה על הסמל +.

מבצעים את הפעולות הבאות מ-Cloud Shell:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"
אחרי שמתחברים למופע consumer-instance-1, מריצים פקודת curl מול כתובת ה-IP של כלל ההעברה 10.0.60.100
מבצעים את הפעולות הבאות מ-Cloud Shell:
user@consumer-instance-1:~$ curl 10.0.60.100
פלט לדוגמה
user@consumer-instance-1:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal",
"pod_name": "psc-ilb-588887dfdb-w7tbr",
"pod_name_emoji": "🤷",
"project_id": "prodorijectid",
"timestamp": "2021-10-01T17:43:37",
"zone": "us-central1-a"
נכנסים אל consumer-instance-2 ובודקים את הגישה לשירות שפורסם על ידי הבעלים של השירות המנוהל
פותחים כרטיסייה חדשה ב-Cloud Shell על ידי לחיצה על הסמל +.

מבצעים את הפעולות הבאות מ-Cloud Shell:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
מבצעים את הפעולות הבאות מ-Cloud Shell:
user@consumer-instance-2:~$ curl 10.0.60.100
פלט לדוגמה
deepakmichael@consumer-instance-2:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal",
"pod_name": "psc-ilb-588887dfdb-4jdql",
"pod_name_emoji": "🧑🏿",
"project_id": "prodproject",
"timestamp": "2021-10-01T17:49:51",
"zone": "us-central1-a"
14. רישום ביומן של חומת אש – אימות שהוקצה
באמצעות Logs Explorer, מאמתים שכלל חומת האש vpc-consumner-psc מתעד את התעבורה בין המופע של המכונה הווירטואלית לבין כתובת ה-IP הסטטית
- מ-Cloud Console, מזהים את Operations Logging → Log Explorer
- בשדה Query (שאילתה), מעדכנים את הערך שבהמשך ל-yourconsumerproject ובוחרים באפשרות Run Query (הפעלת שאילתה).
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- תוצאות השאילתה מספקות את הפרטים הבאים לכל צילום מסך

- מרחיבים את היומן (jsonPayload → Connection) ומזהים את הפלט שמופיע בהמשך. שימו לב ל-dest_ip: 10.0.60.100 היא כתובת ה-IP הסטטית של TCP שמשמשת לגישה לשירות Producer, ול-src_ip: 10.0.70.10 או 10.0.70.20 הן כתובות ה-IP של מכונת ה-VM. הסילוק מותר.

15. אימות – יוצר

בפרויקט של הספק, מוודאים שחיבור קובץ השירות בוצע בהצלחה. עוברים אל Network Services (שירותי רשת) → Private Service Connect (חיבור שירות פרטי) → Published Services (שירותים שפורסמו).

כשלוחצים על השירות, מוצגים הפרויקט המקושר של צרכן השירות והסטטוס שלו, כמו בדוגמה הבאה

16. הגבלת הגישה לשירות שפורסם

עד עכשיו אישרנו שלשני המקרים יש גישה לשירותים שפורסמו. עכשיו ניצור כלל חומת אש ליציאה כדי למנוע מ-consumer-instance-2 גישה לשירות שפורסם.
כברירת מחדל, GCP מאפשרת את כל תעבורת הנתונים היוצאת, אבל דוחה את כל תעבורת הנתונים הנכנסת. בשלבים הבאים ניצור כלל בחומת האש על סמך תג רשת שהוגדר קודם לכן, google2, שבו השתמשנו כשנוצר consumer-instance-2 כדי לחסום את הגישה לשירות שפורסם.

פותחים כרטיסייה חדשה ב-Cloud Shell על ידי לחיצה על + ומריצים את כלל חומת האש הבא ב-Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging
עכשיו נבדוק אם consumer-instance-2 יכול לגשת לשירות שפורסם. אם הסשן הסתיים בגלל חוסר פעילות, צריך לפתוח Cloud Shell חדש ולהיכנס למכונה הווירטואלית כמו שמתואר בהמשך.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
מבצעים את הפעולות הבאות מ-Cloud Shell:
user@consumer-instance-2:~$ curl 10.0.60.100
פלט לדוגמה
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
רישום ביומן של חומת האש – האימות נדחה
באמצעות Logs Explorer, מאמתים שכלל חומת האש psc-endpoint-deny-egress מתעד את התעבורה בין מופע ה-VM לבין כתובת ה-IP הסטטית
- מ-Cloud Console, מזהים את Operations Logging → Log Explorer
- בשדה Query (שאילתה), מעדכנים את הערך שבהמשך עם consumerproject ובוחרים באפשרות Run Query (הפעלת שאילתה).
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- תוצאות השאילתה מספקות את הפרטים הבאים לכל צילום מסך

- מרחיבים את היומן ומזהים את הפלט שמופיע בהמשך. שימו לב ל-dest_ip: 10.0.60.100 היא כתובת ה-IP הסטטית של TCP, ול-src_ip: 10.0.70.10 או 10.0.70.20 הן כתובות ה-IP של המכונה הווירטואלית. ההחלטה היא דחייה.

17. שלבי הניקוי
שלבים לניקוי רשת המפיקים

מחיקת רכיבי Lab ממסוף של פרויקט Producer ב-Cloud Shell
gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet gcloud compute networks delete gke-producer-l4-vpc --quiet

שלבים לניקוי רשת צרכנים
מחיקת רכיבי מעבדה ממסוף של פרויקט לצרכן ב-Cloud Shell
gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet gcloud compute networks delete vpc-demo-consumer --quiet
18. מעולה!
כל הכבוד, סיימתם את ה-Codelab.
מה נכלל
- היתרונות של Private Service Connect
- מושגי מפתח לצרכני שירות
- מושגי מפתח עבור ספקי שירותים
- יצירת סביבת הפקה
- חשיפת שירות (סביבת הפקה) באמצעות קובץ מצורף של שירות
- יצירת סביבה לצרכנים
- יצירת כלל העברה ברשת הצרכן
- אימות הגישה של הצרכן
- הפעלת בקרת גישה למדיניות
- השתמשתם בכלל חומת אש ליציאה כדי לחסום גישה לכלל העברה לצרכן