NEG באינטרנט עם SSH באינטרנט ב-Looker PSC

1. מבוא

בקודלאב הזה תבצעו חיבור SSH דרומה ל-GitHub באמצעות מאזן עומסים פנימי של שרת proxy מסוג TCP וקבוצת נקודות קצה של רשת אינטרנט, שתופעל מ-Looker PSC כצרכן שירות.

Private Service Connect הוא יכולת של רשתות Google Cloud שמאפשרת לצרכנים לגשת לשירותים מנוהלים באופן פרטי מתוך רשת ה-VPC שלהם. באופן דומה, היא מאפשרת ליוצרים של שירותים מנוהלים לארח את השירותים האלה ברשתות VPC נפרדות משלהם ולהציע חיבור פרטי לצרכנים שלהם. לדוגמה, כשמשתמשים ב-Private Service Connect כדי לגשת ל-Looker, אתם צרכן השירות ו-Google היא בעלת השירות, כפי שמודגש באיור 1.

איור 1.

145ea4672c3a3b14.png

גישה לדרום ארה"ב, שנקראת גם PSC הפוך, מאפשרת לצרכן ליצור שירות שפורסם בתור Producer כדי לאפשר ל-Looker גישה לנקודות קצה (endpoints) בארגון, ב-VPC, לשירותים מנוהלים ולאינטרנט. אפשר לפרוס חיבורים לכיוון דרום בכל אזור, בלי קשר למיקום הפריסה של Looker PSC, כפי שמוצג באיור 2.

איור 2.

259493afd914f68b.png

מה תלמדו

  • דרישות רשת
  • יצירת שירות מפיק של Private Service Connect
  • יצירת נקודת קצה של Private Service Connect ב-Looker
  • יצירת קישוריות ל-GitHub מ-Looker באמצעות בדיקת חיבור

מה צריך להכין

def88091b42bfe4d.png

2. מה תפַתחו

יוצרים רשת של Producer, Looker-psc-demo, כדי לפרוס מאזן עומסים של שרת Proxy ל-tcp ו-NEG באינטרנט שיפורסם כשירות באמצעות Private Service Connect (PSC). אחרי הפרסום, עליכם לבצע את הפעולות הבאות כדי לאמת את הגישה לשירות של הבעלים:

  • יצירת נקודת קצה (endpoint) של PSC ב-Looker שמשויכת לקובץ המצורף של שירות Producer
  • להשתמש במסוף Looker כדי ליצור פרויקט חדש ולבדוק קישוריות SSH ל-GitHub.com באמצעות התהליך התחברות ל-Git באמצעות SSH

3. דרישות רשת

בהמשך מפורטות הדרישות לרשת של הבעלים. הצרכן בקודלאב הזה הוא מכונה של Looker PSC.

רשת של Producer

רכיבים

תיאור

VPC‏ (looker-psc-demo)

VPC במצב מותאם אישית

תת-רשת NAT של PSC

חבילות מרשת ה-VPC של הצרכן מתרגמות באמצעות NAT מקור (SNAT), כך שכתובות ה-IP המקוריות שלהן מומרות לכתובות IP מקור מתת-הרשת של NAT ברשת ה-VPC של היצרן.

תת-רשת של כללי העברה ב-PSC

משמש להקצאת כתובת IP למאזן עומסים פנימי אזורי בשרתי TCP Proxy

תת-רשת של 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

dfa4dd1d681a66da.png

5. הגדרה ודרישות

הגדרת סביבה בקצב אישי

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן.
  • Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט שלכם (בדרך כלל מזוהה כ-PROJECT_ID). אם המזהה שנוצר לא מוצא חן בעיניכם, אתם יכולים ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות שם משלך ולראות אם הוא זמין. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך הפרויקט.
  • לידיעתך, יש ערך שלישי, Project Number, שבו משתמשים בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי העזרה.
  1. בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא יעלה הרבה כסף, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.

הפעלת Cloud Shell

אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.

במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את ביצועי הרשת ואת האימות. אתם יכולים לבצע את כל העבודה בקודלאב הזה בדפדפן. אין צורך להתקין שום דבר.

6. לפני שמתחילים

הפעלת ממשקי API

ב-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 של יוצר

רשת VPC

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks create looker-psc-demo --subnet-mode custom

יצירת תת-רשתות

רשת המשנה של PSC תשויך לקובץ המצורף לשירות PSC לצורך תרגום כתובת הרשת.

בתוך 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

Inside 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

יוצרים את שער Public 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 Shell, יוצרים את Cloud Router:

gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region

בתוך Cloud Shell, יוצרים את שער Cloud NAT שמאפשר תעבורת נתונים יוצאת (egress) באינטרנט למאזן העומסים של שרת proxy ל-tcp:

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 כ- internet-fqdn-port (שם המארח והיציאה שבהם ניתן להגיע לקצה העורפי החיצוני).

ב-Cloud Shell, יוצרים NEG לאינטרנט שמשמש את github.com

gcloud compute network-endpoint-groups create github-internet-neg-ssh \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

ב-Cloud Shell, מעדכנים את ה-NEG של האינטרנט github-internet-neg-ssh עם ה-FQDN github.com והיציאה 22

gcloud compute network-endpoint-groups update github-internet-neg-ssh \
    --add-endpoint="fqdn=github.com,port=22" \
    --region=$region

יצירת מדיניות חומת אש ברשת וכללי חומת אש

ב-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

הכלל הבא של חומת האש מאפשר תעבורת נתונים מטווח של PSC NAT Subnet לכל המכונות ברשת.

ב-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. יצירת שירות מנוהל

יצירת רכיבים של מאזן עומסים

ב-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-ssh --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=22

יצירת קובץ מצורף לשירות

ב-Cloud Shell, יוצרים את Service Attachment‏, github-svc-attachment-ssh:

gcloud compute service-attachments create github-svc-attachment-ssh --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-ssh

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region

דוגמה לפלט צפוי

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '7557641709467614900'
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-ssh
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr

במסוף Cloud, עוברים אל:

Network Services‏ → Private Service Connect‏ → Published Services

30b1a280966b1f06.png

4eafe698193f5f44.png

9. יצירת חיבור לנקודת קצה (endpoint) של PSC ב-Looker

בקטע הבא תשייכו את הצירוף של שירותי הבעלים ל-PSC של Looker Core באמצעות הדגלים ‎-psc-service-attachment ב-Cloud Shell לדומיין יחיד.

ב-Inside Cloud Shell, יוצרים את השיוך psc על ידי עדכון הפרמטרים הבאים בהתאם לסביבה:

  • INSTANCE_NAME: שם המכונה של Looker (Google Cloud Core).
  • DOMAIN_1: githubssh.com
  • SERVICE_ATTACHMENT_1: URI שתועד בעת תיאור הקובץ המצורף לשירות, github-svc-attachment-ssh.
  • 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=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region

ב-Inside Cloud Shell, מאמתים שהסטטוס של חיבור ה-serviceAttachments הוא 'AcceptED'. עדכון באמצעות INSTANCE_NAME של Looker PSC.

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.14.18",
  "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": "githubssh.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-08-31T20:53:04.824018122Z"
}

אימות נקודת הקצה של PSC במסוף Cloud

אפשר לאמת את החיבור ל-PSC דרך מסוף Cloud

במסוף Cloud, עוברים אל:

Looker ← מופע של Looker ← פרטים

2d4684d722d31e4b.png

db670bb008ea3fc4.png

10. בדיקת הקישוריות ל-GitHub

בשלבים הבאים נעזרים במסוף Looker כדי ליצור פרויקט לאימות קישוריות SSH ל-GitHub.com. לשם כך, מעדכנים את הדומיין github.com ל-githubssh.com בממשק המשתמש של Looker. הפעולה הזו נדרשת רק לחיבורי SSH ל-GitHub.

11. יצירת פרויקט חדש

הפעלת מצב פיתוח

במסוף Looker, עוברים אל:

מפעילים את מצב הפיתוח (בדף הימני התחתון). אחרי הבחירה, יוצג הבאנר 'המצב הנוכחי הוא מצב פיתוח'.

70c9ded749decfbe.png

יצירת פרויקט חדש

במסוף Cloud, עוברים אל:

פיתוח ← פרויקטים

e8ae11e0392a776d.png

בחירת פרויקט חדש של LookML

65a3c2573e97e1e9.png

נותנים שם לפרויקט, בוחרים באפשרות 'פרויקט ריק' ואז לוחצים על 'יצירת פרויקט'.

dbb890960291aa84.png

בוחרים באפשרות Configure Git (הגדרת Git)

42f5e51ce70642ad.png

הגדרת Git

3962a1fe7ac8da77.png

אחרי שבוחרים באפשרות 'המשך', צריך לאמת את כתובת ה-URL של המאגר ואת שירות האירוח של Git.

743e5d963cfe6f82.png

מוסיפים את מפתח הפריסה למאגר ב-GitHub. חשוב לוודא שהענקת הרשאת כתיבה. לאחר העדכון, בוחרים באפשרות 'בדיקה והשלמת ההגדרה'.

4894e0af6421802e.png

בחירת פעולות Git

e87931dbf7e265f3.png

בחירת Test Git Connect

73d90adf267120af.png

אימות בדיקת החיבור ל-Git

f69bc63b9c595aa1.png

12. הסרת המשאבים

מחיקת רכיבי מעבדה ממסוף Cloud Shell אחד

gcloud compute service-attachments delete github-svc-attachment-ssh --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 addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute network-endpoint-groups delete github-internet-neg-ssh --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

13. מזל טוב

מזל טוב, הגדרתם והפעלתם את החיבור ל-GitHub באמצעות Looker Console שמופעל על ידי Private Service Connect.

יצרתם את התשתית של היצרן, למדתם איך ליצור NEG באינטרנט, שירות Producer ונקודת קצה של Looker PSC שאפשרו קישוריות לשירות של Producer.

Cosmopup חושב שהקורסים של Codelab הם מדהימים!!

c911c127bffdee57.jpeg

מה השלב הבא?

כדאי לעיין בחלק מהקורסים האלה ב-Codelab…

קריאה נוספת וסרטונים

מסמכי עזר