1. Introduzione

Ultimo aggiornamento: 06/01/2021
Che cos'è Cloud DNS?
Visita la nostra home page.
Cosa creerai
In questo codelab creerai una zona gestita Cloud DNS e i relativi ResourceRecordSets utilizzando gcloud per gestire la risoluzione dei nomi in un'istanza VM.
Cosa imparerai a fare
Come CREARE, LEGGERE, ELIMINARE e AGGIORNARE singoli ResourceRecordSet.
Che cosa ti serve
2. Preparazione
Configura il progetto Google Cloud Platform
Accedi a gcloud
gcloud auth login
Crea un progetto
gcloud projects create my-codelab-project
Abilita l'API Cloud DNS
gcloud services enable dns.googleapis.com
Potrebbero essere necessari alcuni minuti prima che la modifica diventi effettiva
3. Creazione di una zona gestita privata
Una zona gestita contiene ResourceRecordSets.
Prendi nota del nome di dominio per cui vuoi aggiungere i record DNS. In questo esempio utilizzeremo "my-domain.com" e supporremo che la tua istanza VM si trovi sulla rete predefinita.
gcloud dns managed-zones create my-zone \
--description="ManagedZone for Cloud DNS ResourceRecordSets codelab." \
--dns-name=my-domain.com. \
--networks=default \
--visibility=private
4. Gestisci ResourceRecordSets
Al termine di questa sezione, le richieste DNS sulla tua rete privata virtuale per il tuo dominio verranno risolte nell'indirizzo IP della VM.
Ad esempio, se l'indirizzo IP della tua VM è "1.2.3.4" e vuoi che "my-domain.com" venga risolto in questo indirizzo IP, devi creare un "record A".
CREA un record A
gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
- L'argomento posizionale "my-domain.com." , ovvero dnsName, è il nome per cui vogliamo definire la risoluzione DNS.
- –type: indica il tipo di record DNS che stiamo cercando di creare.
- –ttl: indica la durata (TTL) di questo record.
- –rrdatas: contiene la risposta effettiva alla query.
- –zone: obbligatorio per indicare in quale ManagedZone deve essere creato questo record.
Scopri di più sui concetti DNS qui.
Ora che hai creato il record A, dovresti essere in grado di testare la risoluzione DNS.
Accedi alla tua macchina tramite SSH. In questo esempio utilizziamo un'istanza VM denominata "dns-codelab" in "us-central1-a".
gcloud compute ssh codelab --zone=us-central1-a
Installa dnsutils per poter utilizzare il comando "dig".
sudo apt install dnsutils
interrogare il tuo dominio
dig my-domain.com.
dovrebbe produrre un output simile a
...
;; 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
...
CREATE, PATCH e GET di un record CNAME
Ora che hai mappato my-domain.com. a 1.2.3.4, probabilmente vorrai assicurarti che anche www.my-domain.com. venga risolto in 1.2.3.4. I record per i prefissi "www." non vengono creati automaticamente.
Se esegui una query su www.my-domain.com.
dig www.my-domain.com.
otterrai un output simile a
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...
che indica che non esiste alcun record DNS per quel dominio
Invece di creare un altro record A, dobbiamo creare un record CNAME, che è un puntatore a un altro record. In questo modo, non dovremo modificare entrambi i record nel caso in cui volessimo utilizzare un indirizzo IP diverso.
esci dall'istanza VM
exit
Crea il record CNAME
gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"
Ora che hai creato il record CNAME, dovresti essere in grado di testare la risoluzione DNS.
Accedi di nuovo alla macchina tramite SSH
gcloud compute ssh codelab --zone=us-central1-a
interrogare il tuo dominio
dig www.my-domain.com.
dovresti aver ricevuto un output simile a questo:
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...
Oh no! Sembra che sia stato commesso un errore di battitura durante la creazione del record CNAME nel flag "–rrdatas". Anziché eliminare e ricreare il record, possiamo applicare la correzione.
esci dall'istanza VM
exit
Applicare una patch al record CNAME
gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"
Tieni presente che possiamo omettere il flag "–ttl" poiché non lo modifichiamo, ma tutti gli altri flag devono essere inclusi perché fanno parte dell'identificatore univoco universale di ResourceRecordSet.
Possiamo anche verificare che il record sia come previsto utilizzando gcloud
gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"
che dovrebbe produrre un output
NAME TYPE TTL DATA
www.my-domain.com. CNAME 60 "my-domain.com."
verificare che il record CNAME venga risolto correttamente
gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.
dovresti aver ricevuto un output simile a questo:
...
;; 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..
...
ELIMINA per eseguire la pulizia
Prima di poter eliminare una ManagedZone, è necessario eliminare tutti i ResourceRecordSet al suo interno (ad eccezione dei record NS e SOA, che vengono generati automaticamente e devono sempre esistere nella ManagedZone).
esci dall'istanza VM
exit
Eliminare il record CNAME
gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"
Elimina il record A
gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"
Elimina ManagedZone
gcloud dns managed-zones delete "my-zone"
5. Complimenti
Congratulazioni, hai imparato a gestire i ResourceRecordSets.