API Cloud DNS ResourceRecordSets

1. Introduzione

64e18005b6cdcd83.png

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!

Per approfondire

Documenti di riferimento