1. Introduzione
Ultimo aggiornamento: 2021-01-06
Che cos'è Cloud DNS?
Consulta la nostra home page.
Cosa creerai
In questo codelab creerai una ManagedZone di Cloud DNS e i relativi ResourceRecordSet utilizzando gcloud per gestire la risoluzione dei nomi su alcune istanze VM.
Cosa imparerai a fare
Come CREARE, LEGGERE, ELIMINARE e AGGIORNARE singoli ResourceRecordSet.
Che cosa ti serve
2. Preparazione
Configura il progetto Google Cloud
Accedi a gcloud
gcloud auth login
Creare un progetto
gcloud projects create my-codelab-project
Abilita l'API Cloud DNS
gcloud services enable dns.googleapis.com
L'applicazione dell'impostazione potrebbe richiedere alcuni minuti
3. Creazione di una ManagedZone privata
Un oggetto ManagedZone contiene ResourceRecordSet.
Prendi nota del nome di dominio per cui vuoi aggiungere i record DNS. In questo esempio, utilizzeremo "mio-dominio.com". e supponiamo che l'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. Gestione di ResourceRecordSet
Entro la fine 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 "mio-dominio.com". per risolvere l'indirizzo IP, devi creare un "record A".
CREAre 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 "mio-dominio.com". , anche noto come dnsName, è il nome per il quale vogliamo definire la risoluzione DNS.
- –type: indica il tipo di record DNS che stiamo cercando di creare.
- -ttl: indica il tempo di vita di questo record.
- –rrdatas: contiene la risposta effettiva alla query.
- –zone: necessaria per indicare in quale ManagedZone deve essere creato questo record.
Leggi ulteriori informazioni sui concetti DNS qui.
Ora che hai creato il tuo record A, dovresti essere in grado di testare la risoluzione DNS.
Accedi tramite SSH alla macchina. In questo esempio utilizziamo un'istanza VM con il nome "dns-codelab". in "us-central1-a"
gcloud compute ssh codelab --zone=us-central1-a
Installa dnsutils in modo da poter usare il comando "dig" comando
sudo apt install dnsutils
interroga il tuo dominio
dig my-domain.com.
dovrebbe produrre un output simile
...
;; 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
...
CREA, PATCH e OTTIENI un record CNAME
Ora che hai mappato mio-dominio.com. alla versione 1.2.3.4, probabilmente vorrai assicurarti che www.mio-dominio.com. risolve anche 1.2.3.4. Record per "www." i prefissi non vengono creati automaticamente.
Se esegui una query su www.mio-dominio.com.
dig www.my-domain.com.
si ottiene un output simile
...
;; 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 un record DNS per quel dominio
Anziché creare un altro record A, è meglio creare un record CNAME che sia un puntatore a un altro record. In questo modo non saremo costretti a modificare entrambi i record nel caso in cui volessimo utilizzare un indirizzo IP diverso.
esci dall'istanza VM
exit
Crea 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 verificare la risoluzione DNS.
Accedi di nuovo tramite SSH alla macchina
gcloud compute ssh codelab --zone=us-central1-a
interroga il tuo dominio
dig www.my-domain.com.
dovresti aver ricevuto un output simile
...
;; 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 ci sia un errore di battitura durante la creazione del nostro record CNAME nel campo "–rrdatas" flag. Anziché eliminare e ricreare il record, possiamo applicare la patch con la modifica corretta.
esci dall'istanza VM
exit
Applicare le 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 "–ttl" poiché non lo stiamo modificando, ma tutti gli altri flag devono essere inclusi poiché 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."
verifica 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
...
;; 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, tutti i ResourceRecordSet all'interno di ManagedZone devono essere eliminati (ad eccezione dei record NS e SOA, che vengono generati automaticamente e devono sempre esistere in ManagedZone).
esci dall'istanza VM
exit
Eliminare il record CNAME
gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"
Eliminare 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 tuoi ResourceRecordSet!