במאמר הזה מוסבר איך להגדיר אפשרויות של ספק 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 למארחים מקומיים.