הגדרת DNS לאשכול

במאמר הזה מוסבר איך להגדיר אפשרויות של ספק DNS ‏ (Domain Name System) ב-Google Distributed Cloud במודל מחובר. הגדרת ה-DNS של אשכול מאוחסנת במשאב מותאם אישית של ClusterDNS בשם default. המשאב הזה הוא ברמת האשכול, כלומר הוא לא מוגדר במרחב שמות. המשאב המותאם אישית ClusterDNS חל על כל סוגי האשכולות.

יצירת המשאב ClusterDNS

יוצרים מניפסט למשאב ClusterDNS בשם default. ממלאים את הפרטים בspec כדי להגדיר את ההגדרות של המשאב הרצוי. לדוגמה:

apiVersion: networking.gke.io/v1alpha1
kind: ClusterDNS
metadata:
  name: default
spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 8.8.4.4
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: default

כדי לשמור את המניפסט בקובץ בשם my-dns.yaml ולהחיל את המשאב על האשכול, מריצים את הפקודה הבאה:

kubectl --kubeconfig KUBECONFIG apply -f my-dns.yaml

מחליפים את KUBECONFIG בנתיב לקובץ kubeconfig של האשכול.

הצגת משאב ClusterDNS

כדי להציג את משאב ClusterDNS, מריצים את הפקודה הבאה:

kubectl --kubeconfig KUBECONFIG get clusterdns default --output yaml

מחליפים את KUBECONFIG בנתיב לקובץ kubeconfig של האשכול.

מפרט ClusterDNS

בקטעים הבאים מתוארים החלקים בהגדרת המשאב המותאם אישית ClusterDNS שבהם משתמשים כדי להגדיר DNS לאשכולות. אפשר לעדכן את המשאב ClusterDNS של אשכול בכל שלב.

spec.upstreamNameservers

משתמשים בשדה spec.upstreamNameservers כדי לציין את שרתי השמות של ברירת המחדל שלכם במעלה הזרם באמצעות מערך של אובייקטים. לכל אובייקט יש כתובת IP של שרת, ויציאת שרת (אופציונלי). יציאת השרת שמוגדרת כברירת מחדל היא 53. כברירת מחדל, בקשות לדומיינים שאינם שייכים לאשכול מועברות לקבוצת השרתים הזו.

הנה דוגמה להגדרה upstreamNameservers:

spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 1.2.3.4
    serverPort: 54

אם לא מציינים ערכים ל-upstreamNameservers, ספק ה-DNS משתמש בקובץ /etc/resolv.conf בצומת כדי למצוא את רשימת שרתי השמות במעלה הזרם.

spec.domains

משתמשים בשדה spec.domains כדי להגדיר שרתי שמות שונים במעלה הזרם עבור דומיינים מסוימים. הגדרות שרתי השמות הספציפיות לדומיין האלה מבטלות את ההגדרה ב-upstreamNameservers.

אפשר גם להפעיל רישום ביומן של שאילתות עבור דומיין. אפשר להפעיל רישום של שאילתות עבור דומיין ספציפי או עבור דומיין האשכול, cluster.local.

הנה דוגמה להגדרה spec.domains:

spec:
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 50000
  - name: cluster.local
    queryLogging: true

spec.googleAccess

השדה spec.googleAccess הוא מחרוזת שמגדירה את פעולת ה-DNS עבור דומיינים שמשמשים את ממשקי ה-API והשירותים הגלובליים של Google. אפשר להזין בשדה הזה את הערכים הבאים:

  • ‫default: כברירת מחדל, פתרון ה-DNS ממפה דומיינים גלובליים של Google API לכתובות ה-IP שמוגדרות כברירת מחדל. האשכול לא מבצע התאמה אישית של פענוח ה-DNS לדומיינים גלובליים של Google API. מידע נוסף מופיע במאמר בנושא כתובות IP לדומיינים שמוגדרים כברירת מחדל. אם לא מציינים ערך בשדה googleAccess, המערכת משתמשת בערך default.

  • ‫private: מיפוי של פתרון DNS לדומיינים גלובליים של Google API לכתובות ה-IP שמשמשות את private.googleapis.com.

  • ‫restricted: מיפוי של פתרון DNS לדומיינים גלובליים של Google API לכתובות ה-IP שמשמשות את restricted.googleapis.com.

בדוגמה הבאה מוצג איך להגדיר את פענוח ה-DNS לשימוש ב-private.googleapis.com:

spec:
  googleAccess: private

מידע נוסף זמין במאמר הגדרת גישה פרטית ל-Google למארחים מקומיים.