1. מבוא

העדכון האחרון: 2021-01-06
מה זה Cloud DNS?
אפשר לעיין בדף הבית שלנו.
מה תפַתחו
ב-Codelab הזה תיצרו Cloud DNS ManagedZone ו-ResourceRecordSets רלוונטיים באמצעות gcloud כדי לנהל את פתרון השמות למכונה וירטואלית מסוימת.
מה תלמדו
איך יוצרים, קוראים, מוחקים ומעדכנים קבוצות של רשומות משאבים.
מה תצטרכו
2. תהליך ההגדרה
הגדרת הפרויקט ב-Google Cloud Platform
התחברות ל-gcloud
gcloud auth login
יצירת פרויקט
gcloud projects create my-codelab-project
הפעלת Cloud DNS API
gcloud services enable dns.googleapis.com
יכול להיות שיעברו כמה דקות עד שהשינוי ייכנס לתוקף.
3. יצירת ManagedZone פרטי
ManagedZone מכיל ResourceRecordSets.
רושמים את שם הדומיין שרוצים להוסיף לו רשומות DNS. בדוגמה הזו נשתמש ב-my-domain.com ונניח שהמכונה הווירטואלית נמצאת ברשת ברירת המחדל.
gcloud dns managed-zones create my-zone \
--description="ManagedZone for Cloud DNS ResourceRecordSets codelab." \
--dns-name=my-domain.com. \
--networks=default \
--visibility=private
4. ניהול של ResourceRecordSets
בסוף הקטע הזה, בקשות DNS ברשת הווירטואלית הפרטית של הדומיין יופנו לכתובת ה-IP של המכונה הווירטואלית.
לדוגמה, אם כתובת ה-IP של המכונה הווירטואלית היא 1.2.3.4, ואתם רוצים שהדומיין my-domain.com יפנה לכתובת ה-IP הזו, אתם צריכים ליצור רשומת A.
יצירת רשומת כתובת קבועה
gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
- הארגומנט המיקומי my-domain.com. , a.k.a. dnsName, הוא השם שרוצים להגדיר עבורו פענוח DNS.
- –type: מציין את סוג רשומת ה-DNS שאנחנו מנסים ליצור.
- –ttl: מציין את אורך החיים של הרשומה.
- –rrdatas: מכיל את התשובה בפועל לשאילתה.
- –zone: חובה להשתמש בו כדי להגדיר באיזה ManagedZone צריך ליצור את הרשומה הזו.
מידע נוסף על מושגי DNS זמין כאן.
אחרי שיוצרים את רשומת ה-A, אפשר לבדוק את פענוח ה-DNS.
מתחברים למחשב באמצעות SSH. בדוגמה הזו אנחנו משתמשים במכונת VM בשם dns-codelab ב-us-central1-a
gcloud compute ssh codelab --zone=us-central1-a
מתקינים את dnsutils כדי שתוכלו להשתמש בפקודה dig
sudo apt install dnsutils
שאילתת הדומיין
dig my-domain.com.
הפלט שמתקבל אמור להיות דומה לזה:
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19979
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;my-domain.com. IN A
;; ANSWER SECTION:
my-domain.com. 60 IN A 1.2.3.4
...
יצירה, תיקון וקבלת רשומת CNAME
אחרי שמיפיתם את my-domain.com. ל-1.2.3.4, כדאי לוודא שגם www.my-domain.com. יפנה ל-1.2.3.4. רשומות עם הקידומת 'www.' לא נוצרות באופן אוטומטי.
אם מבצעים שאילתה לגבי www.my-domain.com.
dig www.my-domain.com.
הפלט שיתקבל יהיה דומה ל
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...
שמציין שאין רשומת DNS לדומיין הזה
במקום ליצור עוד רשומת A, צריך ליצור רשומת CNAME שהיא מצביע לרשומה אחרת. כך לא נצטרך לשנות את שני הרשומות אם נרצה להשתמש בכתובת IP אחרת.
יוצאים ממופע ה-VM
exit
יצירת רשומת CNAME
gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"
אחרי שיצרתם את רשומת ה-CNAME, תוכלו לבדוק את פענוח ה-DNS.
מתחברים שוב למכונה באמצעות SSH
gcloud compute ssh codelab --zone=us-central1-a
שאילתת הדומיין
dig www.my-domain.com.
אמור להתקבל פלט שדומה ל
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...
אויש… נראה שהייתה שגיאת הקלדה כשניסינו ליצור את רשומת ה-CNAME בדגל –rrdatas. במקום למחוק את הרשומה וליצור אותה מחדש, אנחנו יכולים להוסיף את השינוי הנכון.
יוצאים ממופע ה-VM
exit
תיקון רשומת ה-CNAME
gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"
שימו לב שאפשר להשמיט את האפשרות –ttl כי אנחנו לא משנים אותה, אבל צריך לכלול את כל האפשרויות האחרות כי הן חלק מהמזהה הייחודי האוניברסלי של ResourceRecordSet.
אפשר גם לוודא שהרשומה היא כצפוי באמצעות gcloud
gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"
שצריך להפיק פלט
NAME TYPE TTL DATA
www.my-domain.com. CNAME 60 "my-domain.com."
לוודא שרשומת ה-CNAME נפתרת בצורה נכונה
gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.
אמור להתקבל פלט שדומה ל
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7471
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;www.my-domain.com. IN A
;; ANSWER SECTION:
www.my-domain.com. 60 IN CNAME my-domain.com..
...
מחיקה כדי לפנות מקום
לפני שמחיקת ManagedZone אפשרית, צריך קודם למחוק את כל ResourceRecordSets בתוך ה-ManagedZone (למעט רשומות NS ו-SOA, שנוצרות באופן אוטומטי ותמיד צריכות להיות ב-ManagedZone).
יוצאים ממופע ה-VM
exit
מחיקת רשומת ה-CNAME
gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"
מחיקת רשומת ה-A
gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"
מחיקת ה-ManagedZone
gcloud dns managed-zones delete "my-zone"
5. מזל טוב
כל הכבוד, למדת איך לנהל את ResourceRecordSets!