1. מבוא
באמצעות Private Service Connect, אפשר ליצור נקודות קצה פרטיות באמצעות כתובות IP פנימיות גלובליות בתוך רשת ה-VPC כדי לגשת ל-Google APIs. אפשר להקצות שמות DNS לכתובות ה-IP הפנימיות האלה עם שמות משמעותיים כמו storage-pscendpoint.p.googleapis.com ו-Bigtable-adsteam.p.googleapis.com. במקום לשלוח בקשות API לנקודות קצה (endpoint) של שירות ציבורי, כמו storage.googleapis.com, אפשר לשלוח את הבקשות לנקודת הקצה של Private Service Connect, שהיא פרטית ופנימית לרשת ה-VPC.
השמות וכתובות ה-IP האלה הם פנימיים ברשת ה-VPC שלכם ובכל הרשתות המקומיות שמחוברות אליה באמצעות מנהרות Cloud VPN או קבצים מצורפים ל-Cloud Interconnect (VLAN).
אתם יכולים לקבוע אילו תעבורת נתונים תופנה לכל נקודת קצה, ולהדגים שהתנועה נשארת בתוך Google Cloud.
מה תלמדו
- תרחישים לדוגמה של קישור לשירות פרטי
- דרישות רשת
- ממשקי API נתמכים
- יצירת נקודת קצה של Private Service Connect
- יצירת קטגוריה של אחסון בענן
- יצירה ועדכון של תחומים פרטיים ב-Cloud DNS
- צריך ליצור NAT GW כדי לגשת ל-googleapis ציבורי
- יצירה ועדכון של קובץ תצורה של BOTO
- ביצוע רשימת gsutil ב-VM1 שטופלה מול נקודת הקצה של שירות PSC
- ביצוע רשימת gsutil ב-VM2 שטופלה מול googleapis.com ציבורי
- שימוש ב-Tcpdump כדי לאמת רזולוציית DNS
מה צריך להכין
- ידע ב-DNS, nano או עורך vi
2. תרחישים לדוגמה של קישור לשירות פרטי
אתם יכולים ליצור כמה נקודות קצה של Private Service Connect באותה רשת VPC. אין הגבלה על רוחב הפס לנקודת קצה מסוימת. נקודות קצה של Private Service Connect משתמשות בכתובות IP פנימיות גלובליות, ולכן כל משאב ברשת ה-VPC יכול להשתמש בהן.
אם יש כמה נקודות קצה, אפשר לציין נתיבי רשת שונים באמצעות כללי Cloud Router וכללי חומת אש.
- אפשר ליצור כללים של חומת אש כדי למנוע ממכונות וירטואליות מסוימות לגשת ל-Google APIs דרך נקודת קצה (endpoint) של Private Service Connect, ובמקביל לאפשר למכונות וירטואליות אחרות לקבל גישה.
- אפשר להגדיר כלל חומת אש במכונה וירטואלית שלא מאפשר את כל תעבורת הנתונים לאינטרנט. התנועה שנשלחת לנקודות הקצה של Private Service Connect עדיין מגיעה ל-Google.
- אם יש לכם מארחים בארגון שמחוברים ל-VPC באמצעות מנהרת Cloud VPN או קובץ מצורף ב-Cloud Interconnect (VLAN), תוכלו לשלוח בקשות מסוימות דרך המנהרה או VLAN, ובמקביל לשלוח בקשות אחרות באינטרנט הציבורי. ההגדרה הזו מאפשרת לעקוף את המנהרה או את ה-VLAN בשביל שירותים כמו Google Books שלא נתמכים במסגרת 'גישה פרטית ל-Google'. כדי ליצור את ההגדרות האלה, צריך ליצור נקודת קצה (endpoint) של Private Service Connect, לפרסם את כתובות ה-IP של נקודת הקצה של Private Service Connect באמצעות מודעות מסלולים בהתאמה אישית ב-Cloud Router ולהפעיל מדיניות להעברה נכנסת של Cloud DNS. האפליקציה יכולה לשלוח בקשות מסוימות דרך מנהרת Cloud VPN או דרך הקובץ המצורף Cloud Interconnect (VLAN) באמצעות השם של נקודת הקצה של Private Service Connect, ובקשות אחרות באינטרנט באמצעות שם ה-DNS שמוגדר כברירת מחדל.
- אם תחברו את הרשת המקומית שלכם לרשת ה-VPC באמצעות מספר קבצים מצורפים של Cloud Interconnect (VLAN), תוכלו לשלוח חלק מתעבורת הנתונים המקומית דרך VLAN אחד ואת השאר דרך אחרת, כפי שמוצג באיור 2. כך תוכלו להשתמש ברשת אזורית נרחבת משלכם במקום ברשת של Google, ולשלוט בתנועת הנתונים כדי לעמוד בדרישות גיאוגרפיות. כדי ליצור את ההגדרות האישיות האלה, צריך ליצור שתי נקודות קצה של Private Service Connect. יוצרים מודעה מותאמת אישית של מסלול עבור נקודת הקצה הראשונה בסשן BGP של ה-Cloud Router שמנהל את ה-VLAN הראשון, ויוצרים מודעה אחרת של מסלול מותאם אישית לנקודת הקצה השנייה בסשן BGP של ה-Cloud Router שמנהל את ה-VLAN השני. מארחים מקומיים שמוגדרים להשתמש בשם של נקודת הקצה של Private Service Connect שולחים תעבורת נתונים דרך הקובץ המצורף של Cloud Interconnect (VLAN) המתאים.
- אפשר גם להשתמש במספר קבצים מצורפים של Cloud Interconnect (VLAN) בטופולוגיה פעילה או פעילה. אם אתם מפרסמים את אותה כתובת IP של נקודת קצה של Private Service Connect באמצעות מודעות מסלולים בהתאמה אישית לסשנים של BGP ב-Cloud Routers שמנהלים את ה-VLAN, חבילות שנשלחות ממערכות מקומיות לנקודות הקצה ינותבו בין רשתות VLAN באמצעות ECMP.
איור 1. באמצעות הגדרת Private Service Connect, Cloud Router ומארחים מקומיים, אפשר לקבוע איזה קובץ מצורף של Cloud Interconnect (VLAN) ישמש לשליחת תעבורת נתונים ל-Google APIs.
3. דרישות רשת
כדי להשתמש ב-Private Service Connect, למכונות וירטואליות (VM) ללא כתובות IP חיצוניות צריך להיות הממשק הראשי ברשת משנה עם גישה פרטית ל-Google.
מכונה וירטואלית עם כתובת IP חיצונית יכולה לגשת לממשקי API ולשירותים של Google באמצעות נקודות קצה של Private Service Connect, גם אם גישה פרטית ל-Google מופעלת ברשת המשנה שלה וגם אם לא. הקישוריות לנקודת הקצה של Private Service Connect נשארת בתוך הרשת של Google.
אי אפשר לגשת לנקודות הקצה (endpoint) של Private Service Connect מרשתות VPC מקושרות.
ממשקי API נתמכים
כשיוצרים נקודת קצה של Private Service Connect, בוחרים את חבילת ממשקי ה-API שצריך גישה אליה: all-apis או vpc-sc.
חבילות ה-API מעניקות גישה לאותם ממשקי API שזמינים דרך VIPs של גישה פרטית ל-Google.
- חבילת all-apis מספקת גישה לאותם ממשקי API כמו private.googleapis.com.
- חבילת vpc-sc מספקת גישה לאותם ממשקי API כמו limited.googleapis.com.
4. טופולוגיה של Codelab תרחיש לדוגמה
איור 1 – הטופולוגיה של Codelab
תרחיש לדוגמה של Codelab –
הלקוח שלנו דורש שילוב של גישה פרטית (interconnect) לגישה ציבורית של Googleapis לצורך העברת נתונים באחסון בענן. כדי לעמוד בדרישות של הלקוחות שלנו, נפרוס את Private Service Connect שכוללים כתובת ייחודית /32, הגדרת BOTO ועדכונים של רשומת DNS. מכונה וירטואלית 1 תשתמש ב-PSC לגישה לקטגוריה של אחסון בענן; לעומת זאת, VM2 תשתמש בטווחי IP ציבוריים של googleapis.com דרך NAT GW.
כל ההיבטים של שיעור ה-Lab פרוסים ב-Google Cloud Platform, אבל אותו תרחיש לדוגמה רלוונטי לפריסה היברידית של Cloud Cloud שמחייבת הפרדת תעבורת נתונים.
5. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
חשוב לזכור את מזהה הפרויקט, שם ייחודי לכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא מתאים לכם, סליחה). בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID
.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.
מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הפעלת Cloud Shell
אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.
ממסוף GCP, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:
נדרשים רק כמה דקות כדי להקצות את הסביבה ולהתחבר אליה. בסיום התהליך, אתם אמורים לראות משהו כזה:
למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כל העבודה בשיעור ה-Lab הזה יכולה להתבצע באמצעות דפדפן בלבד.
6. לפני שמתחילים
הפעלת ממשקי API
ב-Inside Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname
הפעלת כל השירותים הנחוצים
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com gcloud services enable dns.googleapis.com
7. יצירת רשת VPC
רשת VPC
מ-Cloud Shell
gcloud compute networks create psc-lab --subnet-mode custom
יצירת רשת משנה
מ-Cloud Shell
gcloud compute networks subnets create psclab-subnet \ --network psc-lab --range 10.0.0.0/24 --region us-central1 --enable-private-ip-google-access
יצירת כללים לחומת האש
כדי לאפשר ל-IAP להתחבר למכונות הווירטואליות, יוצרים כלל של חומת אש:
- המדיניות חלה על כל מכונות וירטואליות שרוצים לגשת אליהן באמצעות IAP.
- תעבורת נתונים נכנסת (ingress) מטווח ה-IP 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות להעברת TCP באמצעות IAP.
מ-Cloud Shell
gcloud compute firewall-rules create psclab-ssh \ --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20
יצירת מכונה של Cloud NAT
יצירת Cloud Router
מ-Cloud Shell
gcloud compute routers create crnat \ --network psc-lab \ --asn 65000 \ --region us-central1
יצירת Cloud NAT
מ-Cloud Shell
gcloud compute routers nats create cloudnat \ --router=crnat \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --enable-logging \ --region us-central1
8. יצירת נקודת קצה של Private Service Connect
כשמגדירים את כתובת ה-IP <pscendpointip>
של נקודת הקצה של Private Service Connect, צריך לספק כתובת IP ייחודית שלא מוגדרת ב-VPC.
מ-Cloud Shell
gcloud compute addresses create psc-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=192.168.255.250 \ --network=psc-lab
אחסון 'pscendpointip' משך שיעור ה-Lab
pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)") echo $pscendpointip
אפשר ליצור כלל העברה כדי לחבר את נקודת הקצה לממשקי API ולשירותים של Google.
מ-Cloud Shell
gcloud compute forwarding-rules create pscendpoint \ --global \ --network=psc-lab \ --address=psc-ip \ --target-google-apis-bundle=all-apis
הצגת רשימה של נקודות הקצה שהוגדרו ל-Private Service Connect
מ-Cloud Shell
gcloud compute forwarding-rules list \ --filter target="(all-apis OR vpc-sc)" --global
תיאור נקודות הקצה שהוגדרו ל-Private Service Connect
מ-Cloud Shell
gcloud compute forwarding-rules describe \ pscendpoint --global
9. יצירת קטגוריה
יוצרים קטגוריה של Cloud Storage ומחליפים את BUCKET_NAME בשם ייחודי גלובלי מועדף עליך.
מ-Cloud Shell
gsutil mb -l us-central1 -b on gs://BUCKET_NAME
אחסון של ‘BUCKET_NAME' משך שיעור ה-Lab
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME
10. הגדרת ה-DNS
כשיוצרים נקודת קצה של Private Service Connect, אפליקציית Service Directory יוצרת רשומת DNS לממשקי ה-API והשירותים שזמינים באמצעות נקודת הקצה הזו.
רשומות ה-DNS מפנות לכתובת ה-IP של נקודת הקצה של Private Service Connect, והן בפורמט הזה: SERVICE-ENDPOINT.p.googleapis.com.
תוכלו להשתמש בשמות ה-DNS האלה בבקשות ה-API כדי להפנות את הבקשה לנקודת הקצה שלכם מסוג Private Service Connect. אפשר להשתמש בשמות ה-DNS האלה גם בכותרת 'מארח' של הבקשה.
אם רוצים להשתמש בנקודת קצה של Private Service Connect בלקוח או באפליקציה שמשתמשים בממשקי API ובשירותים של Google, צריך לעדכן את הלקוח או האפליקציה כך שישתמשו בשמות ה-DNS של p.googleapis.com.
פרטים נוספים זמינים במסמכי התיעוד של ספריית הלקוח או ספריית הלקוח. לדוגמה:
- Python: אפשר להגדיר את api_endpoint ב-Client options class (סיווג אפשרויות לקוח) שבחבילת google-api-core.
- Go: אפשר להגדיר את OnEndpoint בחבילת האפשרויות של לקוח בחבילת ה-API.
- gcloud: אפשר להגדיר את api_endpoint_overrides באמצעות הפקודה הזו. gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL
לדוגמה: gcloud config set api_endpoint_overrides/storage https://storage-xyz.p.googleapis.com/storage/v1/
אם לא ניתן להגדיר את הלקוח או האפליקציה לשימוש בנקודת קצה אחרת, צריך ליצור רשומות DNS שיותאמו לשמות ה-DNS המוגדרים כברירת מחדל. לדוגמה, storage.googleapis.com. מידע נוסף זמין במאמר יצירת רשומות DNS באמצעות שמות DNS שמוגדרים כברירת מחדל.
אימות רשומת ה-DNS
ממסוף Cloud, מאמתים את רשומת ה-DNS שנוצרה בקטע 'שירותי רשת' ← 'Cloud DNS'. שימו לב לשם ה-DNS שנוצר, 'p.googleapis.com'.
11. יצירת מכונות וירטואליות
יצירת מכונה וירטואלית (psc-instance-1) המשמשת לאימות התחברות לשירות פרטי
מ-Cloud Shell
gcloud compute instances create psc-instance-1 \ --subnet psclab-subnet \ --zone us-central1-a \ --image=centos-7-v20210122 \ --image-project=centos-cloud \ --no-address \ --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
מתחברים למכונת ה-VM (psc-instance-1)
כניסת SSH למכונה הווירטואלית דרך Cloud Shell
gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"
כדי ליצור מסופים נוספים של Cloud Shell, לוחצים על + (צילום מסך בהמשך) שלוש פעמים.
יצירת מכונה וירטואלית (psc-instance-2) המשמשת לאימות Googleapis ציבורי
מכרטיסייה 2
gcloud compute instances create psc-instance-2 \ --subnet psclab-subnet \ --zone us-central1-a \ --image=centos-7-v20210122 \ --image-project=centos-cloud \ --no-address \ --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y
מכרטיסייה 2 SSH ל-VM דרך 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" "psc-instance-2" --project "$projectname"
מכרטיסייה 3 SSH אל psc-instance-1 דרך 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" "psc-instance-1" --project "$projectname"
מכרטיסייה 4 Shell SSH אל psc-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" "psc-instance-2" --project "$projectname"
12. אימות ההתנהגות הקיימת של Gsutil
מכרטיסייה 4 (psc-instance-2) מתחילים את tcpdump ועוקבים אחרי תנועת ה-DNS.
sudo tcpdump -vv -i eth0 port 53
בדיקת חיפוש ה-DNS של קטגוריית האחסון מכרטיסייה 2 (psc-instance-2)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
בודקים את ניפוי הבאגים ב-gsutil, רזולוציית DNS משמשת ב-HOST storage.googleapis.com.
<snip> send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' <snip>
בכרטיסייה 4 (psc-instance-2), מוודאים שרשומות DNS A הציבוריות של GoogleAPI.com משמשות לגישה לקטגוריית האחסון.
metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128
13. שינוי ההתנהגות של Gsutil
תזכורת: בשלב הקודם יצרתם אזור DNS פרטי ורשומת A שממופה לכתובת ה-IP של נקודת הקצה של PSC. בשלב הבא נקבע את אופן הפעולה של gsutil על ידי עדכון קובץ ה-VM BOTO ב-psc-instance-1.
צפייה בהגדרות ברירת המחדל של BOTO מטרמינל של מכונת VM בכרטיסייה 1 (psc-instance-1)
[psc-instance ~]$ more /etc/boto.cfg
הפלט (המזהה של project_id יהיה שונה)
[GSUtil] default_project_id = [your project number] default_api_version = 2 [GoogleCompute] service_account = default
מעדכנים את הגדרת BOTO באמצעות nano או VI Editor, ומקפידים להעתיק ולהדביק את כל הרשומות.
דוגמה: sudo nano /etc/boto.cfg
או
דוגמה: sudo vi /etc/boto.cfg
מהכרטיסייה טרמינל של מכונת VM 1(psc-instance-1)
[Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com
אימות ההגדרות, הסדר של [Credentials] הוא קריטי לחיפוש DNS
more /etc/boto.cfg [Credentials] gs_host = storage-pscendpoint.p.googleapis.com gs_host_header = storage.googleapis.com gs_json_host = storage-pscendpoint.p.googleapis.com gs_json_host_header = www.googleapis.com [GSUtil] default_project_id = [your project number default_api_version = 2 [GoogleCompute] service_account = default
14. אימות ההתנהגות המעודכנת של חיפוש ב-gsutil
מכרטיסייה 3 (psc-instance-1) מתחילים את tcpdump ועוקבים אחרי תנועת ה-DNS.
sudo tcpdump -vv -i eth0 port 53
בדיקת חיפוש gsutil של קטגוריית אחסון מכרטיסייה 1 (psc-instance-1)
BUCKET_NAME=YOUR BUCKET NAME echo $BUCKET_NAME gsutil -D ls gs://$BUCKET_NAME
יומני ניפוי באגים מאשרים שניתן להגיע לקטגוריית האחסון דרך נקודת הקצה 'pscendpoint' של Private Service Connect
פלט:
<snip> INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com', 'accept': 'application/json', 'accept-encoding': 'gzip, deflate', 'content-length': '0', 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'} INFO 0131 22:14:18.796502 base_api.py] Body: (none) connect: (storage-pscendpoint.p.googleapis.com, 443) send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n' reply: 'HTTP/1.1 200 OK\r\n' <snip>
בכרטיסייה 3 (psc-instance-1), מוודאים שכתובת ה-IP של נקודת הקצה (endpoint) של PSC היא רשומת DNS A שמשמשת כשמנסים לגשת לקטגוריית האחסון.
@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82) psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54) 05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82) psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54) 05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98) metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70) 05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)
אימות שכתובת ה-IP של נקודת הקצה של Private Service Connect משמשת עכשיו לרזולוציית DNS
מכרטיסייה 1
nslookup storage-pscendpoint.p.googleapis.com
פלט
@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com Server: 169.254.169.254 Address: 169.254.169.254#53 Non-authoritative answer: Name: storage-pscendpoint.p.googleapis.com Address: <pscip>
15. שלבי ניקוי
יציאה ממכונת VM (כל הכרטיסיות)
exit
מטרמינל יחיד של Cloud Shell, מוחקים את רכיבי שיעור ה-Lab
gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet gcloud compute routers delete crnat --region=us-central1 --quiet gcloud compute forwarding-rules delete pscendpoint --global --quiet gcloud compute addresses delete psc-ip --global --quiet gsutil rm -r gs://$BUCKET_NAME gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet gcloud compute firewall-rules delete psclab-ssh --quiet gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet gcloud compute networks delete psc-lab --quiet
במסוף, מוודאים שמוצג הפרויקט הנכון ובוחרים באפשרות Networking Services ← Cloud DNS.
16. מעולה!
ברכות על השלמת ה-Codelab.
אילו נושאים דיברנו?
- תרחישים לדוגמה של קישור לשירות פרטי
- דרישות רשת
- ממשקי API נתמכים
- נוצרה נקודת קצה (endpoint) של Private Service Connect
- נוצרה קטגוריה של אחסון בענן
- קובץ תצורה מסוג BOTO עודכן
- יצרת חבילת NAT GW
- ביצוע רשימת gsutil ב-VM1 שניתנת לפתרון מול נקודת הקצה של שירות PSC
- ביצוע רשימת gsutil ב-VM2 שניתנת לפתרון מול googleapis.com ציבורי
- שימוש ב-Tcpdump כדי לאמת רזולוציית DNS