הגדרת 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 הוא מחרוזת שמציינת איך לטפל בדומיינים של Google. הערכים של googleAccess מציינים את ההתנהגות הבאה:

  • default: אין יחס מיוחד לדומיינים של Google. ההשפעה תהיה זהה אם תסירו את השדה googleAccess.

  • private: פותר דומיינים של Google לכתובות IP עם גישה פרטית בלבד.

  • restricted: פותר את הבעיה של דומיינים של Google שמוגבלת אליהם הגישה לכתובות IP בלבד.

בדוגמה הבאה להגדרה, דומיינים של Google נפתרים רק לכתובות IP של גישה פרטית:

spec:
  googleAccess: private

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