1. Einführung

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.