API Cloud DNS ResourceRecordSets

1. Introduzione

64e18005b6cdcd83.png

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.

Further reading

Documenti di riferimento