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 (שירות שפורסם) ומאפשר תקשורת עם ה-Pods של 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 של Producers

רשת 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. פריסת עומס עבודה ושירותים
במניפסט הבא מתואר Deployment שמריץ קובץ אימג' של קונטיינר של אפליקציית אינטרנט לדוגמה. שומרים את המניפסט כ-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.
אימות של Producer
הצגת הפרטים של 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 ו-REJECT יישארו מושבתים כי Connection preference מוגדר ל-"ACCEPT_AUTOMATICALLY". אפשר לשנות את האפשרות הזו בכל שלב ל-"ACCEPT_MANUAL" על ידי שינוי הקובץ service attachment 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.
- מאפשר תעבורת נתונים נכנסת (ingress) מטווח כתובות ה-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 סטטית לכלל העברה לצרכן מאומת באמצעות התחביר הבא.

מ-Cloud Shell של רשתות ה-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 מאפשרת את כל התנועה היוצאת אבל דוחה את כל תעבורת הנתונים הנכנסת (ingress). בשלבים הבאים ניצור כלל בחומת האש על סמך תג רשת שהוגדר קודם לכן, 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. שלבי הניקוי
שלבים לניקוי רשת המפיקים

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