גישה ל-Google APIs אזוריים דרך נקודות קצה (endpoints)

במאמר הזה מוסבר איך להשתמש בנקודות קצה (endpoints) של Private Service Connect כדי להתחבר לנקודות קצה אזוריות של ממשקי API נתמכים של Google.

מידע על הגדרות אחרות של Private Service Connect זמין במאמר Private Service Connect.

תפקידים

כדי לקבל את ההרשאות שדרושות ליצירת נקודת קצה אזורית של Private Service Connect, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים ברשת ה-VPC:

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

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

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

  1. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

    $ gcloud init

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  2. Enable the Compute Engine, Network Connectivity Center, and Cloud DNS APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  3. בנוסף, צריך להפעיל את ה-API בשירות היעד שאליו רוצים לגשת דרך נקודת הקצה של Private Service Connect. לדוגמה, אם רוצים לגשת אל spanner.me-central2.rep.googleapis.com, צריך להפעיל את Cloud Spanner API. ‫Private Service Connect לא מפעיל אף API באופן אוטומטי.

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

יצירת נקודת קצה אזורית של Private Service Connect

אתם יכולים ליצור נקודת קצה אזורית של Private Service Connect כדי לשלוח בקשות לנקודת קצה אזורית של Google API יעד.

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

המסוף

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

    מעבר אל Private Service Connect

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

  3. בקטע יעד, בוחרים באפשרות Google API.

  4. ברשימה Scope בוחרים באפשרות Regional.

  5. ברשימה Region, בוחרים את האזור שבו רוצים להשתמש.

  6. ברשימה Target service, בוחרים את השירות שרוצים לגשת אליו.

  7. בקטע שם נקודת הקצה, מזינים שם לנקודת הקצה.

  8. בקטע רשת, בוחרים רשת.

  9. בקטע רשת משנה, בוחרים רשת משנה.

  10. בקטע כתובת IP, מבצעים אחת מהפעולות הבאות כדי להגדיר כתובת IP:

    • בוחרים באפשרות הקצאה אוטומטית כדי להקצות ולשריין באופן אוטומטי כתובת IP חדשה.
    • בוחרים כתובת IP שמורה מהרשימה.
    • לוחצים על Create IP address כדי לשמור כתובת IP חדשה.
  11. אופציונלי: כדי להפוך את נקודת הקצה לזמינה מכל האזורים ברשת ה-VPC, בוחרים באפשרות הפעלת גישה גלובלית.

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

gcloud

משתמשים בפקודה gcloud network-connectivity regional-endpoints create.

gcloud network-connectivity regional-endpoints create ENDPOINT_NAME \
    --region=REGION \
    --address=ADDRESS \
    --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \
    --subnetwork=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
    --target-google-api=REP_DNS_NAME

אם רוצים שהנקודה תהיה זמינה למשאבים באזורים אחרים, מוסיפים את הדגל --enable-global-access.

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

  • ENDPOINT_NAME: שם לנקודת הקצה.

  • REGION: האזור שבו רוצים ליצור את נקודת הקצה.

  • ADDRESS: כתובת IPv4 או IPv6 שרוצים להשתמש בה עבור נקודת הקצה. אם לא מציינים כתובת, מוקצית כתובת IPv4 מתת-הרשת. משתמשים באחד מהפורמטים הבאים:

    • כתובת IPv4 – לדוגמה, 10.0.0.2.
    • כתובת URI של משאב כתובת IPv4 או IPv6 – לדוגמה, projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME.
  • PROJECT_ID: הפרויקט שבו יוצרים את נקודת הקצה.

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

  • SUBNET_NAME: תת-הרשת שאליה מחברים את נקודת הקצה.

  • REP_DNS_NAME: שם המארח של נקודת הקצה האזורית של השירות שאליו מתחברים. לדוגמה, spanner.me-central2.rep.googleapis.com.

API

משתמשים בשיטה projects.locations.regionalEndpoints.create.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints?regionalEndpointId=ENDPOINT_NAME
{
  "accessType": "REGIONAL",
  "address": "ADDRESS",
  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
  "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "targetGoogleApi": "REP_DNS_NAME"
}

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

  • PROJECT_ID: מזהה הפרויקט של נקודת הקצה.
  • REGION: האזור שבו רוצים ליצור את נקודת הקצה.
  • ENDPOINT_NAME: שם לנקודת הקצה.
  • ADDRESS: כתובת IPv4 או IPv6 שרוצים להשתמש בה עבור נקודת הקצה. אם לא מציינים כתובת, מוקצית כתובת IPv4 מתת-הרשת. משתמשים באחד מהפורמטים הבאים:
    • כתובת IPv4 – לדוגמה, 10.0.0.2.
    • כתובת URI של משאב כתובת IPv4 או IPv6 – לדוגמה, projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME.
  • NETWORK_NAME: השם של רשת ה-VPC של נקודת הקצה.
  • SUBNET_NAME: השם של תת-הרשת שאליה רוצים לחבר את נקודת הקצה.
  • REP_DNS_NAME: שם המארח של נקודת הקצה האזורית של השירות שאליו רוצים להתחבר. לדוגמה, spanner.me-central2.rep.googleapis.com.

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

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

המסוף

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

    מעבר אל Private Service Connect

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

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

gcloud

משתמשים בפקודה gcloud network-connectivity regional-endpoints list.

gcloud network-connectivity regional-endpoints list \
    --region=REGION

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

API

משתמשים בשיטה projects.locations.regionalEndpoints.list.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints

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

  • PROJECT_ID: מזהה הפרויקט של נקודת הקצה.
  • REGION: האזור של נקודות הקצה שרוצים להציג.

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

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

  • כדי לאמת נקודת קצה של IPv4:

    curl --connect-to REP_DNS_NAME:443:ADDRESS:443 \
    'https://REP_DNS_NAME/PATH'
    
  • כדי לאמת נקודת קצה של IPv6:

    curl -6 --connect-to REP_DNS_NAME:443:[ADDRESS]:443 \
    'https://REP_DNS_NAME/PATH'
    

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

  • REP_DNS_NAME: שם ה-DNS הציבורי של נקודת הקצה האזורית של היעד – לדוגמה, spanner.me-central2.rep.googleapis.com.
  • ADDRESS: כתובת ה-IP של נקודת הקצה.
  • PATH: הנתיב למשאב שהשירות הזה מספק. לדוגמה, שירותים רבים מציעים מסמך Discovery עם הנתיב $discovery/rest?version=v1.

בדוגמה הבאה של בקשה נבדק אם נקודת קצה עם כתובת IP‏ 192.168.1.100 יכולה לבקש את מסמך ה-Discovery של Cloud Spanner API מנקודת הקצה האזורית ב-me-central2.

curl --connect-to spanner.me-central2.rep.googleapis.com:443:192.168.1.100:443 \
'https://spanner.me-central2.rep.googleapis.com/$discovery/rest?version=v1'

יצירת רשומת DNS פרטית לנקודת הקצה

אתם צריכים ליצור רשומות DNS פרטיות כדי שהלקוחות יוכלו להפנות בקשות לנקודת הקצה של Private Service Connect.

מומלץ ליצור אזור פרטי שמשתמש באותו שם מארח כמו נקודת הקצה האזורית של היעד: SERVICE.REGION.rep.DOMAIN ולצור רשומה ראשית באזור הזה.

לדוגמה, אם נקודת הקצה של Private Service Connect היא spanner.me-central2.rep.googleapis.com, צריך ליצור אזור פרטי בשביל spanner.me-central2.rep.googleapis.com שמכיל רשומה ראשית בשביל spanner.me-central2.rep.googleapis.com. יצירת רשומות בנקודת השיא של הדומיין מאפשרת לכם לגשת לשם המארח הציבורי של נקודות קצה אזוריות אחרות – לדוגמה, logging.me-central2.rep.googleapis.com.

בקטעים הבאים מוסבר איך להשתמש ב-Cloud DNS כדי ליצור אזור פרטי ורשומת DNS של דומיין בסיס.

יצירת אזור פרטי

המסוף

  1. במסוף Google Cloud , עוברים לדף יצירת תחום DNS.

    מעבר אל יצירת תחום DNS

  2. בשדה Zone type (סוג האזור), בוחרים באפשרות Private (פרטי).

  3. בשדה Zone name, מזינים שם. לדוגמה, אם נקודת הקצה של Private Service Connect מצביעה על spanner.me-central2.rep.googleapis.com, מזינים spanner-me-central2-rep-googleapis-com.

  4. בשדה DNS name (שם DNS), מציינים את שם המארח של נקודת הקצה האזורית של היעד, ואחריו נקודה. לדוגמה, spanner.me-central2.rep.googleapis.com..

  5. אופציונלי: מוסיפים תיאור.

  6. בקטע אפשרויות, בוחרים באפשרות ברירת מחדל (פרטי).

  7. בוחרים את רשתות ה-VPC שבהן רוצים שהאזור הפרטי יהיה גלוי. רק רשתות ה-VPC שבוחרים מקבלות הרשאה לשלוח שאילתות לגבי רשומות באזור.

  8. לוחצים על יצירה.

gcloud

מריצים את הפקודה dns managed-zones create:

gcloud dns managed-zones create ZONE_NAME \
    --dns-name=REP_DNS_NAME. \
    --networks=VPC_NETWORK_LIST \
    --visibility=private \
    --description="Private zone for REP_DNS_NAME"

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

  • ZONE_NAME: שם לאזור, לדוגמה, spanner-me-central2-rep-googleapis.com.
  • DESCRIPTION: תיאור של האזור
  • REP_DNS_NAME: סיומת ה-DNS של האזור. משתמשים בשם המארח של נקודת הקצה האזורית של היעד, לדוגמה: spanner.me-central2.rep.googleapis.com
  • VPC_NETWORK_LIST: רשימה מופרדת בפסיקים של רשתות VPC שמורשות לשלוח שאילתות לאזור

API

שולחים בקשת POST באמצעות השיטה managedZones.create:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones

תוכן בקשת JSON:

{
  "name": "ZONE_NAME",
  "dnsName": "REP_DNS_NAME.",
  "description": "DESCRIPTION",
  "visibility": "private",
  "privateVisibilityConfig": {
    "kind": "dns#managedZonePrivateVisibilityConfig",
    "networks": [
      {
        "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
        "networkUrl": "NETWORK_1_URL"
      },
      {
        "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
        "networkUrl": "NETWORK_2_URL"
      }
    ]
  }
}

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

  • PROJECT_ID: מזהה הפרויקט של תחום ה-DNS.
  • ZONE_NAME: השם של האזור הפרטי שיצרתם עבור נקודת הקצה האזורית הזו.
  • REP_DNS_NAME: שם הדומיין המוגדר במלואו (FQDN) של הרשומה שיוצרים. צריך להשתמש בשם המארח של נקודת הקצה האזורית של היעד, לדוגמה, spanner.me-central2.rep.googleapis.com.
  • DESCRIPTION: תיאור של תחום ה-DNS.
  • NETWORK_1_URL ו-NETWORK_2_URL: כתובות ה-URL המלאות של רשתות ה-VPC שמורשות לשלוח שאילתות לאזור – לדוגמה, https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME.

הוספת רשומת DNS לאזור

המסוף

  1. נכנסים לדף Cloud DNS zones במסוף Google Cloud .

    מעבר לאזורי Cloud DNS

  2. לוחצים על השם של האזור המנוהל שרוצים להוסיף אליו את הרשומה.

  3. בדף פרטי האזור, לוחצים על הוספת רשומה רגילה.

  4. בדף יצירת סט הרשומות, משאירים את השדה שם DNS ריק. אם משאירים את השדה ריק, נוצרת רשומת משאבים בנקודת השיא של הדומיין.

  5. בשדה Resource record type, בוחרים באפשרות A.

  6. בשדה כתובת IPv4, מזינים או בוחרים את כתובת ה-IP של נקודת הקצה של Private Service Connect.

  7. לוחצים על יצירה.

gcloud

כדי להוסיף קבוצה של רשומות משאבים, משתמשים בפקודה gcloud dns record-sets create:

gcloud dns record-sets create REP_DNS_NAME \
    --rrdatas=ADDRESS \
    --type=RECORD_TYPE \
    --ttl=TTL \
    --zone=ZONE_NAME

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

  • REP_DNS_NAME: שם הדומיין המוגדר במלואו (FQDN) של הרשומה שיוצרים. צריך להשתמש בשם המארח של נקודת הקצה האזורית של היעד, לדוגמה, spanner.me-central2.rep.googleapis.com.
  • ADDRESS: כתובת ה-IP של נקודת הקצה של Private Service Connect.
  • RECORD_TYPE: סוג רשומת ה-DNS, כמו A לרשומות IPv4 או AAAA לרשומות IPv6.
  • TTL: ה-TTL בשניות שבו מפענח ה-DNS שומר במטמון את קבוצת רשומות המשאבים הזו, לדוגמה 300.
  • ZONE_NAME: השם של האזור הפרטי שיצרתם עבור נקודת הקצה האזורית הזו.

API

כדי להוסיף קבוצה של רשומות משאבים, משתמשים ב-method ‏resourceRecordSets.create:

ה-method של ה-HTTP וכתובת ה-URL:

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME/rrsets

תוכן בקשת JSON:

{
  "name": "REP_DNS_NAME.",
  "type": "RECORD_TYPE",
  "ttl": TTL,
  "rrdatas": [ "ADDRESS" ]
}

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

  • PROJECT_ID: מזהה הפרויקט של תחום ה-DNS.
  • ZONE_NAME: השם של האזור הפרטי שיצרתם עבור נקודת הקצה האזורית הזו.
  • REP_DNS_NAME: שם הדומיין המוגדר במלואו (FQDN) של הרשומה שיוצרים. צריך להשתמש בשם המארח של נקודת הקצה האזורית של היעד, לדוגמה, spanner.me-central2.rep.googleapis.com.
  • RECORD_TYPE: סוג רשומת ה-DNS, כמו A לרשומות IPv4 או AAAA לרשומות IPv6.
  • TTL: ה-TTL בשניות שבו מפענח ה-DNS שומר במטמון את קבוצת רשומות המשאבים הזו, לדוגמה 300.
  • ADDRESS: כתובת ה-IP של נקודת הקצה של Private Service Connect.

הגדרת לקוחות לשימוש בשם של נקודת הקצה הפרטית

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

  • Python: אפשר להגדיר את api_endpoint באפשרויות של הלקוח.

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

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

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

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

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

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

gcloud

משתמשים בפקודה gcloud network-connectivity regional-endpoints describe.

gcloud network-connectivity regional-endpoints describe \
    ENDPOINT_NAME --region=REGION

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

  • ENDPOINT_NAME: השם של נקודת הקצה.
  • REGION: האזור של נקודת הקצה.

API

משתמשים בפקודה projects.locations.regionalEndpoints.get.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME

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

  • PROJECT_ID: מזהה הפרויקט של נקודת הקצה.
  • REGION: האזור של נקודות הקצה שרוצים להציג.
  • ENDPOINT_NAME: השם של נקודת הקצה.

עדכון ההגדרה של הגישה הגלובלית

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

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

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

gcloud

משתמשים בפקודה gcloud network-connectivity regional-endpoints delete.

gcloud network-connectivity regional-endpoints delete \
    ENDPOINT_NAME --region=REGION

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

  • ENDPOINT_NAME: השם של נקודת הקצה.
  • REGION: האזור של נקודת הקצה.

API

משתמשים בפקודה projects.location.regionalEndpoints.delete.

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/regionalEndpoints/ENDPOINT_NAME

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

  • PROJECT_ID: מזהה הפרויקט של נקודת הקצה.
  • REGION: האזור של נקודת הקצה.
  • ENDPOINT_NAME: השם של נקודת הקצה.

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

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

  • צירוף ה-VLAN או מנהרת Cloud VPN חייבים להסתיים באותה רשת VPC (או באותה רשת VPC משותפת) כמו נקודת הקצה. לקוחות ברשתות VPC מקושרות לא יכולים להגיע לנקודות קצה.

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

  • יש תמיכה ב-Dataplane v1 וב-Dataplane v2 עבור חיבורי VLAN. מידע נוסף על גרסאות של Dataplane זמין במאמר בנושא Dataplane v2.

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

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