Cloud DNS ResourceRecordSets API

1. Einführung

64e18005b6cdcd83.png

Zuletzt aktualisiert:06.01.2021

Was ist Cloud DNS?

Weitere Informationen finden Sie auf unserer Startseite.

Inhalt

In diesem Codelab erstellen Sie mit gcloud eine ManagedZone von Cloud DNS und relevante ResourceRecordSets, um die Namensauflösung für eine VM-Instanz zu verwalten.

Aufgaben in diesem Lab

So erstellen, lesen, löschen und aktualisieren Sie einzelne ResourceRecordSets.

Voraussetzungen

2. Einrichtung

Google Cloud Platform-Projekt einrichten

Bei gcloud anmelden

gcloud auth login

Projekt erstellen

gcloud projects create my-codelab-project

Cloud DNS API aktivieren

gcloud services enable dns.googleapis.com

Es kann einige Minuten dauern, bis diese Änderung wirksam wird

3. Private ManagedZone erstellen

Eine ManagedZone enthält ResourceRecordSets.

Notieren Sie sich den Domainnamen, für den Sie DNS-Einträge hinzufügen möchten. In diesem Beispiel verwenden wir „my-domain.com“ und davon aus, dass sich Ihre VM-Instanz im Standardnetzwerk befindet.

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 verwalten

Am Ende dieses Abschnitts werden DNS-Anfragen über Ihr virtuelles privates Netzwerk für Ihre Domain in die IP-Adresse der VM aufgelöst.

Lautet die IP-Adresse Ihrer VM beispielsweise „1.2.3.4“ und Sie möchten „my-domain.com“ eingeben. Um zu dieser IP-Adresse aufzulösen, müssen Sie einen "A-Eintrag" erstellen.

A-Eintrag ERSTELLEN

gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
  • Das Positionsargument „my-domain.com.“ , auch bekannt als „dnsName“, ist der Name, für den die DNS-Auflösung definiert werden soll.
  • –type: Gibt den DNS-Eintragstyp an, den Sie erstellen möchten.
  • –ttl: Gibt die Gültigkeitsdauer für diesen Datensatz an.
  • –rrdatas: enthält die eigentliche Antwort auf die Abfrage.
  • –zone: Erforderlich, um festzulegen, in welcher ManagedZone dieser Eintrag erstellt werden soll.

Weitere Informationen zu DNS-Konzepten

Nachdem Sie Ihren A-Eintrag erstellt haben, sollten Sie die DNS-Auflösung testen können.

Stellen Sie eine SSH-Verbindung zu Ihrem Computer her. In diesem Beispiel verwenden wir eine VM-Instanz mit dem Namen „dns-codelab“. in „us-central1-a“

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

Installieren Sie „dnsutils“, damit Sie den Befehl „dig“ verwenden können. Befehl

sudo apt install dnsutils

Domain abfragen

dig my-domain.com.

sollte die Ausgabe in etwa so aussehen:

...
;; 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-Eintrag ERSTELLEN, PATCH und GET GET

Sie haben "my-domain.com" zugeordnet. 1.2.3.4 ist sicher, dass www.my-domain.com. wird ebenfalls in 1.2.3.4 aufgelöst. Einträge für "www." Präfixe werden nicht automatisch erstellt.

Wenn Sie eine Suchanfrage wie www.my-domain.com stellen,

dig www.my-domain.com.

erhalten Sie eine Ausgabe, die

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

, dass für diese Domain kein DNS-Eintrag vorhanden ist.

Anstatt einen weiteren A-Eintrag zu erstellen, sollten wir einen CNAME-Eintrag erstellen, der auf einen anderen Eintrag verweist. So wird verhindert, dass wir beide Einträge ändern müssen, falls wir eine andere IP-Adresse verwenden möchten.

beende deine VM-Instanz

exit

CNAME-Eintrag erstellen

gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"

Nachdem Sie nun den CNAME-Eintrag erstellt haben, sollten Sie die DNS-Auflösung testen können.

Stellen Sie wieder eine SSH-Verbindung zu Ihrem Computer her.

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

Domain abfragen

dig www.my-domain.com.

sollten Sie eine Ausgabe erhalten, die ungefähr

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

Oh nein! Beim Erstellen des CNAME-Eintrags im Feld "–rrdatas" ist ein Tippfehler aufgetreten. melden. Anstatt den Eintrag zu löschen und neu zu erstellen, können wir die richtige Änderung übernehmen.

VM-Instanz beenden

exit

CNAME-Eintrag patchen

gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"

Beachten Sie, dass wir „–ttl“ weglassen können, da wir es nicht ändern. Alle anderen Flags müssen jedoch enthalten sein, da sie Teil der universell eindeutigen Kennung des ResourceRecordSet sind.

Außerdem können wir mit gcloud prüfen, ob der Eintrag wie erwartet ist.

gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"

Das sollte eine Ausgabe

NAME                    TYPE    TTL  DATA
www.my-domain.com.      CNAME   60  "my-domain.com."

Prüfen, ob der CNAME-Eintrag korrekt aufgelöst wird

gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.

sollten Sie eine Ausgabe erhalten, die ungefähr

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

Zum Bereinigen LÖSCHEN

Bevor eine ManagedZone gelöscht werden kann, müssen zuerst alle ResourceRecordSets in der ManagedZone gelöscht werden (mit Ausnahme der NS- und SOA-Einträge, die automatisch generiert werden und immer in der ManagedZone vorhanden sein müssen).

VM-Instanz beenden

exit

CNAME-Eintrag löschen

gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"

A-Eintrag löschen

gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"

ManagedZone löschen

gcloud dns managed-zones delete "my-zone"

5. Glückwunsch

Herzlichen Glückwunsch! Sie wissen jetzt, wie Sie Ihre ResourceRecordSets verwalten.

Weitere Informationen

Referenzdokumente