שימוש ב-Private Service Connect כדי לגשת לפלטפורמת הסוכנים משרת מקומי

מארחים מקומיים יכולים להגיע ל-Agent Platform דרך האינטרנט הציבורי או באופן פרטי דרך ארכיטקטורת רשת היברידית שמשתמשת ב-Private Service Connect ‏(PSC) דרך Cloud VPN או Cloud Interconnect. שתי האפשרויות מציעות הצפנה באמצעות SSL/TLS. עם זאת, האפשרות הפרטית מציעה ביצועים טובים בהרבה, ולכן מומלצת לאפליקציות קריטיות.

במדריך הזה משתמשים ב-High-Availability VPN (HA VPN) כדי לגשת ל-Agent Platform באופן ציבורי, דרך Cloud NAT, ובאופן פרטי, בין שתי רשתות ענן וירטואלי פרטי (VPC) שיכולות לשמש כבסיס לקישוריות פרטית בין סביבות מרובות עננים ובין סביבות מקומיות.

המדריך הזה מיועד לאדמינים של רשתות ארגוניות, למדעני נתונים ולחוקרים שמכירים את פלטפורמת הסוכנים של Gemini Enterprise, את VPC, את Cloud de Confiance המסוף ואת Cloud Shell. היכרות עם Agent Platform יכולה לעזור, אבל היא לא חובה.

תרשים אדריכלי של שימוש ב-Private Service Connect כדי לגשת ל-Agent Platform.

מטרות

  • יוצרים שתי רשתות VPC, כמו שמוצג בתרשים הקודם:
    • הערך 1 (onprem-vpc) מייצג רשת מקומית.
    • השני (vertex-networking-vpc) הוא לגישה ל-API בארכיטקטורת REST של Agent Platform.
  • פריסת שערי HA VPN, מנהרות Cloud VPN ו-Cloud Routers כדי לחבר בין vertex-networking-vpc ל-onprem-vpc.
  • יוצרים נקודת קצה (endpoint) של Private Service Connect ‏(PSC) כדי להעביר בקשות ל-GenAI API בארכיטקטורת REST.
  • מגדירים מסלול מותאם אישית שמוכרז על ידי Cloud Router ב-vertex-networking-vpc כדי להכריז על מסלולים לנקודת הקצה (endpoint) של Private Service Connect אל onprem-vpc.
  • יוצרים מכונה וירטואלית ב-Compute Engine ב-onprem-vpc כדי לייצג אפליקציית לקוח ששולחת בקשות ל-API בארכיטקטורת REST של AI גנרטיבי דרך HA VPN.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Cloud de Confiance by S3NS, והשימוש בהם כרוך בתשלום:

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

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

  1. נכנסים לדף לבחירת הפרויקט במסוף Cloud de Confiance .

    כניסה לדף לבחירת הפרויקט

  2. בוחרים או יוצרים Cloud de Confiance פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
  3. מוודאים שהחיוב מופעל בפרויקט Cloud de Confiance .

  4. אם אתם לא בעלי הפרויקט, בעלי הפרויקט צריכים להקצות לכם את roles/resourcemanager.projectIamAdmin תפקיד ה-IAM. אתם צריכים את התפקיד הזה כדי להקצות לעצמכם ולחשבונות שירות תפקידים והרשאות ב-IAM.
  5. פותחים את Cloud Shell כדי להריץ את הפקודות שמפורטות במדריך הזה. ‫Cloud Shell היא סביבת מעטפת אינטראקטיבית של Cloud de Confiance שמאפשרת לכם לנהל את הפרויקטים והמשאבים שלכם מדפדפן האינטרנט.
  6. ב-Cloud Shell, מגדירים את הפרויקט הנוכחי למזהה הפרויקט Cloud de Confiance by S3NS ומאחסנים את אותו מזהה פרויקט במשתנה shell‏ projectid:
    ‫
      projectid="PROJECT_ID"
      gcloud config set project ${projectid}
    מחליפים את PROJECT_ID במזהה הפרויקט. במקרה הצורך, אפשר לאתר את מזהה הפרויקט במסוף Cloud de Confiance . מידע נוסף זמין במאמר איך מאתרים את מזהה הפרויקט.
  7. מעניקים תפקידים לחשבון המשתמש. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM: roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/iam.serviceAccountCreator, roles/iam.serviceAccountUser, roles/iam.serviceAccountDeleter, roles/resourcemanager.projectIamAdmin, roles/servicedirectory.editor, roles/servicemanagement.quotaAdmin, roles/aiplatform.user

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    מחליפים את מה שכתוב בשדות הבאים:

  8. מפעילים את ממשקי ה-API של DNS,‏ IAM,‏ Compute Engine,‏ Service Usage ו-Agent Platform, אם חלק מהם לא מופעלים כבר:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable dns.googleapis.com iam.googleapis.com compute.googleapis.com serviceusage.googleapis.com aiplatform.googleapis.com

יוצרים שתי רשתות VPC: ‏ vertex-networking-vpc ו-onprem-vpc

בקטע הזה, יוצרים שתי רשתות VPC: אחת שתשמש כרשת הראשית לגישה ל-API של Gemini Enterprise Agent Platform ל-AI גנרטיבי (שנקרא גם GenAI), והשנייה כדי לדמות את הרשת המקומית.

יצירת רשתות VPC

  1. יוצרים את רשת ה-VPC לגישה ל-GenAI API ‏ (vertex-networking-vpc):

    gcloud compute networks create vertex-networking-vpc --subnet-mode custom
    
  2. יוצרים את רשת ה-VPC כדי לדמות את הרשת המקומית (onprem-vpc):

    gcloud compute networks create onprem-vpc --subnet-mode custom
    
  3. ברשת onprem-vpc, יוצרים תת-רשת בשם onprem-vpc-subnet1 עם טווח IPv4 ראשי של 172.16.10.0/24:

    gcloud compute networks subnets create onprem-vpc-subnet1 \
       --range 172.16.10.0/24 \
       --network onprem-vpc \
       --region us-central1
    
  4. במסוף Cloud de Confiance , עוברים לכרטיסייה Networks in current project בדף רשת VPC.

    מעבר לרשת VPC

  5. ברשימת רשתות ה-VPC, מוודאים ששתי הרשתות נוצרו: vertex-networking-vpc ו-onprem-vpc.

  6. בדף VPC network (רשת VPC), לוחצים על הכרטיסייה Subnets in current project (תת-רשתות בפרויקט הנוכחי).

  7. ברשימת תת-הרשתות של ה-VPC, מוודאים שתת-הרשת onprem-vpc-subnet1 נוצרה ברשת onprem-vpc.

הגדרת קישוריות היברידית

בקטע הזה, יוצרים שני שערי HA VPN שמחוברים זה לזה. אחד נמצא ברשת ה-VPC‏ vertex-networking-vpc. השני נמצא ברשת onprem-vpc VPC. כל שער מכיל Cloud Router וצמד מנהרות VPN.

יצירת שערי HA VPN

  1. יוצרים ב-Cloud Shell שער HA VPN לרשת vertex-networking-vpc VPC:

    gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \
       --network vertex-networking-vpc \
       --region us-central1
    
  2. יוצרים את שער HA VPN לרשת ה-VPC‏ onprem-vpc:

    gcloud compute vpn-gateways create onprem-vpn-gw1 \
       --network onprem-vpc \
       --region us-central1
    
  3. במסוף Cloud de Confiance , עוברים לכרטיסייה Cloud VPN Gateways בדף VPN.

    מעבר אל VPN

  4. ברשימת שערים ה-VPN, מוודאים ששני השערים (vertex-networking-vpn-gw1 ו-onprem-vpn-gw1) נוצרו ושלכל אחד מהם יש שתי כתובות IP.

יצירת Cloud Routers

  1. יוצרים Cloud Router ברשת ה-VPC‏ vertex-networking-vpc ב-Cloud Shell:

    gcloud compute routers create vertex-networking-vpc-router1 \
       --region us-central1\
       --network vertex-networking-vpc \
       --asn 65001
    
  2. יוצרים Cloud Router לרשת ה-VPC‏ onprem-vpc:

    gcloud compute routers create onprem-vpc-router1 \
       --region us-central1\
       --network onprem-vpc\
       --asn 65002
    

הוספת שער Cloud NAT לרשת ה-VPC‏ onprem-vpc

בשלב הזה, מוסיפים שער Cloud NAT ל-Cloud Router של רשת ה-VPC‏ onprem-vpc. שער Cloud NAT מספק קישוריות יוצאת למכונות וירטואליות (VM) של Compute Engine שאין להן כתובות IP חיצוניות.

  1. ב-Cloud Shell, מוסיפים שער Cloud NAT ל-Cloud Router‏ onprem-vpc-router1

    gcloud compute routers nats create us-central-cloudnat-onprem \
       --router=onprem-vpc-router1 \
       --auto-allocate-nat-external-ips \
       --nat-all-subnet-ip-ranges \
       --region us-central1
    
  2. נכנסים לדף Cloud Routers במסוף Cloud de Confiance .

    מעבר אל Cloud Routers

  3. ברשימת Cloud Router, מוודאים שנוצרו vertex-networking-vpc-router1 ו-onprem-vpc-router1. יכול להיות שתצטרכו לרענן את כרטיסיית הדפדפן של מסוף Cloud de Confiance by S3NS כדי לראות את הערכים החדשים.

  4. ברשימת Cloud Router, לוחצים על onprem-vpc-router1.

  5. בדף פרטי הנתב, מוודאים ששער us-central-cloudnat-onprem Cloud NAT נוצר.

יצירת מנהרות VPN

  1. ברשת vertex-networking-vpc, יוצרים מנהרת VPN בשם vertex-networking-vpc-tunnel0:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 0
    
  2. ברשת vertex-networking-vpc, יוצרים מנהרת VPN בשם vertex-networking-vpc-tunnel1:

    gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \
       --peer-gcp-gateway onprem-vpn-gw1 \
       --region us-central1 \
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router vertex-networking-vpc-router1 \
       --vpn-gateway vertex-networking-vpn-gw1 \
       --interface 1
    
  3. ברשת onprem-vpc, יוצרים מנהרת VPN בשם onprem-vpc-tunnel0:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 0
    
  4. ברשת onprem-vpc, יוצרים מנהרת VPN בשם onprem-vpc-tunnel1:

    gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \
       --peer-gcp-gateway vertex-networking-vpn-gw1 \
       --region us-central1\
       --ike-version 2 \
       --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
       --router onprem-vpc-router1 \
       --vpn-gateway onprem-vpn-gw1 \
       --interface 1
    
  5. נכנסים לדף VPN במסוף Cloud de Confiance .

    מעבר אל VPN

  6. ברשימת מנהרות ה-VPN, מוודאים שנוצרו ארבע מנהרות VPN.

יצירת סשנים של BGP

‫Cloud Router משתמש בפרוטוקול Border Gateway Protocol ‏ (BGP) כדי להחליף מסלולים בין רשת ה-VPC (במקרה הזה, vertex-networking-vpc) לבין הרשת המקומית (שמיוצגת על ידי onprem-vpc). ב-Cloud Router, מגדירים ממשק ורשת שכנה של BGP לנתב המקומי. הממשק והגדרת עמית BGP יוצרים יחד סשן BGP. בקטע הזה יוצרים שתי סשנים של BGP עבור vertex-networking-vpc ושני סשנים עבור onprem-vpc.

אחרי שמגדירים את הממשקים ואת עמיתי ה-BGP בין הנתבים, הם מתחילים להחליף מסלולים באופן אוטומטי.

יצירת סשנים של BGP עבור vertex-networking-vpc

  1. ב-Cloud Shell, ברשת vertex-networking-vpc, יוצרים ממשק BGP ל-vertex-networking-vpc-tunnel0:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel0-to-onprem \
       --ip-address 169.254.0.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel0 \
       --region us-central1
    
  2. ברשת vertex-networking-vpc, יוצרים קישור בין רשתות שכנות באמצעות BGP למנהרה bgp-onprem-tunnel0:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel0 \
       --interface if-tunnel0-to-onprem \
       --peer-ip-address 169.254.0.2 \
       --peer-asn 65002 \
       --region us-central1
    
  3. ברשת vertex-networking-vpc, יוצרים ממשק BGP ל-vertex-networking-vpc-tunnel1:

    gcloud compute routers add-interface vertex-networking-vpc-router1 \
       --interface-name if-tunnel1-to-onprem \
       --ip-address 169.254.1.1 \
       --mask-length 30 \
       --vpn-tunnel vertex-networking-vpc-tunnel1 \
       --region us-central1
    
  4. ברשת vertex-networking-vpc, יוצרים קישור בין רשתות שכנות באמצעות BGP למנהרה bgp-onprem-tunnel1:

    gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \
       --peer-name bgp-onprem-tunnel1 \
       --interface if-tunnel1-to-onprem \
       --peer-ip-address 169.254.1.2 \
       --peer-asn 65002 \
       --region us-central1
    

יצירת סשנים של BGP עבור onprem-vpc

  1. ברשת onprem-vpc, יוצרים ממשק BGP ל-onprem-vpc-tunnel0:

    gcloud compute routers add-interface onprem-vpc-router1 \
       --interface-name if-tunnel0-to-vertex-networking-vpc \
       --ip-address 169.254.0.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel0 \
       --region us-central1
    
  2. ברשת onprem-vpc, יוצרים קישור בין רשתות שכנות באמצעות BGP למנהרה bgp-vertex-networking-vpc-tunnel0:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel0 \
       --interface if-tunnel0-to-vertex-networking-vpc \
       --peer-ip-address 169.254.0.1 \
       --peer-asn 65001 \
       --region us-central1
    
  3. ברשת onprem-vpc, יוצרים ממשק BGP ל-onprem-vpc-tunnel1:

    gcloud compute routers add-interface onprem-vpc-router1  \
       --interface-name if-tunnel1-to-vertex-networking-vpc \
       --ip-address 169.254.1.2 \
       --mask-length 30 \
       --vpn-tunnel onprem-vpc-tunnel1 \
       --region us-central1
    
  4. ברשת onprem-vpc, יוצרים קישור בין רשתות שכנות באמצעות BGP למנהרה bgp-vertex-networking-vpc-tunnel1:

    gcloud compute routers add-bgp-peer onprem-vpc-router1 \
       --peer-name bgp-vertex-networking-vpc-tunnel1 \
       --interface if-tunnel1-to-vertex-networking-vpc \
       --peer-ip-address 169.254.1.1 \
       --peer-asn 65001 \
       --region us-central1
    

אימות של יצירת סשן BGP

  1. נכנסים לדף VPN במסוף Cloud de Confiance .

    מעבר אל VPN

  2. ברשימת מנהרות ה-VPN, מוודאים שהערך בעמודה BGP session status עבור כל אחת מהמנהרות השתנה מ-Configure BGP session ל-BGP established. יכול להיות שתצטרכו לרענן את כרטיסיית הדפדפן של מסוף Cloud de Confiance by S3NS כדי לראות את הערכים החדשים.

יצירת נקודת הקצה (endpoint) של Private Service Connect ‏(PSC)

בקטע הזה יוצרים נקודת קצה (endpoint) של Private Service Connect ‏(PSC) לממשקי Google APIs, שמופעלים במכונות וירטואליות ברשת onprem-vpc, כדי לגשת אל GenAI API מהרשת onprem-vpc.

נקודת קצה (endpoint) של Private Service Connect ‏(PSC) היא כתובת IP פנימית ברשת onprem-vpc שאפשר לגשת אליה ישירות מלקוחות ברשת הזו. נקודת הקצה הזו נוצרת על ידי פריסת כלל העברה שמפנה תעבורת רשת שתואמת לכתובת ה-IP של נקודת הקצה של PSC לחבילה של Google APIs: באופן ספציפי, לחבילה all-apis.

כתובת ה-IP של נקודת הקצה של PSC‏ (192.168.0.1) תפורסם מ-vertex-networking-vpc-router Cloud Router כנתיב מותאם אישית לפרסום אל הרשת onprem-vpc בשלב מאוחר יותר.

  1. שמירת כתובת IP פנימית גלובלית להקצאה לנקודת הקצה:

    gcloud compute addresses create psc-googleapi-ip \
       --global \
       --purpose=PRIVATE_SERVICE_CONNECT \
       --addresses=192.168.0.1 \
       --network=vertex-networking-vpc
    
  2. יוצרים את נקודת הקצה, יחד עם כלל העברה שמקשר את נקודת הקצה לממשקי API ולשירותים של Google:

    gcloud compute forwarding-rules create pscvertex \
       --global \
       --network=vertex-networking-vpc\
       --address=psc-googleapi-ip \
       --target-google-apis-bundle=all-apis
    
  3. מפרטים את נקודות הקצה של PSC שהוגדרו ומוודאים שנקודת הקצה pscvertex נוצרה:

    gcloud compute forwarding-rules list  \
       --filter target="(all-apis OR vpc-sc)" --global
    
  4. מקבלים את הפרטים של נקודת הקצה של PSC שהוגדרה ומוודאים שכתובת ה-IP היא 192.168.0.1:

    gcloud compute forwarding-rules describe \
       pscvertex --global
    

יצירת פרסום של מסלולים מותאמים אישית עבור vertex-networking-vpc

בקטע הזה, יוצרים מסלול מותאם אישית לפרסום עבור vertex-networking-vpc-router1 (ה-Cloud Router של vertex-networking-vpc) כדי לפרסם את כתובת ה-IP של נקודת הקצה (endpoint) של PSC ברשת onprem-vpc.

  1. נכנסים לדף Cloud Routers במסוף Cloud de Confiance .

    מעבר אל Cloud Routers

  2. ברשימת Cloud Router, לוחצים על vertex-networking-vpc-router1.

  3. בדף פרטי הנתב, לוחצים על עריכה.

  4. בקטע Advertised routes (מסלולים שפורסמו), באפשרות Routes (מסלולים), בוחרים באפשרות Create custom routes (יצירת מסלולים בהתאמה אישית).

  5. מסמנים את תיבת הסימון פרסום כל רשתות המשנה שגלויות ל-Cloud Router כדי להמשיך לפרסם את רשתות המשנה שזמינות ל-Cloud Router. הפעלת האפשרות הזו מדמה את ההתנהגות של Cloud Router במצב ברירת המחדל של פרסום.

  6. לוחצים על הוספת נתיב בהתאמה אישית.

  7. בשדה מקור, בוחרים באפשרות טווח כתובות IP בהתאמה אישית.

  8. בשדה טווח כתובות IP, מזינים את כתובת ה-IP הבאה:

    192.168.0.1
    
  9. בקטע תיאור, מזינים את הטקסט הבא:

    Custom route to advertise Private Service Connect endpoint IP address
    
  10. לוחצים על סיום ואז על שמירה.

מוודאים ש-onprem-vpc למד את המסלולים שמפורסמים

  1. נכנסים לדף Routes במסוף Cloud de Confiance .

    לדף Routes

  2. בכרטיסייה Effective routes (מסלולים אפקטיביים), מבצעים את הפעולות הבאות:

    1. בקטע רשת, בוחרים באפשרות onprem-vpc.
    2. בשדה אזור, בוחרים באפשרות us-central1 (Iowa).
    3. לוחצים על הצגה.
    4. ברשימת המסלולים, מוודאים שיש רשומות שהשמות שלהן מתחילים ב-onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0 וב-onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1, ושבשתי הרשומות האלה טווח כתובות ה-IP של היעד הוא 192.168.0.1/32. ‫(192.168.0.1 היא כתובת ה-IP של נקודת הקצה של PSC).

      אם הרשומות האלה לא מופיעות מיד, צריך לחכות כמה דקות ואז לרענן את כרטיסיית הדפדפן של מסוף Cloud de Confiance by S3NS .

הגדרת מכונה וירטואלית ברשת המקומית

בקטע הזה, יוצרים מכונה וירטואלית ב-Compute Engine ברשת ה-VPC‏ onprem-vpc. המופע של המכונה הווירטואלית מדמה לקוח מקומי שמתחבר לנקודת הקצה של PSC וניגש ל-GenAI API.

יצירה של חשבון שירות שמנוהל על ידי משתמש

במדריך הזה יוצרים חשבון שירות שמנוהל על ידי המשתמשים בהתאם לשיטות המומלצות של Compute Engine ו-IAM.

  1. ב-Cloud Shell, מריצים את הפקודות הבאות ומחליפים את PROJECT_ID במזהה הפרויקט:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. יוצרים את חשבון השירות:

    gcloud iam service-accounts create user-managed-sa
    
  3. מקצים לחשבון השירות את התפקיד משתמש ב-Agent Platform (roles/aiplatform.user) ב-IAM:

    gcloud projects add-iam-policy-binding $projectid \
       --member="serviceAccount:user-managed-sa@$projectid.s3ns.iam.gserviceaccount.com" \
       --role="roles/aiplatform.user"
    

יצירת מופע VM‏ on-prem-client

בשלב הזה יוצרים את המכונה הווירטואלית (VM), שמשתמשת בכתובת ה-IP של Private Service Connect ‏(192.168.0.1) כדי לגשת לממשקי API של Google דרך HA VPN.

כדי לאפשר לשרת proxy לאימות זהויות (IAP) להתחבר למכונות הווירטואליות, צריך ליצור כלל חומת אש ש:

  • רלוונטי לכל מכונות ה-VM שרוצים להפוך לנגישות דרך IAP. (במקרה הזה, יש רק on-prem-client).
  • מאפשר תעבורת TCP דרך יציאה 22 מטווח כתובות ה-IP‏ 35.235.240.0/20. הטווח הזה כולל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.
  1. יוצרים את המכונה הווירטואלית on-prem-client. הפקודה הבאה מתקינה גם את החבילות tcpdump ו-dnsutils, שמכילות את כלי השירות tcpdump ו-dig שבהם תשתמשו בהמשך כדי לאמת את בקשות ה-API:

    gcloud compute instances create on-prem-client \
       --zone=us-central1-a \
       --image-family=debian-11 \
       --image-project=debian-cloud \
       --subnet=onprem-vpc-subnet1 \
       --scopes=https://www.googleapis.com/auth/cloud-platform \
       --no-address \
       --shielded-secure-boot \
       --service-account=user-managed-sa@$projectid.s3ns.iam.gserviceaccount.com \
       --metadata startup-script="#! /bin/bash
          sudo apt-get update
          sudo apt-get install tcpdump dnsutils -y"
    
  2. יוצרים כלל חומת אש של IAP בשם ssh-iap-on-prem-vpc:

    gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
       --network onprem-vpc \
       --allow tcp:22 \
       --source-ranges=35.235.240.0/20
    

אימות גישה לאינטרנט הציבורי ל-Agent Platform

בקטע הזה, מתחברים למופע של מכונת on-prem-client VM באמצעות שרת proxy לאימות זהויות (IAP), ואז מריצים את הפקודה dig מול הדומיין הציבורי של Gemini Enterprise Agent Platform (us-central1-aiplatform.googleapis.com) כדי לאמת את הקישוריות הציבורית לממשקי API של Agent Platform (כולל AI גנרטיבי).

  1. ב-Cloud Shell (כרטיסייה ראשונה), מריצים את הפקודות הבאות ומחליפים את PROJECT_ID במזהה הפרויקט:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  2. מתחברים למכונה הווירטואלית on-prem-client באמצעות IAP:

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  3. מריצים את הפקודה dig:

    dig us-central1-aiplatform.googleapis.com
    

    אמור להופיע פלט dig שדומה לזה, שבו כתובות ה-IP בקטע התשובה הן כתובות IP ציבוריות:

    ; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42506
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;us-central1.aiplatfom.googleapis.com. IN A
    
    ;; ANSWER SECTION:
    us-central1.aiplatfom.googleapis.com. 300 IN A  173.194.192.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.152.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.219.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.146.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.147.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.125.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.136.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.148.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.200.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  209.85.234.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.171.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  108.177.112.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.250.128.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  142.251.6.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  172.217.212.95
    us-central1.aiplatfom.googleapis.com. 300 IN A  74.125.124.95
    
    ;; Query time: 8 msec
    ;; SERVER: 169.254.169.254#53(169.254.169.254)
    ;; WHEN: Wed Sep 27 04:10:16 UTC 2023
    ;; MSG SIZE  rcvd: 321
    

הגדרה ואימות של גישה פרטית ל-Agent Platform

בקטע הזה נסביר איך להגדיר גישה פרטית ל-Agent Platform כדי שכשתשלחו בקשות לנקודת הקצה של השירות הציבורי (us-central1-aiplatform.googleapis.com), הן יופנו מחדש לנקודת הקצה של ה-PSC. נקודת הקצה (endpoint) של PSC מעבירה את הבקשה אל

מעדכנים את הקובץ /etc/hosts כך שיפנה לנקודת הקצה של PSC

בשלב הזה מוסיפים שורה לקובץ /etc/hosts שגורמת להפניה אוטומטית של בקשות שנשלחות לנקודת הקצה של השירות הציבורי (us-central1-aiplatform.googleapis.com) לנקודת הקצה של ה-PSC (192.168.0.1).

  1. בכרטיסייה on-prem-client VM instance (מכונה וירטואלית), משתמשים בכלי לעריכת טקסט כמו vim או nano כדי לפתוח את הקובץ /etc/hosts:

    sudo vim /etc/hosts
    
  2. מוסיפים את השורה הבאה לקובץ:

    192.168.0.1 us-central1-aiplatform.googleapis.com
    

    השורה הזו מקצה את כתובת ה-IP של נקודת הקצה של PSC ‏ (192.168.0.1) לשם הדומיין שמוגדר במלואו של Gemini Enterprise Agent Platform Google API ‏ (us-central1-aiplatform.googleapis.com).

    הקובץ אחרי העריכה אמור להיראות כך:

    127.0.0.1       localhost
    ::1             localhost ip6-localhost ip6-loopback
    ff02::1         ip6-allnodes
    ff02::2         ip6-allrouters
    
    192.168.0.1 us-central1-aiplatform.googleapis.com  # Added by you
    172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client  # Added by Google
    169.254.169.254 metadata.google.internal  # Added by Google
    
  3. שומרים את הקובץ באופן הבא:

    • אם אתם משתמשים ב-vim, לוחצים על המקש Esc ואז מקלידים :wq כדי לשמור את הקובץ ולצאת.
    • אם אתם משתמשים ב-nano, מקלידים Control+O ולוחצים על Enter כדי לשמור את הקובץ, ואז מקלידים Control+X כדי לצאת.
  4. שולחים פינג לנקודת הקצה של Gemini Enterprise Agent Platform באופן הבא:

    ping us-central1-aiplatform.googleapis.com
    

    הפלט הבא אמור להתקבל באמצעות הפקודה ping. ‫192.168.0.1 היא כתובת ה-IP של נקודת הקצה של PSC:

    PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
    
  5. מקלידיםControl+C כדי לצאת מ-ping.

  6. מריצים את הפקודה tcpdump הבאה כדי לאמת את פענוח ה-DNS ואת נתיב הנתונים של כתובת ה-IP כששולחים בקשת חיזוי מיידי לנקודת הקצה:

     sudo tcpdump -i any port 53 -n or host 192.168.0.1
    

יצירת הבקשה הפרטית

בשלב הזה יוצרים קובץ טקסט בשם request.json שמכיל את מטען הייעודי (payload) של בקשת curl לדוגמה ששולחים אל GenAI API בארכיטקטורת REST. מידע נוסף על בקשות לדוגמה זמין במאמר בנושא בקשה לדוגמה.

  1. כשפקודת tcpdump ממשיכה לפעול בכרטיסייה הראשונה, פותחים סשן חדש של Cloud Shell (בכרטיסייה השנייה) בלחיצה על פתיחת כרטיסייה חדשה ב-Cloud Shell.

  2. בסשן החדש של Cloud Shell (כרטיסייה שנייה), מריצים את הפקודות הבאות ומחליפים את PROJECT_ID במזהה הפרויקט:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  3. מתחברים למכונה הווירטואלית on-prem-client באמצעות IAP:

    gcloud compute ssh on-prem-client --project=$projectid --zone=us-central1-a --tunnel-through-iap
    
  4. מריצים את הפקודות הבאות ומחליפים את PROJECT_ID במזהה הפרויקט:

    projectid=PROJECT_ID
    gcloud config set project ${projectid}
    
  5. משתמשים בכלי לעריכת טקסט כמו vim או nano כדי ליצור קובץ חדש בשם request.json שמכיל את הטקסט הבא:

    {
       "contents": [{
          "role": "user",
          "parts": [{
             "text": "Give me ten interview questions for the role of program manager."
          }]
       }]
    }
    
  6. מריצים את הפקודה הבאה כדי לשלוח בקשה לנקודת הקצה של PSC, שמעבירה את הבקשה ל-GenAI API. כשנקודת הקצה מקבלת את התגובה, היא מעבירה אותה בחזרה למכונת ה-on-prem-clientVM‏:

    curl -X POST \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       -H "Content-Type: application/json; charset=utf-8" \
       -d @request.json \
       "https://us-central1-aiplatform.googleapis.com/v1/projects/$projectid/locations/us-central1/publishers/google/models/gemini-2.0-flash-lite:generateContent"
    

    אמורה להופיע תגובה שדומה לדוגמה הבאה:

    {
       "predictions": [
          {
          "content": " 1. **What is your experience in managing programs?**\n2. **What are your strengths and weaknesses as a program manager?**\n3. **What is your approach to managing a program?**\n4. **How do you handle risks and challenges in a program?**\n5. **How do you communicate with stakeholders in a program?**\n6. **How do you measure the success of a program?**\n7. **What is your experience in working with cross-functional teams?**\n8. **What is your experience in managing budgets and resources?**\n9. **What is your experience in managing change in a program?**\n10. **What are your career goals as a program manager?**",
          "citationMetadata": {
             "citations": []
          },
          "safetyAttributes": {
             "categories": [
             "Finance",
             "Health"
             ],
             "blocked": false,
             "scores": [
                0.6,
                0.1
             ]
          }
          }
       ],
       "metadata": {
          "tokenMetadata": {
             "outputTokenCount": {
                "totalBillableCharacters": 505,
                "totalTokens": 153
             },
             "inputTokenCount": {
                "totalBillableCharacters": 54,
                "totalTokens": 12
             }
          }
       }
    }
    
  7. בכרטיסייה הראשונה, מוודאים שכתובת ה-IP של נקודת הקצה של PSC ‏ (192.168.0.1) שימשה לגישה לממשקי API של Agent Platform ממופע המכונה הווירטואלית on-prem-client (רשת המשנה 172.16.10.0/28).

    במסוף tcpdump בכרטיסייה הראשונה של Cloud Shell, אפשר לראות שלא צריך לבצע חיפוש DNS ל-us-central1-aiplatform.googleapis.com, כי השורה שהוספתם לקובץ /etc/hosts מקבלת עדיפות, וכתובת ה-IP של נקודת הקצה של PSC ‏ (192.168.0.1) משמשת בנתיב הנתונים.

    הפלט tcpdump אמור להיראות כך:

    23:48:49.938797 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2054:2093, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 39
    23:48:49.938947 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [P.], seq 2093:2117, ack 6264, win 501, options [nop,nop,TS val 2943864305 ecr 2340789954], length 24
    23:48:49.939839 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [F.], seq 2117, ack 6264, win 501, options [nop,nop,TS val 2943864306 ecr 2340789954], length 0
    23:48:49.940292 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940437 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [F.], seq 6264, ack 2117, win 272, options [nop,nop,TS val 2340789958 ecr 2943864305], length 0
    23:48:49.940442 ens4  Out IP 172.16.10.9.38578 > 192.168.0.1.443: Flags [.], ack 6265, win 501, options [nop,nop,TS val 2943864307 ecr 2340789958], length 0
    23:48:49.941193 ens4  In  IP 192.168.0.1.443 > 172.16.10.9.38578: Flags [.], ack 2118, win 272, options [nop,nop,TS val 2340789959 ecr 2943864306], length 0
    

הסרת המשאבים

כדי להימנע מחיובים בחשבון Cloud de Confiance by S3NS על המשאבים שבהם השתמשתם במדריך הזה, אתם יכולים למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

כדי למחוק את המשאבים הספציפיים בפרויקט, מריצים את הפקודות הבאות ב-Cloud Shell:

   projectid=PROJECT_ID
   gcloud config set project ${projectid}
   gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet
   gcloud compute instances delete on-prem-client --zone=us-central1-a --quiet
   gcloud iam service-accounts delete user-managed-sa@$projectid.s3ns.iam.gserviceaccount.com --quiet
   gcloud compute forwarding-rules delete pscvertex --global --quiet
   gcloud compute addresses delete psc-googleapi-ip --global --quiet
   gcloud compute vpn-tunnels delete vertex-networking-vpc-tunnel0 vertex-networking-vpc-tunnel1 onprem-vpc-tunnel0 onprem-vpc-tunnel1 --region=us-central1 --quiet
   gcloud compute routers nats delete us-central-cloudnat-onprem --router=onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute routers delete vertex-networking-vpc-router1 onprem-vpc-router1 --region=us-central1 --quiet
   gcloud compute vpn-gateways delete vertex-networking-vpn-gw1 onprem-vpn-gw1 --region=us-central1 --quiet
   gcloud compute networks subnets delete onprem-vpc-subnet1 --region=us-central1 --quiet
   gcloud compute networks delete onprem-vpc --quiet
   gcloud compute networks delete vertex-networking-vpc --quiet

המאמרים הבאים