API Cloud DNS ResourceRecordSets

1. Introdução

64e18005b6cdcd83.png

Última atualização:06/01/2021

O que é o Cloud DNS?

Consulte nossa página inicial.

O que você vai criar

Neste codelab, você vai criar uma ManagedZone do Cloud DNS e ResourceRecordSets relevantes usando o gcloud para gerenciar a resolução de nomes em uma instância de VM.

O que você vai aprender

Como CRIAR, LER, EXCLUIR e ATUALIZAR ResourceRecordSets individuais.

O que é necessário

2. Etapas da configuração

Configurar seu projeto do Google Cloud Platform

Fazer login no gcloud

gcloud auth login

Criar um projeto

gcloud projects create my-codelab-project

Ativar a API Cloud DNS

gcloud services enable dns.googleapis.com

Pode levar alguns minutos para que isso entre em vigor

3. Como criar uma ManagedZone particular

Uma ManagedZone contém ResourceRecordSets.

Anote o nome de domínio para o qual você quer adicionar registros DNS. Neste exemplo, vamos usar "my-domain.com" e presumir que a instância de VM está na rede padrão.

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

4. Gerenciar ResourceRecordSets

Ao final desta seção, as solicitações de DNS na sua rede privada virtual para seu domínio serão resolvidas para o endereço IP da VM.

Por exemplo, se o endereço IP da VM for "1.2.3.4" e você quiser que "meu-dominio.com." seja resolvido para esse endereço IP, crie um "registro A".

CRIAR um registro A

gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
  • O argumento posicional "my-domain.com." , também conhecido como dnsName, é o nome para o qual queremos definir a resolução de DNS.
  • –type: indica o tipo de registro DNS que estamos tentando criar.
  • –ttl: indica o time to live deste registro.
  • –rrdatas: contém a resposta real à consulta.
  • –zone: obrigatório para direcionar em qual ManagedZone o registro será criado.

Saiba mais sobre os conceitos de DNS neste link.

Agora que você criou o registro A, é possível testar a resolução de DNS.

Conecte-se à sua máquina por SSH. Neste exemplo, usamos uma instância de VM com o nome "dns-codelab" em "us-central1-a".

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

Instale o dnsutils para usar o comando "dig".

sudo apt install dnsutils

consultar seu domínio

dig my-domain.com.

Isso vai gerar uma saída semelhante 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
...

CRIAR, ADICIONAR PATCH e GET um registro CNAME

Agora que você mapeou my-domain.com para 1.2.3.4, provavelmente vai querer garantir que www.my-domain.com também seja resolvido para 1.2.3.4. Os registros para prefixos "www." não são criados automaticamente.

Se você consultar www.meu-dominio.com.

dig www.my-domain.com.

você vai receber uma saída semelhante a

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

indicando que não há um registro DNS para esse domínio

Em vez de criar outro registro A, crie um registro CNAME, que é um ponteiro para outro registro. Isso evita que tenhamos que mudar os dois registros caso queiramos usar um endereço IP diferente.

sair da instância de VM

exit

Criar registro CNAME

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

Agora que você criou o registro CNAME, é possível testar a resolução de DNS.

Faça SSH na sua máquina novamente

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

consultar seu domínio

dig www.my-domain.com.

Você vai receber uma saída semelhante a

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

Ah, não! Parece que houve um erro de digitação ao criar nosso registro CNAME na flag "–rrdatas". Em vez de excluir e recriar o registro, podemos corrigir a mudança correta.

sair da instância de VM

exit

Adicionar patch ao registro CNAME

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

Podemos omitir a flag "–ttl" porque não a estamos mudando, mas todas as outras flags precisam ser incluídas porque fazem parte do identificador exclusivo universal do ResourceRecordSet.

Também é possível verificar se o registro está como esperado usando o gcloud.

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

que deve produzir a saída

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

verifique se o registro CNAME está sendo resolvido corretamente

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

Você vai receber uma saída semelhante a

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

EXCLUIR para limpar

Antes de excluir uma ManagedZone, todos os ResourceRecordSets dela precisam ser excluídos, exceto os registros NS e SOA, que são gerados automaticamente e precisam sempre existir na ManagedZone.

sair da instância de VM

exit

Excluir o registro CNAME

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

Excluir o registro A

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

Excluir a ManagedZone

gcloud dns managed-zones delete "my-zone"

5. Parabéns

Parabéns! Você aprendeu a gerenciar seus ResourceRecordSets.

Leia mais

Documentos de referência