ממשק API של Cloud DNS ResourceRecordSets

1. מבוא

64e18005b6cdcd83.png

העדכון האחרון: 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!

קריאה נוספת

מסמכי עזר