1. Introdução

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