1. Einführung
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.