יצירת אזורי DNS

הדרכה זו מנחה אותך כיצד להגדיר פענוח DNS לדומיין חדש ב-Google Distributed Cloud ‏ (GDC) עם air gap, באמצעות תחומי DNS. אפשר להשתמש בתחום DNS כדי לקבץ יחד קבוצה של רשומות DNS, ולקבוע אם הרשומות האלה יהיו גלויות מחוץ לענן הווירטואלי הפרטי (VPC) ב-GDC.

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

אתם יכולים ליצור אזורי DNS ציבוריים או פרטיים בסביבת GDC כדי להתאים לדרישות החשיפה והגישה של השירותים שלכם:

  • בשירותים שנדרשת בהם גישה לרשת חיצונית: מגדירים אזור DNS ציבורי כדי לאפשר למשתמשים ולמערכות מחוץ לרשת לגשת לשירות. אם יש לכם אתר, API שפונה לציבור או שירות כלשהו שצריך להיות נגיש מחוץ לסביבת GDC Cloud, אתם צריכים תחום DNS ציבורי כדי למפות את שם הדומיין לכתובות ה-IP המתאימות.
  • לשירותים שנדרשת עבורם גישה מאובטחת ומוגבלת למערכות פנימיות: מגדירים אזור DNS פרטי כדי להסתיר את שם הדומיין הפנימי ולהגביל את הגישה לשירותים הפנימיים. אם יש לכם אפליקציה פנימית, מסד נתונים או מיקרו-שירות שצריכים לתקשר עם שירותים פנימיים אחרים באמצעות פרוטוקולים מאובטחים בלבד וכתובות IP פרטיות, אתם צריכים אזור DNS פרטי כדי למפות את שם הדומיין לכתובות ה-IP המתאימות. אזור DNS פרטי מבטיח שהשירותים האלה יוכלו למצוא אחד את השני באמצעות שמות דומיין פנימיים בלי לחשוף את קיומם או את כתובות ה-IP שלהם לרשת החיצונית. הפעולה הזו משפרת את האבטחה ומפשטת את הרשת הפנימית.

מידע נוסף על ההבדל בין אזורי DNS ציבוריים לשרתי DNS פרטיים זמין במאמר סוגי אזורים ב-Cloud DNS.

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

כדי להגדיר אזורי DNS ב-GDC ולהוסיף רשומות, צריך לוודא שיש לכם את הדברים הבאים:

  • פרויקט קיים. מידע נוסף זמין במאמר יצירת פרויקט.
  • תפקידי הזהות והגישה הנדרשים. כדי לנהל אזורי DNS בפרויקט, צריך לבקש מאדמין IAM של פרויקט להקצות לכם את התפקיד אדמין פרויקט של DNS מנוהל (managed-dns-project-admin).
  • כדי להשתמש ב-gdcloud CLI, צריך לוודא שהוא מותקן. מידע נוסף זמין במאמר בנושא התקנת gdcloud CLI.
  • אם אתם משתמשים ב-kubectl, קובץ kubeconfig לשרת ה-API הגלובלי. אם עדיין לא יצרתם את הקובץ הזה, אפשר לעיין במאמר בנושא כניסה לחשבון. מידע נוסף זמין במאמר בנושא שרתי API גלובליים ואזוריים.

יצירת תחום DNS ציבורי

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

יצירת האזור

אפשר ליצור תחום DNS ציבורי באמצעות ה-CLI של gcloud או Kubernetes API.

gdcloud

כדי ליצור תחום DNS ציבורי, משתמשים בפקודה gdcloud dns managed-zones create:

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PUBLIC \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

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

  • ‫DNS_ZONE_NAME: השם של תחום ה-DNS.
  • ‫DOMAIN_NAME: שם הדומיין של תחום ה-DNS הציבורי, למשל example.com.
  • ‫DESCRIPTION: תיאור של תחום ה-DNS. לדוגמה, Public DNS zone for example.com. השדה הזה הוא אופציונלי.
  • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט. הדגל הזה הוא אופציונלי אם הגדרתם פרויקט ברירת מחדל באופן גלובלי באמצעות gdcloud config set project.
  • ‫--async: מציינים את האפשרות הזו אם רוצים שהפקודה תחזיר ערך באופן מיידי, במקום להמתין לסיום הפעולה. אפשר להשתמש ב-method‏ describe כדי לבדוק את סטטוס הפעולה.

API

משתמשים ב-Kubernetes API ב-GDC כדי ליצור תחום DNS ציבורי:

  1. יוצרים ומחילים משאב ManagedDNSZone כדי ליצור תחום DNS שאפשר לגשת אליו מחוץ ל-GDC:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PUBLIC
    EOF
    

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

    • ‫GLOBAL_API_SERVER: הנתיב של kubeconfig בשרת ה-API הגלובלי. מידע נוסף זמין במאמר שרתי API גלובליים ואזוריים. אם עדיין לא יצרתם קובץ kubeconfig לשרת ה-API, תוכלו לקרוא פרטים נוספים במאמר בנושא כניסה.
    • ‫DNS_ZONE_NAME: השם של תחום ה-DNS.
    • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט.
    • ‫DOMAIN_NAME: שם הדומיין של תחום ה-DNS הציבורי, למשל example.com.
    • ‫DESCRIPTION: תיאור של תחום ה-DNS. לדוגמה, Public DNS zone for example.com. השדה הזה הוא אופציונלי.

    שימו לב שהערך visibility הוא תלוי אותיות רישיות, וחייב להיות בדיוק PUBLIC.

הגדרת מפענח DNS

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

  1. מאחזרים את שרתי השמות של ManagedDNSZone שיצרתם. צריך להשתמש ב-kubectl בשלב הזה.

    kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyaml
    

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

    • ‫GLOBAL_API_SERVER: הנתיב של kubeconfig בשרת ה-API הגלובלי. מידע נוסף זמין במאמר שרתי API גלובליים ואזוריים. אם עדיין לא יצרתם קובץ kubeconfig לשרת ה-API, תוכלו לקרוא פרטים נוספים במאמר בנושא כניסה.
    • ‫DNS_ZONE_NAME: השם של תחום ה-DNS.
    • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט. הדגל הזה הוא אופציונלי אם הגדרתם פרויקט ברירת מחדל באופן גלובלי באמצעות gdcloud config set project.

    שרתי השמות יופיעו בפלט הסטטוס:

      apiVersion: networking.global.gdc.goog/v1
      kind: ManagedDNSZone
      metadata:
        name: DNS_ZONE_NAME
        namespace: PROJECT_NAMESPACE
      spec:
        dnsName: example.com
        description: "Public DNS zone for example.com"
        visibility: PUBLIC
      status:
      …
      nameServers:
        - ns.managed-dns-public.gdc1.staging.gpcdemolabs.com
    
  2. מעדכנים את מפענח ה-DNS ברשת כדי להעביר בקשות DNS לאזור החדש. בדוגמה הזו, צריך לעדכן את מפענח ה-DNS כדי להעביר בקשות ל-example.com אל ns.managed-dns-public.gdc1.staging.gpcdemolabs.com. הגדרה זו מניחה שלמפענח DNS כבר יש את ההגדרה שנדרשת כדי להעביר כראוי בקשות DNS לתחום ה-DNS של התשתית של GDC‏ gdc1.staging.gpcdemolabs.com.

יצירת תחום DNS פרטי

אפשר ליצור אזור DNS פרטי באמצעות ה-CLI של gcloud או Kubernetes API.

gdcloud

כדי ליצור אזור DNS פרטי, משתמשים בפקודה gdcloud dns managed-zones create:

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PRIVATE \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

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

  • ‫DNS_ZONE_NAME: השם של תחום ה-DNS.
  • ‫DOMAIN_NAME: שם הדומיין של תחום ה-DNS הפרטי, למשל example.com.
  • ‫DESCRIPTION: תיאור של תחום ה-DNS. לדוגמה, Private DNS zone for example.com. השדה הזה הוא אופציונלי.
  • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט. הדגל הזה הוא אופציונלי אם הגדרתם פרויקט ברירת מחדל באופן גלובלי באמצעות gdcloud config set project.
  • ‫--async: מציינים את האפשרות הזו אם רוצים שהפקודה תחזיר ערך באופן מיידי, במקום להמתין לסיום הפעולה. אפשר להשתמש ב-method‏ describe כדי לבדוק את סטטוס הפעולה.

API

משתמשים ב-Kubernetes API כדי ליצור אזור DNS פרטי:

  • יוצרים ומחילים משאב ManagedDNSZone כדי ליצור תחום DNS שאפשר לגשת אליו רק מתוך ה-VPC של הלקוח שמוגדר כברירת מחדל:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PRIVATE
    EOF
    

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

    • ‫GLOBAL_API_SERVER: הנתיב של kubeconfig בשרת ה-API הגלובלי. מידע נוסף זמין במאמר שרתי API גלובליים ואזוריים. אם עדיין לא יצרתם קובץ kubeconfig לשרת ה-API, תוכלו לקרוא פרטים נוספים במאמר בנושא כניסה.
    • ‫DNS_ZONE_NAME: השם של תחום ה-DNS.
    • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט.
    • ‫DOMAIN_NAME: שם הדומיין של תחום ה-DNS הפרטי, למשל example.com.
    • ‫DESCRIPTION: תיאור של תחום ה-DNS. לדוגמה, Private DNS zone for example.com. השדה הזה הוא אופציונלי.

    שימו לב שהערך visibility הוא תלוי אותיות רישיות, וחייב להיות בדיוק PRIVATE.

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