ממשק API של Cloud DNS ResourceRecordSets

ממשק API של Cloud DNS ResourceRecordSets

מידע על Codelab זה

subjectהעדכון האחרון: מרץ 24, 2021
account_circleנכתב על ידי Luca Loncar

1.‏ מבוא

64e18005b6cdcd83.png

עדכון אחרון:6 בינואר 2021

מה זה Cloud DNS?

ניתן לעיין בדף הבית.

מה תפַתחו

ב-Codelab הזה תיצרו Cloud DNS ManagedZone ו-ResourceRecordSets רלוונטיים באמצעות gcloud כדי לנהל את רזולוציית השמות למכונה וירטואלית מסוימת.

מה תלמדו

איך ליצור, לקרוא, למחוק ולעדכן ResourceRecordSets בודדים.

מה צריך להכין

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'.

יצירה של רשומת A

gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
  • הארגומנט "my-domain.com" , ומכונה גם dnsName, הוא השם שאנחנו רוצים להגדיר עבורו רזולוציית DNS.
  • –type: מציין את הסוג של רשומת ה-DNS שאנחנו מנסים ליצור.
  • –ttl: מציין את משך הזמן עד לתיעוד הזה.
  • –rrdata: מכיל את התשובה בפועל לשאילתה.
  • –zone: נדרש כדי לקבוע באיזה אזור ManagedZone צריך ליצור את הרשומה.

מידע נוסף על מושגי DNS זמין כאן.

עכשיו, לאחר שיצרתם רשומת A, תוכלו לבדוק את רזולוציית ה-DNS.

SSH למחשב. בדוגמה הזו אנחנו משתמשים במכונת VM בשם dns-codelab ב-"us-central1-a"

gcloud compute ssh codelab --zone=us-central1-a

עליך להתקין dnsutils כדי להשתמש ב-'dig' מקש Command

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!

קריאה נוספת

מסמכי עזר