1. מבוא
בקודלאב הזה תבצעו חיבור HTTPS דרומה ל-GitHub באמצעות מאזן עומסים פנימי של שרת proxy מסוג TCP וקבוצת נקודות קצה של רשת אינטרנט (NEG) שמופעל מ-Looker PSC כצרכן שירות.
Private Service Connect הוא יכולת של הרשתות ב-Google Cloud שמאפשרת לצרכנים לגשת לשירותים מנוהלים באופן פרטי מתוך רשת ה-VPC שלהם. באופן דומה, היא מאפשרת ליצרני שירותים מנוהלים לארח את השירותים האלה ברשתות VPC נפרדות שלהם ולהציע חיבור פרטי לצרכנים שלהם. לדוגמה, כשמשתמשים ב-Private Service Connect כדי לגשת ל-Looker, אתם צרכני השירות ו-Google היא הבעלים של השירות, כפי שמוצג באיור 1.
איור 1.
גישה לדרום ארה"ב, שנקראת גם PSC הפוך, מאפשרת לצרכן ליצור שירות שפורסם בתור Producer כדי לאפשר ל-Looker גישה לנקודות קצה (endpoints) בארגון, ב-VPC, לשירותים מנוהלים ולאינטרנט. אפשר לפרוס חיבורים דרומיים בכל אזור, ללא קשר למיקום שבו Looker PSC פרוס, כפי שמודגש באיור 2.
איור 2.
מה תלמדו
- דרישות רשת
- יצירת שירות מפיק של Private Service Connect
- יצירת נקודת קצה של Private Service Connect ב-Looker
- יצירת קישוריות ל-GitHub מ-Looker באמצעות בדיקת חיבור
מה צריך להכין
- פרויקט ב-Google Cloud עם הרשאות בעלים
- חשבון ומאגר ב-GitHub
- אסימון גישה אישית של GitHub (קלאסי)
- מכונה קיימת של Looker PSC
2. מה תפַתחו
תיצורו רשת ייצור, looker-psc-demo, כדי לפרוס מאזן עומסים פנימי של שרת proxy מסוג TCP ו-NEG באינטרנט שפורסם כשירות דרך Private Service Connect (PSC). אחרי הפרסום, עליכם לבצע את הפעולות הבאות כדי לאמת את הגישה לשירות של הבעלים:
- יצירת נקודת קצה (endpoint) של PSC ב-Looker שמשויכת לקובץ המצורף של שירות Producer
- שימוש במסוף Looker כדי ליצור פרויקט חדש ולבדוק קישוריות HTTPS ל-GitHub.com
3. דרישות רשת
בהמשך מפורטות הדרישות לרשת של הבעלים. הצרכן בקודלאב הזה הוא מכונה של Looker PSC.
רכיבים | תיאור |
VPC (looker-psc-demo) | VPC במצב מותאם אישית |
רשת משנה של PSC NAT | חבילות מרשת ה-VPC של הצרכן מתרגמות באמצעות NAT מקור (SNAT), כך שכתובות ה-IP המקוריות שלהן מומרות לכתובות IP מקור מתת-הרשת של NAT ברשת ה-VPC של היצרן. |
תת-רשת של כללי העברה ב-PSC | משמש להקצאת כתובת IP למאזן העומסים בשרתי TCP פנימיים של אזור |
תת-רשת של PSC NEG | משמש להקצאת כתובת IP לקבוצת נקודות הקצה ברשת |
רשת משנה של שרת proxy בלבד | לכל אחד משרתי ה-proxy של מאזן העומסים מוקצית כתובת IP פנימית. למנות שנשלחות משרת proxy למכונה וירטואלית או לנקודת קצה עורפית יש כתובת IP של המקור מרשת המשנה לשרת proxy בלבד. |
NEG באינטרנט | משאב המשמש להגדרת קצה עורפי חיצוני למאזן העומסים. לא ניתן לגשת לנקודת הקצה רק דרך Cloud VPN או Cloud Interconnect. |
שירות לקצה העורפי | שירות לקצה העורפי משמש כגשר בין מאזן העומסים לבין המשאבים בקצה העורפי. במדריך, השירות לקצה העורפי משויך ל-NEG באינטרנט. |
Cloud Router | Cloud NAT מסתמך על Cloud Routers לשליטה ביכולות ברמת המישור, אבל לא לניהול סשן BGP. |
Cloud NAT | האתר האזורי NEG משתמש ב-Cloud NAT לתעבורת נתונים יוצאת (egress) באינטרנט. |
4. טופולוגיית ה-Codelab
5. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל מזהים אותו בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות כתובת משלכם ולבדוק אם היא זמינה. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך הפרויקט. - לידיעתך, יש ערך שלישי, Project Number, שבו משתמשים בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי העזרה.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או ב-API של Cloud. השלמת הקודלאב הזה לא תעלה הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.
הפעלת Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.
במסוף Google Cloud, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:
תהליך ההקצאה והחיבור לסביבת העבודה אמור להימשך רק כמה רגעים. בסיום התהליך, אתם אמורים לראות משהו כזה:
למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. אתם יכולים לבצע את כל העבודה בקודלאב הזה בדפדפן. אין צורך להתקין שום דבר.
6. לפני שמתחילים
הפעלת ממשקי API
ב-Inside 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 של Producer
רשת VPC
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute networks create looker-psc-demo --subnet-mode custom
יצירת תת-רשתות
תת-הרשת של PSC תשויך לקובץ המצורף של שירות PSC לצורך תרגום כתובות רשת (NAT).
בתוך Cloud Shell, יוצרים את PSC NAT Subnet:
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 ציבורי
NATG Gateway משמש את מאזן העומסים הפנימי של שרת proxy מסוג tcp ב-proxy לתעבורת נתונים יוצאת (egress) באינטרנט עם אפשרות ההגדרה, -endpoint-types=END_TYPE_MANAGED_PROXY_LB, ולכן אותו NATGW לא יתמוך בתעבורת נתונים יוצאת (egress) באינטרנט ב-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 github-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--region=$region
בתוך Cloud Shell, מעדכנים את github-internet-neg של Internet NEG עם FQDN github.com ויציאה 443
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="fqdn=github.com,port=443" \
--region=$region
יצירת מדיניות חומת אש ברשת וכללי חומת אש
Inside 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 לכל המכונות ברשת.
Inside 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. יצירת שירות של הכלי להפקת חדשות
יצירת רכיבים של מאזן עומסים
Inside 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=github-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-github-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, יוצרים את הקובץ המצורף לשירות, github-svc-attachment-https:
gcloud compute service-attachments create github-svc-attachment-https --region=$region --producer-forwarding-rule=producer-github-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
בשלב הבא, משיגים ורושמים את הקובץ Service Attachment (קובץ מצורף) שרשום ב-selfLink URI, החל בפרויקטים כדי להגדיר את נקודת הקצה של PSC ב-Looker.
SelfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-attachment-https
ב-Cloud Shell, מבצעים את הפעולות הבאות:
gcloud compute service-attachments describe github-svc-attachment-https --region=$region
דוגמה:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-30T09:44:03.883-07:00'
description: ''
enableProxyProtocol: false
fingerprint: RfKh3blWZE0=
id: '2897904404386302012'
kind: compute#serviceAttachment
name: github-svc-attachment-https
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '2897904404386302012'
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/github-svc-attachment-https
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr
במסוף Cloud, עוברים אל:
Network Services → Private Service Connect → Published Services
9. יצירת חיבור לנקודת קצה (endpoint) של PSC ב-Looker
בקטע הבא נסביר איך לשייך את השירות של הבעלים ל-PSC של Looker Core באמצעות הדגלים -psc-service-attachment ב-Cloud Shell לדומיין יחיד.
ב-Inside Cloud Shell, יוצרים את השיוך psc על ידי עדכון הפרמטרים הבאים בהתאם לסביבה:
- INSTANCE_NAME: שם המכונה של Looker (Google Cloud Core).
- DOMAIN_1: github.com
- SERVICE_ATTACHMENT_1: מזהה URI שצולם בתיאור של Service Attachment, github-svc-attachment-https.
- REGION: האזור שבו מתארחת המכונה של Looker (ליבה של Google Cloud).
Inside 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=github.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https \
--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
דוגמה:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "cosmopup.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.12.28",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo",
"projects/$project/global/networks/looker-shared-vpc"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "github.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-08-30T17:47:33.440271635Z"
}
אימות נקודת הקצה של PSC במסוף Cloud
אפשר לאמת את החיבור ל-PSC דרך מסוף Cloud
במסוף Cloud, עוברים אל:
Looker ← מופע של Looker ← פרטים
10. בדיקת הקישוריות ל-GitHub
בשלבים הבאים תשתמשו ב-Looker Console כדי ליצור פרויקט לאימות קישוריות HTTPS ל-github.com.
11. יצירת פרויקט חדש
הפעלת מצב פיתוח
ב-Looker Console, עוברים אל:
הפעלת מצב פיתוח (דף שמאלי למטה), לאחר בחירה בבאנר 'You are in Development mode' (במצב פיתוח). מוצגת.
יצירת פרויקט חדש
במסוף Cloud, עוברים אל:
פיתוח ← פרויקטים
בוחרים באפשרות 'פרויקט LookML חדש'.
נותנים שם לפרויקט, בוחרים באפשרות 'פרויקט ריק' ואז באפשרות 'יצירת פרויקט'.
בוחרים באפשרות 'הגדרת Git'.
הגדרת Git
מעדכנים את כתובת ה-URL של המאגר עם פרטי ה-HTTPS של GitHub, מוודאים שמוסיפים את הסיומת .git לכתובת ה-URL ובוחרים באפשרות 'המשך'.
דוגמה:
מעדכנים את הבחירה עם שם המשתמש שלכם ב-GitHub ואסימון הגישה האישית (הגרסה הקלאסית), ואז בוחרים באפשרות 'בדיקה וסיום' של ההגדרה.
בחירת פעולות Git
בוחרים באפשרות 'בדיקת החיבור ל-Git'.
אימות בדיקת החיבור ל-Git
הסרת המשאבים
מטרמינל יחיד של Cloud Shell, מוחקים את רכיבי שיעור ה-Lab
gcloud compute service-attachments delete github-svc-attachment-https --region=$region -q
gcloud compute forwarding-rules delete producer-github-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 github-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
12. מזל טוב
כל הכבוד, הגדרתם בהצלחה את הקישוריות ל-GitHub ואומתה באמצעות מסוף Looker שמופעל על ידי Private Service Connect.
יצרתם את התשתית של היצרן, למדתם איך ליצור NEG באינטרנט, שירות Producer ונקודת קצה של Looker PSC שאפשרו קישוריות לשירות של Producer.
Cosmopup חושב שהקורסים של Codelab הם מדהימים!!
מה השלב הבא?
כדאי לעיין בחלק מהקורסים האלה ב-Codelab…
- שימוש ב-Private Service Connect כדי לפרסם ולצרוך שירותים
- התחברות לשירותים מקומיים באמצעות Networking היברידי באמצעות Private Service Connect ומאזן עומסים פנימי של TCP Proxy
- גישה לכל הקוד של Private Service Connect שפורסמו