API Cloud DNS ResourceRecordSets

1. Introdução

64e18005b6cdcd83.png

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

Leia mais

Documentos de referência