1. Introdução
Última atualização:06/01/2021
O que é o Cloud DNS?
Veja nossa página inicial.
O que você vai criar
Neste codelab, você vai criar uma ManagedZone do Cloud DNS e os ResourceRecordSets relevantes usando a gcloud para gerenciar a resolução de nomes para algumas instâncias 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
Faça login no gcloud
gcloud auth login
Criar um projeto
gcloud projects create my-codelab-project
Ative 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 em que você quer adicionar registros DNS. Neste exemplo, usaremos "my-domain.com" e presuma que ela esteja 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 rede privada virtual do 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 "my-domain.com", para resolver para esse endereço IP, é preciso criar 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 (TTL) deste registro.
- –rrdatas: contém a resposta real da consulta.
- –zone: necessário para direcionar em qual ManagedZone esse registro será criado.
Leia mais sobre os conceitos de DNS aqui.
Agora que o registro A foi criado, você poderá testar a resolução de DNS.
SSH na sua máquina. 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" comando
sudo apt install dnsutils
consultar seu domínio
dig my-domain.com.
isso produzirá 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
...
CRIE, PATCHE e GET para um registro CNAME
Agora que você mapeou meu-dominio.com. para a versão 1.2.3.4, convém garantir que www.my-domain.com. também resolve para 1.2.3.4. Registros para "www." os prefixos não são criados automaticamente.
Se você consultar www.meu-domínio.com.
dig www.my-domain.com.
você terá 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á registro DNS para o domínio em questão
Em vez de criar outro registro A, devemos criar um registro CNAME que é um ponteiro para outro registro. Isso evita a necessidade de alterar os dois registros para o caso de usarmos um endereço IP diferente.
saia da instalação da 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, poderá testar a resolução do DNS.
SSH na sua máquina novamente
gcloud compute ssh codelab --zone=us-central1-a
consultar seu domínio
dig www.my-domain.com.
você deve ter recebido 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 o registro CNAME no arquivo "-rrdatas". . Em vez de excluir e recriar o registro, podemos aplicar o patch na alteração correta.
saia da instância de VM
exit
Corrija o registro CNAME
gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"
É possível omitir o "-ttl" porque não a alteramos, mas todas as outras sinalizações precisam ser incluídas, já que fazem parte do identificador universalmente exclusivo do ResourceRecordSet.
Também podemos verificar se o registro está de acordo com o esperado usando a gcloud.
gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"
que deve produzir resultados
NAME TYPE TTL DATA
www.my-domain.com. CNAME 60 "my-domain.com."
Verificar se o registro CNAME está sendo resolvido corretamente
gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.
você deve ter recebido 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 que uma ManagedZone possa ser excluída, todos os ResourceRecordSets dentro da ManagedZone precisam ser excluídos, com exceção dos registros NS e SOA, que são gerados automaticamente e sempre precisam existir na ManagedZone.
saia da instância de VM
exit
Exclua 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.