גישה לממשקי Google API גלובליים דרך נקודות קצה (endpoints)

במאמר הזה מוסבר איך להשתמש בנקודות קצה של Private Service Connect כדי להתחבר לממשקי Google APIs גלובליים. במקום לשלוח בקשות API לכתובות ה-IP שזמינות באופן ציבורי של נקודות קצה (endpoints) של שירותים כמו storage.googleapis.com, אתם יכולים לשלוח את הבקשות לכתובת ה-IP הפנימית של נקודת קצה.

אתם יכולים גם להשתמש ב-Private Service Connect כדי לגשת לשירותים ברשת VPC אחרת ולפרסם שירותים.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לניהול נקודות קצה (endpoints) שניגשות לממשקי Google API גלובליים, בקשו מהאדמין לתת לכם את התפקידים הבאים ב-IAM:

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

התפקידים המוגדרים מראש האלו מכילים את ההרשאות שנדרשות כדי לנהל נקודות קצה (endpoints) שניגשות לממשקי Google API גלובליים. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

כדי לנהל נקודות קצה (endpoints) שניגשות לממשקי Google API גלובליים, נדרשות ההרשאות הבאות:

  • כדי ליצור, להציג ולמחוק נקודות קצה:
    • ‫compute.networks.use בפרויקט
    • ‫compute.subnetworks.use בפרויקט
    • ‫compute.addresses.createInternal בפרויקט
    • ‫compute.addresses.deleteInternal בפרויקט
    • ‫compute.addresses.get בפרויקט
    • ‫compute.addresses.list בפרויקט
    • ‫compute.addresses.use בפרויקט
    • ‫compute.forwardingRules.create בפרויקט
    • ‫compute.forwardingRules.delete בפרויקט
    • ‫compute.forwardingRules.get בפרויקט
    • ‫compute.forwardingRules.list בפרויקט
    • ‫compute.forwardingRules.pscCreate בפרויקט
    • ‫compute.forwardingRules.pscDelete בפרויקט
    • ‫compute.regionOperations.get בפרויקט
    • ‫servicedirectory.namespaces.create בפרויקט
    • ‫servicedirectory.namespaces.delete בפרויקט
    • ‫servicedirectory.services.create בפרויקט
    • ‫servicedirectory.services.delete בפרויקט
  • כדי להגדיר רשומות DNS לנקודת קצה באופן אוטומטי או ידני:
    • ‫dns.managedZones.create בפרויקט
    • ‫dns.managedZones.delete בפרויקט
    • ‫dns.networks.bindPrivateDNSZone בפרויקט
    • ‫servicedirectory.namespaces.associatePrivateZone בפרויקט
  • כדי להיכנס לדף Private Service Connect במסוף Google Cloud :
    • ‫compute.forwardingRules.list בפרויקט
    • ‫compute.globalForwardingRules.list בפרויקט
    • ‫compute.networkEndpointGroups.list בפרויקט
    • ‫compute.regionNetworkEndpointGroups.list בפרויקט
    • ‫compute.urlMaps.list בפרויקט
    • ‫compute.backendService.list בפרויקט
    • ‫compute.regionBackendService.list בפרויקט
    • ‫compute.backendBucket.list בפרויקט
    • ‫compute.targetHttpProxy.list בפרויקט
    • ‫compute.targetHttpsProxy.list בפרויקט
    • ‫compute.regionTargetTcpProxy.list בפרויקט
    • ‫compute.targetTcpProxy.list בפרויקט
    • ‫compute.targetSslProxy.list בפרויקט
    • ‫compute.sslCertificate.list בפרויקט
    • ‫compute.sslPolicy.list בפרויקט
    • ‫compute.regionHealthCheck.list בפרויקט
    • ‫compute.healthCheck.list בפרויקט
    • ‫compute.httpHealthCheck.list בפרויקט
    • ‫compute.httpsHealthCheck.list בפרויקט

יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

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

  • למידע נוסף, כולל הגדרות DNS ומגבלות, קראו את המאמר מידע על התחברות לממשקי Google API באמצעות נקודות קצה.

  • צריך להפעיל בפרויקט את ממשקי ה-API הבאים:

    אם בדף הספרייה של ה-API במסוף Google Cloud מופיע הלחצן Manage, סימן שה-API מופעל. אם מופיע הכפתור Enable, ה-API לא מופעל וצריך ללחוץ על הכפתור Enable כדי להפעיל אותו.

  • צריך לבחור כתובת IP לשימוש בנקודת הקצה. במאמר דרישות לגבי כתובות IP מוסבר באילו כתובות IP אפשר להשתמש.

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

  • כדי לגשת ל-Google APIs ולשירותים של Google באמצעות נקודת קצה, מכונות וירטואליות (VM) שלא הוקצתה להן כתובת IP חיצונית צריכות להשתמש ברשת משנה שמופעלת בה גישה פרטית ל-Google.

    מכונה וירטואלית עם כתובת IP חיצונית יכולה לגשת ל-Google APIs ולשירותים של Google באמצעות נקודות קצה, גם אם הגישה הפרטית ל-Google מושבתת ברשת המשנה שלה. הקישוריות לנקודת הקצה נשארת בתוך הרשת של Google.

  • אם ברשת ה-VPC אין נקודות קצה, צריך לבדוק אם קיים אזור פרטי ב-Cloud DNS בשביל p.googleapis.com. אם האזור קיים, צריך למחוק אותו לפני שיוצרים את נקודת הקצה. אם לא תמחקו אותו, לא תוכלו ליצור את תחום ה-DNS של Service Directory שמשמש ל-Private Service Connect. מידע נוסף זמין במאמר פתרון בעיות.

  • אי אפשר לגשת לנקודות הקצה מרשתות VPC מקושרות.

הפעלת גישה פרטית ל-Google בתת-רשת

מכונות וירטואליות שלא הוקצתה להן כתובת IP חיצונית צריכות להיות מחוברות לרשת משנה שמופעלת בה גישה פרטית ל-Google, כדי לגשת ל-Google APIs ולשירותים של Google באמצעות נקודת קצה.

אם למכונה הווירטואלית יש יותר מממשק אחד, מחברים את הממשק שמוגדר עם מסלול ברירת מחדל (בדרך כלל nic0).

כתובת ה-IP של המקור של חבילות הנתונים שנשלחות מהמכונה הווירטואלית צריכה להיות זהה לכתובת ה-IPv4 הפנימית הראשית של הממשק של המכונה הווירטואלית, או לכתובת IPv4 פנימית מטווח כתובות IP חלופיות.

כדי להפעיל גישה פרטית ל-Google ברשת משנה, פועלים לפי השלבים הבאים.

המסוף

  1. במסוף Google Cloud , נכנסים לדף רשתות VPC.

    כניסה לדף VPC networks

  2. לוחצים על שם הרשת שמכילה את רשת המשנה שבה רוצים להפעיל את הגישה הפרטית ל-Google.

  3. לוחצים על השם של רשת המשנה. הדף Subnet details ייפתח.

  4. לוחצים על Edit.

  5. בקטע גישה פרטית ל-Google, בוחרים באפשרות On.

  6. לוחצים על Save.

gcloud

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

    gcloud compute networks subnets list --filter=NETWORK_NAME
    
  2. מריצים את הפקודה הבאה כדי להפעיל את הגישה הפרטית ל-Google:

    gcloud compute networks subnets update SUBNET_NAME \
    --region=REGION \
    --enable-private-ip-google-access
    
  3. מריצים את הפקודה הבאה כדי לוודא שהגישה הפרטית ל-Google מופעלת:

    gcloud compute networks subnets describe SUBNET_NAME \
    --region=REGION \
    --format="get(privateIpGoogleAccess)"
    

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

  • ‫SUBNET_NAME: השם של רשת המשנה
  • ‫REGION: האזור של רשת המשנה
  • ‫NETWORK_NAME: השם של רשת ה-VPC שמכילה את רשת המשנה

Terraform

אפשר להשתמש במשאב של Terraform כדי להפעיל גישה פרטית ל-Google ברשת משנה.

resource "google_compute_network" "network" {
  project                 = var.project # Replace this with your project ID in quotes
  name                    = "tf-test"
  auto_create_subnetworks = false
}

resource "google_compute_subnetwork" "vpc_subnetwork" {
  project                  = google_compute_network.network.project
  name                     = "test-subnetwork"
  ip_cidr_range            = "10.2.0.0/16"
  region                   = "us-central1"
  network                  = google_compute_network.network.id
  private_ip_google_access = true
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

יצירת נקודת קצה (endpoint)

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

נקודת קצה מתחברת לממשקי ה-API ולשירותים של Google באמצעות כלל העברה גלובלי. כל כלל העברה נספר במכסה לכל רשת VPC של Private Service Connect.

אי אפשר לעדכן נקודת קצה לממשקי API ולשירותים של Google אחרי שהיא נוצרה. אם אתם צריכים לעדכן נקודת קצה לממשקי API ולשירותים של Google, מחקו את נקודת הקצה וצרו אחת חדשה.

המסוף

  1. נכנסים לדף Private Service Connect במסוף Google Cloud .

    כניסה ל-Private Service Connect

  2. לוחצים על הכרטיסייה נקודות קצה מחוברות.

  3. לוחצים על Connect endpoint.

  4. בשדה Target, בוחרים את חבילת ה-API לטירגוט שבה רוצים להשתמש:

    • כל ממשקי ה-API של Google
    • VPC-SC
  5. בשדה Endpoint name, נותנים שם לנקודת הקצה.

  6. בוחרים רשת לנקודת הקצה.

  7. בוחרים כתובת IP לנקודת הקצה.

    כתובת ה-IP צריכה לעמוד בדרישות האלה.

    אם אתם צריכים כתובת IP חדשה, אתם יכולים ליצור אחת:

    1. לוחצים על יצירת כתובת IP.
    2. מזינים שם ותיאור לכתובת ה-IP.
    3. מזינים את כתובת ה-IP שבה רוצים להשתמש ולוחצים על שמירה.
  8. אם עדיין לא הוגדר אזור של Service Directory לרשת ה-VPC הזו, בוחרים את האזור שבו רוצים להשתמש.

    כל נקודות הקצה שמשמשות לגישה ל-Google APIs ולשירותים של Google ברשת VPC מסוימת משתמשות באותו אזור של Service Directory.

  9. אם עדיין לא הוגדר מרחב שמות של Service Directory לרשת ה-VPC הזו, מגדירים את מרחב השמות שבו רוצים להשתמש:

    • כדי להשתמש במרחב שמות שהוקצה באופן אוטומטי, לוחצים על התפריט Namespace ובוחרים את מרחב השמות שהוקצה באופן אוטומטי.

    • כדי לבחור מרחב שמות קיים שמשמש ברשת אחרת, לוחצים על התפריט הנפתח Namespace ובוחרים מרחב שמות מהרשימה. ברשימה מוצגים כל מרחבי השמות בפרויקט. צריך לבחור מרחב שמות שמשמש רק לנקודות קצה שמשמשות לגישה ל-Google APIs.

    • כדי ליצור מרחב שמות חדש, לוחצים על התפריט הנפתח Namespace ואז על Create namespace. מזינים את מרחב השמות ולוחצים על Create.

      כל נקודות הקצה שמשמשות לגישה ל-Google APIs ולשירותים של Google ברשת VPC מסוימת משתמשות באותו מרחב שמות של Service Directory.

  10. לוחצים על הוספת נקודת קצה.

gcloud

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

    gcloud compute addresses create ADDRESS_NAME \
        --global \
        --purpose=PRIVATE_SERVICE_CONNECT \
        --addresses=ENDPOINT_IP \
        --network=NETWORK_NAME
    

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

    • ‫ADDRESS_NAME: השם שרוצים להקצות לכתובת ה-IP השמורה.

    • ‫ENDPOINT_IP: כתובת ה-IP שצריך להקצות לנקודת הקצה.

      כתובת ה-IP צריכה לעמוד בדרישות האלה.

    • ‫NETWORK_NAME: השם של רשת ה-VPC של נקודת הקצה.

  2. יוצרים כלל העברה כדי לקשר את נקודת הקצה לממשקי ה-API ולשירותים של Google. הדגל --service-directory-registration הוא אופציונלי. אם לא תציינו מרחב שמות, המערכת תשתמש במרחב שמות קיים, ואם אין מרחבי שמות קיימים, היא תקצה מרחב שמות שנוצר על ידי המערכת.

    gcloud compute forwarding-rules create ENDPOINT_NAME \
        --global \
        --network=NETWORK_NAME \
        --address=ADDRESS_NAME \
        --target-google-apis-bundle=API_BUNDLE \
        --service-directory-registration=REGION_NAMESPACE_URI
    

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

    • ‫ENDPOINT_NAME: השם שרוצים להקצות לנקודת הקצה. השם צריך להיות מחרוזת של 1-20 תווים, שמכילה רק אותיות קטנות ומספרים. השם חייב להתחיל באות.

    • ‫NETWORK_NAME: השם של רשת ה-VPC של נקודת הקצה.

    • ‫ADDRESS_NAME: השם של הכתובת השמורה ברשת המשויכת.

    • ‫API_BUNDLE: חבילת ממשקי ה-API שיהיו זמינים באמצעות נקודת הקצה. לרשימת ממשקי ה-API הנתמכים

      • כדי לתת גישה לכל ממשקי ה-API הנתמכים, משתמשים ב-all-apis.

      • משתמשים ב-vpc-sc כדי להגביל את הגישה לממשקי Google API שתומכים ב-VPC Service Controls.

    • ‫REGION_NAMESPACE_URI: ה-URI של האזור או מרחב השמות של Service Directory שבו רוצים להשתמש. ה-URI הזה חייב להפנות לאותו פרויקט שבו אתם יוצרים את נקודת הקצה.

      • אפשר להגדיר אזור רק באמצעות projects/PROJECT_NAME/locations/REGION.

      • אפשר להגדיר אזור ומרחב שמות באמצעות projects/PROJECT_NAME/locations/REGION/namespaces/NAMESPACE.

        אם משמיטים את --service-directory-registration לגמרי, או מגדירים אזור בלי מרחב שמות, קורה הדבר הבא:

        • אם כבר הוגדר אזור או מרחב שמות לרשת ה-VPC הזו, המערכת תשתמש בברירות המחדל האלה.

        • אם לא מגדירים אזור, הוא מוגדר כ-us-central1. אם לא מגדירים מרחב שמות, המערכת מקצה מרחב שמות שנוצר על ידי המערכת.

API

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
    
    {
      "name": ADDRESS_NAME,
      "address": ENDPOINT_IP,
      "addressType": "INTERNAL",
      "purpose": PRIVATE_SERVICE_CONNECT,
      "network": NETWORK_URL
    }
    

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

    • PROJECT_ID: מזהה הפרויקט.

    • ‫ADDRESS_NAME: השם שרוצים להקצות לכתובת ה-IP השמורה.

    • ‫ENDPOINT_IP: כתובת ה-IP שצריך להקצות לנקודת הקצה.

      כתובת ה-IP צריכה לעמוד בדרישות האלה.

    • ‫NETWORK_URL: רשת ה-VPC של נקודת הקצה.

  2. יוצרים כלל העברה כדי לקשר את נקודת הקצה לממשקי ה-API ולשירותים של Google. האובייקט serviceDirectoryRegistrations הוא אופציונלי. אם לא תציינו אותו, המערכת תשתמש מחדש במרחב שמות קיים, ואם אין מרחבי שמות קיימים, היא תקצה מרחב שמות שנוצר על ידי המערכת.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT/global/forwardingRules
    
    {
      "name": "ENDPOINT_NAME",
      "IPAddress": "projects/PROJECT/global/addresses/ADDRESS_NAME",
      "network": "projects/PROJECT/global/networks/NETWORK",
      "target": "API_BUNDLE",
      "serviceDirectoryRegistrations": [
        {
          "service_directory_region": REGION,
          "namespace": "NAMESPACE"
        }
      ],
    }
    

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

    • PROJECT: מזהה הפרויקט.

    • ‫ENDPOINT_NAME: השם שרוצים להקצות לנקודת הקצה. השם צריך להיות מחרוזת של 1-20 תווים, שמכילה רק אותיות קטנות ומספרים. השם חייב להתחיל באות.

    • ‫NETWORK: רשת ה-VPC של נקודת הקצה.

    • ‫ADDRESS_NAME: השם של הכתובת השמורה ברשת המשויכת.

    • ‫API_BUNDLE: חבילת ממשקי ה-API שיהיו זמינים באמצעות נקודת הקצה. לרשימת ממשקי ה-API הנתמכים

      • כדי לתת גישה לכל ממשקי ה-API הנתמכים, משתמשים ב-all-apis.

      • משתמשים ב-vpc-sc כדי להגביל את הגישה לממשקי Google API שתומכים ב-VPC Service Controls.

    • ‫REGION: האזור של Service Directory שבו רוצים להשתמש. לדוגמה, us-central1. אם משמיטים את REGION וכבר הוגדר אזור לרשת ה-VPC הזו, המערכת תשתמש באזור הזה. אם לא מגדירים אזור, הוא מוגדר כ-us-central1.

    • ‫NAMESPACE: השם של מרחב השמות של Service Directory שבו רוצים להשתמש. אם משמיטים את NAMESPACE, וכבר מוגדר מרחב שמות לרשת ה-VPC הזו, המערכת משתמשת במרחב השמות הזה. אם לא מגדירים מרחב שמות, המערכת מקצה מרחב שמות שנוצר על ידי המערכת.

Terraform

כדי ליצור נקודת קצה, אתם יכולים להשתמש במשאבים הבאים של Terraform:

resource "google_compute_global_address" "default" {
  project      = google_compute_network.network.project
  name         = "global-psconnect-ip"
  address_type = "INTERNAL"
  purpose      = "PRIVATE_SERVICE_CONNECT"
  network      = google_compute_network.network.id
  address      = "10.3.0.5"
}
resource "google_compute_global_forwarding_rule" "default" {
  project               = google_compute_network.network.project
  name                  = "globalrule"
  target                = "all-apis"
  network               = google_compute_network.network.id
  ip_address            = google_compute_global_address.default.id
  load_balancing_scheme = ""
}

איך לוודא שנקודת הקצה פועלת

יוצרים מכונה וירטואלית ברשת ה-VPC שבה מוגדר Private Service Connect. מריצים את הפקודה הבאה ב-VM כדי לוודא שנקודת הקצה של Private Service Connect פועלת. נקודות הקצה (endpoints) לא מגיבות לבקשות פינג (ICMP).

curl -v ENDPOINT_IP/generate_204

מחליפים את ENDPOINT_IP בכתובת ה-IP של נקודת הקצה.

אם נקודת הקצה פועלת, יופיע קוד תגובה 204 של HTTP.

לראות רשימה של נקודות הקצה

אתם יכולים להציג את כל נקודות הקצה שהוגדרו.

המסוף

  1. נכנסים לדף Private Service Connect במסוף Google Cloud .

    כניסה ל-Private Service Connect

  2. לוחצים על הכרטיסייה נקודות קצה מחוברות.

    נקודות הקצה מוצגות.

gcloud

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

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

NAME  REGION  IP_ADDRESS  IP_PROTOCOL  TARGET
RULE          IP          TCP          all-apis

קבלת מידע על נקודת קצה (endpoint)

אתם יכולים לראות את כל פרטי ההגדרות של נקודת קצה.

המסוף

  1. נכנסים לדף Private Service Connect במסוף Google Cloud .

    כניסה ל-Private Service Connect

  2. לוחצים על הכרטיסייה נקודות קצה מחוברות.

    נקודות הקצה (endpoint) מוצגות.

  3. לוחצים על נקודת הקצה שרוצים לראות את הפרטים שלה.

gcloud

gcloud compute forwarding-rules describe \
    ENDPOINT_NAME --global

הוספת תווית לנקודת קצה (endpoint)

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

מחיקה של נקודת קצה (endpoint)

אתם יכולים למחוק נקודת קצה (endpoint).

המסוף

  1. נכנסים לדף Private Service Connect במסוף Google Cloud .

    כניסה ל-Private Service Connect

  2. לוחצים על הכרטיסייה נקודות קצה מחוברות.

  3. בוחרים את נקודת הקצה שרוצים למחוק ולוחצים על Delete.

gcloud

    gcloud compute forwarding-rules delete \
        ENDPOINT_NAME --global

מחליפים את ENDPOINT_NAME בשם של נקודת הקצה שרוצים למחוק.

שימוש בנקודת קצה (endpoint)

כדי להשתמש בנקודת קצה, שולחים בקשות לשם מארח ב-DNS שמתורגם לכתובת ה-IP של נקודת הקצה.

  • אתם יכולים להשתמש בשמות ה-DNS של p.googleapis.com שנוצרו באופן אוטומטי אם אתם יכולים להגדיר את הלקוחות כך שישתמשו בנקודת קצה (endpoint) מותאמת אישית, ואם נוצרו רשומות DNS של p.googleapis.com בשביל ממשקי ה-API והשירותים שבהם אתם רוצים להשתמש. מידע נוסף זמין במאמר שימוש בשמות DNS של p.googleapis.com.

    לדוגמה, אם שם נקודת הקצה הוא xyz, רשומות ה-DNS נוצרות בשביל storage-xyz.p.googleapis.com,‏ compute-xyz.p.googleapis.com וממשקי API נפוצים אחרים בחבילת ה-API.

  • אתם יכולים ליצור רשומות DNS באמצעות שמות ברירת המחדל של DNS אם אתם משתמשים בלקוח שלא הוגדר לשימוש בנקודת קצה מותאמת אישית, או אם לא קיימת רשומת DNS מסוג p.googleapis.com לשירות שבו אתם רוצים להשתמש. למידע נוסף, קראו את המאמר יצירת רשומות DNS באמצעות שמות DNS שמוגדרים כברירת מחדל.

    לדוגמה, יוצרים רשומות DNS בשביל *.googleapis.com או *.pkg.dev.

שימוש בשמות DNS של p.googleapis.com

כשיוצרים נקודת קצה, Service Directory יוצר רשומות DNS לממשקי API ולשירותים נפוצים שזמינים באמצעות נקודת הקצה. רשומות DNS נוצרות רק לממשקי API ולשירותים שיש להם שמות DNS שמוגדרים כברירת מחדל ומסתיימים ב-googleapis.com, ורק לקבוצת משנה של ממשקי ה-API והשירותים האלה.

רשומות ה-DNS נוצרות באזור פרטי של p.googleapis.com. הרשומות מפנות לכתובת ה-IP של נקודת הקצה, והן בפורמט הבא: SERVICE-ENDPOINT.p.googleapis.com.

לדוגמה, אם שם נקודת הקצה הוא xyz, רשומות ה-DNS נוצרות בשביל storage-xyz.p.googleapis.com, compute-xyz.p.googleapis.com וממשקי API נתמכים אחרים.

לקוחות שאפשר להגדיר אותם לשימוש בנקודת קצה בהתאמה אישית יכולים להשתמש בשמות ה-DNS של p.googleapis.com כדי לשלוח בקשות לנקודת קצה.

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

  • ‫Python: אפשר להגדיר את api_endpoint ב-Client options.

  • ‫Go: אפשר להגדיר את WithEndpoint ב-ClientOptions.

  • ‫‎.NET: אפשר להגדיר את Endpoint במחלקת ה-builder של הלקוח.

  • ‫Java: אפשר להגדיר את setEndpoint במחלקת ההגדרות של הלקוח.

  • ‫gcloud: אפשר להגדיר את api_endpoint_overrides ב- ה-CLI של gcloud.

יצירת רשומות DNS באמצעות שמות DNS שמוגדרים כברירת מחדל

אתם צריכים ליצור רשומות DNS כדי להפנות את שמות ברירת המחדל של ה-DNS לממשקי API ולשירותים לנקודת הקצה שלכם במקרים הבאים:

  • אי אפשר להגדיר את הלקוח או האפליקציה כך שישתמשו בשם DNS של p.googleapis.com.

  • אתם צריכים לגשת לשירות נתמך, אבל אין שם DNS שנוצר באופן אוטומטי ב-p.googleapis.com בשביל השירות הזה.

כדי ליצור רשומות DNS שמפנות לנקודת הקצה של Private Service Connect, צריך לפעול לפי ההוראות הבאות:

  1. יוצרים תחום DNS לדומיין שבו אתם צריכים להשתמש (לדוגמה, googleapis.com או pkg.dev). כדאי לשקול ליצור תחום פרטי ב-Cloud DNS למטרה הזו.

  2. בתחום ה-DNS הזה:

    1. יוצרים רשומת A לשם הדומיין (האזור) עצמו, לדוגמה googleapis.com או pkg.dev. מפנים את רשומת ה-A הזו לכתובת ה-IP של נקודת הקצה. אם אתם משתמשים ב-Cloud DNS, קראו את המאמר הוספת רשומה.

    2. יוצרים רשומת CNAME לכל שמות המארחים האפשריים של הדומיין הנוסף, באמצעות כוכבית ונקודה ואחריהן שם הדומיין (האזור). לדוגמה, *.googleapis.com או *.pkg.dev. מפנים את הרשומה CNAME הזו לרשומה A באותו אזור. לדוגמה, הפניית *.googleapis.com אל googleapis.com או הפניית *.pkg.dev אל pkg.dev.

גישה לנקודת הקצה מרשתות היברידיות

לקוחות ברשתות שמחוברות ל- Google Cloud באמצעות צירופים ל-VLAN בשביל Cloud Interconnect או מנהרות Cloud VPN יכולים להגיע לנקודות קצה של Private Service Connect.

  • נקודת הקצה של Private Service Connect צריכה להיות ברשת ה-VPC שמחוברת לרשת השנייה.

  • ברשת השנייה צריכים להיות נתיבים מתאימים לנקודת הקצה. מגדירים פרסום ניתוב בהתאמה אישית של Cloud Router כדי להודיע על מסלולים לנקודת הקצה בסשן ה-BGP שמנהל את המסלולים של מנהרת Cloud VPN או של הצירוף ל-VLAN.

    • אם ברשת השנייה נעשה שימוש בניתוב מסוג ECMP (ניתוב מרובה נתיבים בעלות שווה) כדי להפיץ את התנועה לנקודות הקצה של Private Service Connect, אתם צריכים לוודא שכל החבילות של חיבור TCP יחיד מנותבות דרך אותה מנהרת Cloud VPN או אותו צירוף ל-VLAN. אם חבילות של חיבור TCP שנוצר מנותבות בכמה נתיבים, יכול להיות שיהיו איפוסים (RST) של TCP לסירוגין. כדי למנוע איפוסים, צריך להגדיר את הנתבים המקבילים המקומיים כך שישמרו על יעדים עקביים של הצעד הבא.
  • צריך להגדיר מערכות ברשת האחרת כדי לבצע שאילתות לתחומי ה-DNS הפרטיים. אם הטמעתם את תחומי ה-DNS הפרטיים באמצעות Cloud DNS, בצעו את השלבים הבאים:

פתרון בעיות

בקטעים הבאים מוסבר איך לפתור בעיות בנקודות קצה של Private Service Connect שמשמשות לגישה ל-Google APIs.

יצירת תחום DNS פרטי נכשלת

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

  • ‫Cloud DNS API לא מופעל בפרויקט.

  • אין לכם את ההרשאות הנדרשות כדי ליצור תחום DNS של Service Directory.

  • ברשת ה-VPC הזו כבר קיים תחום DNS עם אותו שם.

  • כבר קיים תחום DNS של p.googleapis.com ברשת ה-VPC הזו.

יכול להיות שיש אזורים עם התנגשויות כי המחיקה הקודמת נכשלה.

כדי ליצור את תחום ה-DNS של Service Directory:

  1. מוודאים ש-Cloud DNS API מופעל בפרויקט.

  2. מוודאים שיש לכם את ההרשאות הנדרשות כדי ליצור את תחום ה-DNS של Service Directory:

    • dns.managedZones.create
    • servicedirectory.namespaces.associatePrivateZone
  3. מוחקים את תחום ה-DNS.

  4. יוצרים אזור DNS של Service Directory שמגובה במרחב השמות של Service Directory שמשויך לנקודת הקצה.

    כשיוצרים את האזור, משתמשים בערכים הבאים:

    • ‫Zone name: משתמשים באותו שם אזור שבו המערכת השתמשה בניסיון היצירה שנכשל. בהודעת השגיאה מוצג שם האזור שבו נעשה שימוש.

    • ‫DNS name:‏ p.googleapis.com. (כולל הנקודה בסוף).

    • ‫Service Directory namespace: מאתרים את מרחב השמות של Service Directory לנקודת הקצה של Private Service Connect שיצרתם, ומשתמשים במרחב השמות הזה כשיוצרים את תחום ה-DNS של Service Directory.

    הפורמט של מרחב השמות של Service Directory הוא: goog-psc-NETWORK_NAME-NETWORK_ID.

מחיקה של תחום DNS פרטי נכשלה

כשמוחקים את נקודת הקצה האחרונה ברשת VPC, נמחקת ההגדרה המשויכת של ספריית השירותים, כולל תחום ה-DNS.

המחיקה יכולה להיכשל מהסיבות הבאות:

  • אין לכם את ההרשאות הנדרשות כדי למחוק את תחום ה-DNS.

  • האזור מכיל רשומות DNS שהוגדרו על ידי המשתמש ולא נוצרו על ידי Service Directory.

כדי לפתור את הבעיה:

  1. מוודאים שיש לכם את ההרשאה dns.managedZones.delete. מידע נוסף זמין במאמר בקרת גישה במסמכי התיעוד של Cloud DNS.

  2. מוחקים את תחום ה-DNS.