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

בדף הזה מוסבר איך להגדיר קשרי DNS לרשתות רגילות של VMware Engine.

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

  1. איך מוצאים את כתובת ה-IP של שרת ה-DNS של Private Cloud
  2. הגדרת הרשאות DNS bind כדי לאפשר למשתמש ראשי לבצע bind ל-VPC של האינטראנט
  3. הגדרת DNS לעומסי עבודה ב-VMware או הגדרת DNS של DHCP בפלח NSX

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

אפשר להגדיר קשרי DNS רק באמצעות הכלי gcloud או ה-API.

דרישות ל-gcloud ול-API

כדי להשתמש בכלי gcloud של שורת הפקודה או ב-API לניהול המשאבים של VMware Engine, מומלץ להגדיר את הכלים כמו שמתואר בהמשך.

gcloud

  1. מגדירים את מזהה פרויקט ברירת המחדל:

    gcloud config set project PROJECT_ID
    
  2. הגדרת אזור ואזור זמן כברירת מחדל:

    gcloud config set compute/region REGION
    
    gcloud config set compute/zone ZONE
    

מידע נוסף על הכלי gcloud vmware זמין במאמרי העזרה של Cloud SDK.

API

בדוגמאות ל-API שמופיעות במאמרי העזרה האלה נעשה שימוש בכלי שורת הפקודה cURL כדי לשלוח שאילתות ל-API. חובה לציין טוקן גישה תקין כחלק מהבקשה cURL. יש הרבה דרכים לקבל אסימון גישה תקף. בשלבים הבאים נשתמש בכלי gcloud כדי ליצור אסימון גישה:

  1. התחברות אל Google Cloud:

    gcloud auth login
    
  2. כדי ליצור אסימון גישה ולייצא אותו ל-TOKEN:

    export TOKEN=`gcloud auth print-access-token`
    
  3. מוודאים שהאסימון מוגדר בצורה תקינה:

    echo $TOKEN
    

עכשיו אפשר להשתמש בטוקן ההרשאה בבקשות ל-API. לדוגמה:

curl -X GET -H "Authorization: Bearer \"$TOKEN\"" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

בדוגמאות הקוד ב-Python שבמסמך הזה נעשה שימוש בספריית VMware Engine כדי לתקשר עם ה-API. כדי להשתמש בגישה הזו, צריך להתקין את הספרייה ולהגדיר את Application Default Credentials.

  1. מורידים ומתקינים את ספריית Python:

    pip install google-cloud-vmwareengine
    
  2. מגדירים את פרטי ADC על ידי הרצת הפקודות האלה במעטפת:

    gcloud auth application-default login
    

    לחלופין, אפשר להשתמש בקובץ מפתח של חשבון שירות:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

מידע נוסף על הספרייה זמין בדף העזר או בדוגמאות קוד ב-GitHub.

קבלת כתובת IP של שרת DNS של עומס עבודה בענן פרטי

המסוף

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

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

    כניסה ל-Private clouds

  2. לוחצים על Select a project ואז בוחרים את הארגון, התיקייה או הפרויקט שמכילים את הענן הפרטי שאליו רוצים להתחבר.

  3. לוחצים על השם של הענן הפרטי.

  4. בדף סיכום של הענן הפרטי, בקטע שרתי DNS של הענן הפרטי, לוחצים על העתקה כדי להעתיק את כתובת ה-IP של שרת ה-DNS של הענן הפרטי.

gcloud

כדי לקבל את כתובת ה-IP של שרת ה-DNS בענן הפרטי באמצעות Google Cloud CLI, משתמשים בפקודה gcloud vmware private-clouds describe:

 gcloud vmware private-clouds describe PRIVATE_CLOUD_ID \
  --project=PROJECT_ID \
  --location=REGION

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

  • PRIVATE_CLOUD_ID: השם של הענן הפרטי של הבקשה
  • PROJECT_ID: מזהה הפרויקט של הבקשה הזו
  • REGION: האזור של הענן הפרטי. אם מדובר בענן פרטי מורחב, צריך לציין את האזור של הענן הפרטי הזה.

API

כדי לקבל את כתובת ה-IP של שרת ה-DNS של הענן הפרטי באמצעות VMware Engine API, שולחים בקשת GET:

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/privateCloud/PRIVATE_CLOUD_ID"

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

  • PROJECT_ID: מזהה הפרויקט של הבקשה הזו
  • REGION: האזור של הענן הפרטי. אם מדובר בענן פרטי מורחב, צריך לציין את האזור של הענן הפרטי הזה.
  • PRIVATE_CLOUD_ID: השם של הענן הפרטי שמוגדר לבקשה הזו.

הגדרת הרשאות DNS bind

אפשר להגדיר ולנהל הרשאות DNS bind רק באמצעות הכלי gcloud או ישירות באמצעות ה-API בארכיטקטורת REST. אי אפשר להגדיר את הקישורים דרך המסוף.

מתן הרשאת DNS bind

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

gcloud

gcloud vmware dns-bind-permission grant \
  --user=USER \
  --project=PROJECT_ID

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

  • USER: כתובת האימייל של המשתמש שיקשר את אזור ה-DNS הפרטי ל-VPC של האינטראנט, לדוגמה, example1@gmail.com
  • PROJECT_ID: מזהה הפרויקט של הבקשה הזו

API

שולחים בקשת POST ל-method‏ dnsBindPermissions:grant ומזינים את כתובת האימייל של המשתמש בגוף הבקשה.

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:grant -d '
{
"principal": {
  "user": "USER"
}
}'

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

  • PROJECT_ID: הפרויקט של הבקשה הזו.
  • USER: כתובת האימייל של המשתמש שרוצים לבטל את ההרשאות שלו. לדוגמה, example1@gmail.com.

ביטול הרשאת DNS Bind

מבטל את הרשאת ה-DNS Bind שהוענקה למשתמש בעבר.

gcloud

gcloud vmware dns-bind-permission revoke \
  --user=USER \
  --project=PROJECT_ID

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

  • USER: כתובת האימייל של המשתמש שרוצים לבטל את ההרשאות שלו, לדוגמה: example1@gmail.com
  • PROJECT_ID: מזהה הפרויקט של הבקשה הזו

API

שולחים בקשת POST אל dnsBindPermissions:revoke ומציינים את כתובת האימייל של המשתמש בגוף הבקשה.

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:revoke -d '
{
"principal": {
  "user": "USER"
}
}'

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

  • PROJECT_ID: הפרויקט של הבקשה הזו.
  • USER: כתובת האימייל של המשתמש שרוצים לבטל את ההרשאות שלו. לדוגמה, example1@gmail.com.

תאר את ההרשאה DNS bind

תיאור של הרשאות DNS bind לפרויקט ושל משתמש ראשי שיש לו גישה להגדרת DNS bindings.

gcloud

gcloud vmware dns-bind-permission describe \
--project=PROJECT_ID

מחליפים את PROJECT_ID במזהה הפרויקט של הבקשה הזו.

API

שליחת בקשת GET למשאב dnsBindPermissions.

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission

מחליפים את PROJECT_ID בפרויקט שאליו מתייחסת הבקשה.

קישור אזור DNS בענן פרטי לרשת VMware Engine intranet VPC

אחרי שתעניקו למשתמש את ההרשאות להגדרת קישורי DNS, הוא יוכל ליצור קישור בין אזור ה-DNS הפרטי ב-Cloud DNS לבין רשת ה-VPC של האינטראנט ב-VMware Engine Network. ‫VMware Engine משתמש בשיוך DNS כדי לאפשר רזולוציית Cloud DNS.

איתור כתובת ה-URL של ה-VPC של האינטראנט

כדי ליצור את הקישור החדש, צריך את כתובת ה-URL של רשת ה-VPC של האינטראנט. כדי למצוא את רשת ה-VPC של האינטראנט ב-VMware Engine, צריך להציג את הפרטים של רשת VMware Engine.

המסוף

כדי למצוא את כתובת ה-URL של ה-VPC ברשת האינטראנט באמצעות מסוף Google Cloud , פועלים לפי השלבים הבאים:

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

    מעבר לרשתות VMware Engine

  2. לוחצים על Select a project (בחירת פרויקט) ואז בוחרים את הארגון, התיקייה או הפרויקט שמכילים את רשת VMware Engine.

  3. מחפשים את הרשת של VMware Engine, לוחצים על האפשרות פעולה ובוחרים באפשרות העתקת כתובת ה-URL של רשת ה-VPC של האינטראנט.

gcloud

gcloud vmware networks describe VMWARE_ENGINE_NETWORK \
--project=PROJECT_ID

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

  • VMWARE_ENGINE_NETWORK: הרשת שרוצים לתאר
  • PROJECT_ID: מזהה הפרויקט של הבקשה הזו

API

שולחים בקשת GET למשאב vmwareEngineNetworks ומציינים את שם הרשת:

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/vmwarenEngineNetworks/NETWORK_ID

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

  • PROJECT_ID: הפרויקט של הבקשה הזו
  • NETWORK_ID: הרשת שרוצים לתאר

קישור

אחרי שמגדירים את הרשאות ה-bind, תהליך העבודה המיועד הוא להוסיף קישור DNS ל-VPC של האינטראנט ברשת VMware Engine לתהליך הרגיל של ניהול תחום DNS ב-Cloud DNS לכל תחום.

gcloud

gcloud dns managed-zones create peering-DOMAIN  \
--dns-name="DOMAIN" \
--visibility="private" \
--networks="INTRANET_VPC_URL" \
--target-project="PROJECT_ID" \
--target-network="EXISTING_VPC" \
--description="DESCRIPTION"

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

  • DOMAIN: הדומיין להרחבה, למשל zone1.example.com
  • INTRANET_VPC_URL: כתובת ה-URL של רשת ה-VPC באינטראנט של רשת VMware Engine
  • EXISTING_VPC: כתובת ה-URL של רשת ה-VPC הקיימת שDOMAIN כבר מקושר אליה
  • PROJECT_ID: מזהה הפרויקט של הבקשה הזו

API

שולחים בקשת PATCH למשאב managedZones ומציינים את שם האזור:

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://dns.googleapis.com/v1/projects/PROJECT_ID/managedZones -d "{
"name": "peering-DOMAIN",          
"description": "",
"dnsName": DOMAIN,
"peeringConfig": {
    "targetNetwork": {
        "networkUrl": EXISTING_VPC
    }
  },
  "privateVisibilityConfig": {
    "networks": [
      {
        "networkUrl": INTRANET_VPC_URL
      }
    ]
  }  
}"

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

  • PROJECT_ID: מזהה הפרויקט של הבקשה הזו
  • DOMAIN: הדומיין להרחבה, למשל zone1.example.com
  • INTRANET_VPC_URL: כתובת ה-URL של ה-VPC ברשת האינטראנט עבור רשת VMware Engine.
  • EXISTING_VPC: כתובת ה-URL של רשת ה-VPC הקיימת שכבר משויכת ל-DOMAIN

דוגמאות לקישורי DNS

ריכזנו כאן כמה דוגמאות לקישורי DNS שאפשר להשתמש בהם.

סמכותי

gcloud dns managed-zones create zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --description="DESCRIPTION" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

העברה מותנית

gcloud dns managed-zones create zone1 \
  --description="DESCRIPTION" \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks=EXISTING_VPC \
  --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

העברת כל ההודעות

gcloud dns managed-zones create forward-all \
  --description="" --dns-name="." \
  --visibility="private" \
  --networks="EXISTING_VPC" \
  --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-forward-all \
  --dns-name="." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

Google API Private

gcloud dns managed-zones create googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --description="Direct GCVE traffic to Private IPs for Google API Access" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis  \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"
gcloud dns record-sets create private.googleapis.com. \
  --zone="googleapis" \
  --type="A" \
  --ttl="300" \
  --rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11"
gcloud dns record-sets create *.googleapis.com. \
  --zone="googleapis" \
  --type="CNAME" \
  --ttl="300" \
  --rrdatas="private.googleapis.com."

Google API Restricted

gcloud dns managed-zones create googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --description="Direct GCVE traffic to Private IPs for Google API Access" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"
gcloud dns record-sets create restricted.googleapis.com. \
  --zone="googleapis" \
  --type="A" \
  --ttl="300" \
  --rrdatas="199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7"
gcloud dns record-sets create *.googleapis.com. \
  --zone="googleapis" \
  --type="CNAME" \
  --ttl="300" \
  --rrdatas="restricted.googleapis.com."