API de ResourceRecordSets de Cloud DNS

1. Introducción

64e18005b6cdcd83.png

Última actualización: 6/1/2021

¿Qué es Cloud DNS?

Consulta nuestra página principal.

Qué compilarás

En este codelab, crearás una zona administrada de Cloud DNS y recursos ResourceRecordSets relevantes con gcloud para administrar la resolución de nombres en alguna instancia de VM.

Qué aprenderás

Cómo CREATE, READ, DELETE y UPDATE individuales ResourceRecordSets

Requisitos

2. Cómo prepararte

Configura tu proyecto de Google Cloud Platform

Acceder a gcloud

gcloud auth login

Crea un proyecto

gcloud projects create my-codelab-project

Habilita la API de Cloud DNS

gcloud services enable dns.googleapis.com

Es posible que el cambio demore unos minutos en aplicarse

3. Crea una zona administrada privada

Una ManagedZone contiene ResourceRecordSets.

Toma nota del nombre de dominio para el que quieres agregar registros DNS. En este ejemplo, usaremos “mi-dominio.com” y supón que tu instancia de VM está en la red predeterminada.

gcloud dns managed-zones create my-zone \
    --description="ManagedZone for Cloud DNS ResourceRecordSets codelab." \
    --dns-name=my-domain.com. \
    --networks=default \
    --visibility=private

4. Administrar ResourceRecordSets

Al final de esta sección, las solicitudes de DNS a través de tu red privada virtual para tu dominio se resolverán en la dirección IP de la VM.

Por ejemplo, si la dirección IP de tu VM es “1.2.3.4” y quisieras “my-domain.com”. para resolverse en esa dirección IP, debes crear un “registro A”.

CREAR un registro A

gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
  • El argumento posicional "my-domain.com". , también conocido como dnsName, es el nombre para el que queremos definir la resolución de DNS.
  • –type: Denota el tipo de registro DNS que intentamos crear.
  • –ttl: denota el tiempo de actividad para este registro.
  • –rrdatas: Contiene la respuesta real de la consulta.
  • –zone: Se requiere para indicar en qué ManagedZone se debe crear este registro.

Obtén más información sobre los conceptos de DNS aquí.

Ahora que creaste el registro A, deberías poder probar la resolución de DNS.

Establece una conexión SSH a tu máquina. En este ejemplo, usamos una instancia de VM con el nombre "dns-codelab" en “us-central1-a”

gcloud compute ssh codelab --zone=us-central1-a

Instala dnsutils para poder usar “dig” comando

sudo apt install dnsutils

buscar su dominio

dig my-domain.com.

esto debería producir un resultado similar al

...
;; 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 y GET un registro CNAME

Ahora que asignaste mi-dominio.com. a 1.2.3.4, deberías asegurarte de que www.mi-dominio.com. también resuelve a 1.2.3.4. Registros para "www." no se crean automáticamente.

Si consultas www.mi-dominio.com

dig www.my-domain.com.

obtendrás un resultado similar al siguiente

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

indica que no hay registro DNS para ese dominio

En lugar de crear otro registro A, debemos crear un registro CNAME que sea un indicador de otro registro. Esto evitará que tengamos que cambiar ambos registros en caso de que queramos usar una dirección IP diferente.

Sal de tu instancia de VM

exit

Crear registro CNAME

gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"

Ahora que creaste tu registro CNAME, deberías poder probar la resolución de DNS.

Vuelve a establecer una conexión SSH a tu máquina

gcloud compute ssh codelab --zone=us-central1-a

buscar su dominio

dig www.my-domain.com.

deberías haber recibido un resultado similar al

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

¡Ay, no! Parece que se produjo un error tipográfico al crear el registro CNAME en “–rrdatas” marca. En lugar de borrar y volver a crear el registro, podemos aplicar un parche en el cambio correcto.

sal de tu instancia de VM

exit

Aplicar un parche al registro CNAME

gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"

Ten en cuenta que podemos omitir “–ttl” marca, ya que no la cambiaremos, pero todas las demás marcas se deben incluir, ya que forman parte del identificador único universal de ResourceRecordSet.

También podemos verificar que el registro sea el esperado con gcloud

gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"

lo que debería producir resultados

NAME                    TYPE    TTL  DATA
www.my-domain.com.      CNAME   60  "my-domain.com."

verificar que el registro CNAME se esté resolviendo correctamente

gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.

deberías haber recibido un resultado similar al

...
;; 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..
...

BORRAR para limpiar

Antes de que se pueda borrar una ManagedZone, primero se deben borrar todos los ResourceRecordSets dentro de ManagedZone (excepto los registros NS y SOA, que se generan automáticamente y deben existir siempre en ManagedZone).

sal de tu instancia de VM

exit

Borrar el registro CNAME

gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"

Borra el registro A

gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"

Borra la zona administrada

gcloud dns managed-zones delete "my-zone"

5. Felicitaciones

Felicitaciones. Aprendiste correctamente a administrar tus ResourceRecordSets.

Lecturas adicionales

Documentos de referencia