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.

Umfang

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

Lerninhalte

So können Sie einzelne ResourceRecordSets ERSTELLEN, LESEN, LÖSCHEN und AKTUALISIEREN.

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 die Änderungen wirksam werden.

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 „meine-domain.de“ und gehen 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.

Wenn die IP-Adresse Ihrer VM beispielsweise „1.2.3.4“ lautet und Sie möchten, dass „meine-domain.de.“ in diese IP-Adresse aufgelöst wird, 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 „meine-domain.de“. , auch bekannt als dnsName, ist der Name, für den wir die DNS-Auflösung definieren möchten.
  • –type: Gibt den DNS-Eintragstyp an, den wir erstellen möchten.
  • –ttl: Gibt die Gültigkeitsdauer (Time To Live) für diesen Datensatz an.
  • –rrdatas: Enthält die eigentliche Antwort auf die Anfrage.
  • –zone: erforderlich, um anzugeben, in welcher ManagedZone dieser Datensatz erstellt werden soll.

Weitere Informationen zu DNS-Konzepten

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

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.

sudo apt install dnsutils

Domain abfragen

dig my-domain.com.

Die Ausgabe sollte 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, patchen und abrufen

Nachdem Sie „meine-domain.de.“ der IP-Adresse 1.2.3.4 zugeordnet haben, möchten Sie wahrscheinlich dafür sorgen, dass „www.meine-domain.de.“ ebenfalls in 1.2.3.4 aufgelöst wird. Einträge für „www.“-Präfixe werden nicht automatisch erstellt.

Wenn Sie www.meine-domain.de abfragen.

dig www.my-domain.com.

Die Ausgabe sollte in etwa so aussehen:

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

Dies weist darauf hin, dass es keinen DNS-Eintrag für diese Domain gibt.

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

VM-Instanz beenden

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 den CNAME-Eintrag erstellt haben, sollten Sie die DNS-Auflösung testen können.

Stellen Sie noch einmal eine SSH-Verbindung zu Ihrer Maschine her.

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

Domain abfragen

dig www.my-domain.com.

Die Ausgabe sollte in etwa so aussehen:

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

Oh nein! Anscheinend ist beim Erstellen unseres CNAME-Eintrags im Flag „–rrdatas“ ein Tippfehler aufgetreten. Anstatt den Eintrag zu löschen und neu zu erstellen, können wir die richtige Änderung einfügen.

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"

Das Flag „–ttl“ kann weggelassen werden, da es nicht geändert wird. Alle anderen Flags müssen jedoch angegeben werden, da sie Teil der universell eindeutigen Kennung des ResourceRecordSet sind.

Mit gcloud können wir auch prüfen, ob der Datensatz wie erwartet ist.

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

Dadurch sollte eine Ausgabe generiert werden.

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.

Die Ausgabe sollte in etwa so aussehen:

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

LÖSCHEN, um Speicherplatz freizugeben

Bevor eine ManagedZone gelöscht werden kann, müssen alle ResourceRecordSets in der ManagedZone gelöscht werden. Ausnahmen sind 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

Sie haben jetzt gelernt, wie Sie ResourceRecordSets verwalten.

Weitere Informationen

Referenzdokumente