גישה לממשקי Google API דרך נקודות קצה

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

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

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

כדי לקבל את ההרשאות שדרושות לניהול נקודות קצה עם גישה ל-Google APIs גלובליים, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

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

כדי לנהל נקודות קצה שנותנות גישה לממשקי 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 בפרויקט

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

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

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

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

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

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

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

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

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

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

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

המסוף

  1. נכנסים לדף VPC networks במסוף Google Cloud .

    מעבר לרשתות VPC

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

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

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

  5. בקטע Private Google Access (גישה פרטית ל-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.

יצירת נקודת קצה

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

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

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

המסוף

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

    כניסה אל Private Service Connect

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      כל נקודות הקצה שבהן אתם משתמשים כדי לגשת לשירותים ולממשקי Google API ברשת 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 של נקודת הקצה.

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

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

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

המסוף

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

    כניסה אל Private Service Connect

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

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

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

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

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

המסוף

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

    כניסה אל Private Service Connect

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

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

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

gcloud

gcloud compute forwarding-rules describe \
    ENDPOINT_NAME --global

הוספת תווית לנקודת קצה

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

מחיקת נקודת קצה

אפשר למחוק נקודת קצה.

המסוף

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

    כניסה אל Private Service Connect

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

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

gcloud

    gcloud compute forwarding-rules delete \
        ENDPOINT_NAME --global

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

שימוש בנקודת קצה

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

  • אתם יכולים להשתמש בשמות ה-DNS שנוצרו באופן אוטומטי p.googleapis.com אם אתם יכולים להגדיר את הלקוחות שלכם לשימוש בנקודת קצה בהתאמה אישית, ואם p.googleapis.com נוצרו רשומות DNS עבור ממשקי ה-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.

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

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

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

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

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

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

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

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

כדי ליצור רשומות DNS שמפנות לנקודת הקצה (endpoint) של 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.

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

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

  • הרשת המקומית שלכם צריכה להיות מחוברת לרשת VPC באמצעות מנהרות Cloud VPN או באמצעות קובצי VLAN לחיבור Cloud Interconnect.

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

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

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

    אם הטמעתם את אזורי ה-DNS הפרטיים באמצעות Cloud DNS, צריך לבצע את השלבים הבאים:

פתרון בעיות

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

יצירת אזור DNS פרטי נכשלת

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

  • לא הפעלתם את Cloud DNS API בפרויקט.

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

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

  • תחום 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 שמשויך לנקודת הקצה.

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

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

    • שם DNS: p.googleapis.com. (כולל הנקודה בסוף).

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

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

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

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

הסיבות האפשריות לכך שהמחיקה נכשלה:

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

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

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

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

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