Configurar vinculações de DNS

Nesta página, descrevemos como configurar vinculações de DNS para redes padrão do VMware Engine.

Cada nuvem privada implanta um servidor do Cloud DNS que é usado para a resolução de todos os dispositivos de gerenciamento. É possível configurar esse servidor como o servidor DNS para todas as cargas de trabalho do VMware configurando vinculações de DNS. Para isso, faça o seguinte:

  1. Consiga o endereço IP do servidor DNS da nuvem privada
  2. Configurar permissões de vinculação de DNS para permitir que um principal de usuário se vincule à VPC da intranet
  3. Defina o DNS para as cargas de trabalho da VMware ou a configuração de DHCP do segmento NSX-T

Antes de começar

Só é possível configurar vinculações de DNS usando a ferramenta gcloud ou a API.

gcloud e requisitos de API

Para usar a ferramenta de linha de comando gcloud ou a API para gerenciar os recursos do VMware Engine, recomendamos configurar as ferramentas conforme descrito abaixo.

gcloud

  1. Defina o ID do projeto padrão:

    gcloud config set project PROJECT_ID
    
  2. Defina uma região e uma zona padrão.

    gcloud config set compute/region REGION
    
    gcloud config set compute/zone ZONE
    

Para mais informações sobre a ferramenta gcloud vmware, consulte os documentos de referência do SDK Cloud.

API

Os exemplos de API neste conjunto de documentação usam a ferramenta de linha de comando cURL para consultar a API. Um token de acesso válido é necessário como parte da solicitação cURL. Há muitas maneiras de conseguir um token de acesso válido. As etapas a seguir usam a ferramenta gcloud para gerar um token de acesso:

  1. Faça login no Google Cloud:

    gcloud auth login
    
  2. Gerar token de acesso e exportar para TOKEN:

    export TOKEN=`gcloud auth print-access-token`
    
  3. Verifique se o TOKEN está definido corretamente:

    echo $TOKEN
    

Use agora o token de autorização nas solicitações para a API. Exemplo:

curl -X GET -H "Authorization: Bearer \"$TOKEN\"" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

Os exemplos de código Python nesta documentação usam a biblioteca do VMware Engine para se comunicar com a API. Para usar essa abordagem, a biblioteca precisa estar instalada e o Application Default Credentials precisa estar configurado.

  1. Faça o download e instale a biblioteca Python:

    pip install google-cloud-vmwareengine
    
  2. Execute os comandos no shell para configurar as informações do ADC:

    gcloud auth application-default login
    

    Ou use um arquivo de chave da conta de serviço:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Para mais informações sobre a biblioteca, acesse a página de referência ou veja os exemplos de código no GitHub.

Receber um IP do servidor DNS de carga de trabalho da nuvem privada

Console

Para conseguir o endereço IP do servidor DNS da sua nuvem privada, siga estas etapas.

  1. No console do Google Cloud, acesse a página Nuvens privadas.

    Acessar nuvens privadas

  2. Clique no nome da nuvem privada à qual você quer se conectar.

  3. Na página Resumo da nuvem privada, em Servidores DNS privados da nuvem, clique em Copiar para copiar o endereço IP do servidor DNS privado da nuvem.

gcloud

Para conseguir o endereço IP do servidor DNS da sua nuvem privada usando a CLI do Google Cloud, use o comando gcloud vmware private-clouds describe:

 gcloud vmware private-clouds describe PRIVATE_CLOUD_ID \
  --project=PROJECT_ID \
  --location=REGION

Substitua:

  • PRIVATE_CLOUD_ID: o nome da nuvem privada para essa solicitação
  • PROJECT_ID: o ID do projeto desta solicitação
  • REGION: a região da nuvem privada. Se for uma nuvem privada estendida, especifique a zona para essa nuvem privada

API

Para conseguir o endereço IP do servidor DNS da nuvem privada usando a API VMware Engine, faça uma solicitação GET:

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/privateCloud/PRIVATE_CLOUD_ID"

Substitua:

  • PROJECT_ID: o ID do projeto desta solicitação
  • REGION: a região da nuvem privada. Se for uma nuvem privada estendida, especifique a zona para essa nuvem privada
  • PRIVATE_CLOUD_ID: o nome da nuvem privada para essa solicitação

Configurar permissões de vinculação de DNS

Só é possível configurar e gerenciar permissões de vinculação de DNS usando a ferramenta gcloud ou diretamente a API REST. Não é possível configurar vinculações por meio do console.

Conceder permissão de vinculação ao DNS

Para que um usuário configure vinculações de DNS, conceda ao principal do usuário a permissão para se vincular à VPC da intranet. Nesse caso, um principal do usuário é o endereço de e-mail do usuário que vinculará a zona de DNS particular à VPC da intranet.

gcloud

gcloud vmware dns-bind-permission grant \
  --user=USER

Substitua USER pelo e-mail do usuário que vai vincular a zona de DNS particular à VPC da intranet. Por exemplo, example1@gmail.com.

API

Faça uma solicitação POST para o método dnsBindPermissions:grant e forneça o endereço de e-mail do usuário no corpo da solicitação.

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:grant -d '
{
"principal": {
  "user": "USER"
}
}'

Substitua:

  • PROJECT_ID: o projeto para esta solicitação.
  • USER: o e-mail do usuário para quem você quer revogar as permissões. Por exemplo, example1@gmail.com.

Revogar permissão de vinculação de DNS

Revoga a permissão de vinculação de DNS que foi concedida anteriormente ao usuário.

gcloud

gcloud vmware dns-bind-permission revoke \
  --user=USER

Substitua USER pelo e-mail do usuário para quem você quer revogar as permissões. Por exemplo, example1@gmail.com.

API

Faça uma solicitação POST para dnsBindPermissions:revoke e forneça o endereço de e-mail do usuário no corpo da solicitação.

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:revoke -d '
{
"principal": {
  "user": "USER"
}
}'

Substitua:

  • PROJECT_ID: o projeto para esta solicitação.
  • USER: o e-mail do usuário para quem você quer revogar as permissões. Por exemplo, example1@gmail.com.

Descrever a permissão de vinculação do DNS

Descreve as permissões de vinculação de DNS de um projeto e qual principal do usuário tem acesso para configurar vinculações de DNS.

gcloud

gcloud vmware dns-bind-permission describe

API

Faça uma solicitação GET ao recurso dnsBindPermissions.

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission

Substitua PROJECT_ID pelo projeto para esta solicitação.

Como vincular a zona particular do Cloud DNS à VPC da intranet da rede do VMware Engine

Depois de conceder a um usuário principal as permissões para configurar vinculações de DNS, o usuário poderá criar uma vinculação entre a zona de DNS particular no Cloud DNS e a VPC da intranet da rede do VMware Engine. O VMware Engine usa peering de DNS para facilitar a resolução do Cloud DNS.

Como localizar o URL da VPC da intranet

Você precisa do URL da VPC da intranet de rede para criar a nova vinculação. Para encontrar a VPC da intranet de rede do VMware Engine, liste os detalhes da rede do VMware Engine.

Console

Para localizar o URL da VPC da intranet usando o console do Google Cloud, siga estas etapas:

  1. No console do Google Cloud, acesse a página Redes do VMware Engine.

    Acesse as redes do VMware Engine

  2. Localize a rede do VMware Engine, clique na opção Ação e selecione Copiar URL da rede VPC Intranet.

gcloud

gcloud vmware networks describe VMWARE_ENGINE_NETWORK

Substitua VMWARE_ENGINE_NETWORK pela rede a ser descrita. Como parte da resposta, gcloud retorna os detalhes da rede que contém o URL da VPC da intranet.

API

Faça uma solicitação GET para o recurso vmwareEngineNetworks e forneça o nome da rede:

curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/vmwarenEngineNetworks/NETWORK_ID

Substitua:

  • PROJECT_ID: o projeto para esta solicitação
  • NETWORK_ID: a rede a ser descrita.

Vinculação

Depois que as permissões de vinculação são configuradas, o fluxo de trabalho pretendido é adicionar um peering de DNS à VPC da intranet de rede do VMware Engine no processo padrão de gerenciamento de zonas do Cloud DNS para cada zona.

gcloud

gcloud dns managed-zones create peering-DOMAIN  \
--dns-name="DOMAIN" \
--visibility="private" \
--networks="INTRANET_VPC_URL" \
--target-project="PROJECT_ID" \
--target-network="EXISTING_VPC" \
--description="DESCRIPTION"

Substitua:

  • DOMAIN: o domínio a ser estendido, por exemplo, zone1.example.com.
  • INTRANET_VPC_URL: o URL da VPC da intranet para a rede do VMware Engine
  • EXISTING_VPC: o URL da rede VPC atual a que o DOMAIN já está vinculado
  • PROJECT_ID: o ID do projeto desta solicitação;

API

Faça uma solicitação PATCH para o recurso managedZones e forneça o nome da zona:

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://dns.googleapis.com/v1/projects/PROJECT_ID/managedZones -d "{
"name": "peering-DOMAIN",          
"description": "",
"dnsName": DOMAIN,
"peeringConfig": {
    "targetNetwork": {
        "networkUrl": EXISTING_VPC
    }
  },
  "privateVisibilityConfig": {
    "networks": [
      {
        "networkUrl": INTRANET_VPC_URL
      }
    ]
  }  
}"

Substitua:

  • PROJECT_ID: o ID do projeto desta solicitação;
  • DOMAIN: o domínio a ser estendido, por exemplo, zone1.example.com.
  • INTRANET_VPC_URL: o URL da VPC da intranet para a rede do VMware Engine.
  • EXISTING_VPC: o URL da rede VPC atual a que o DOMAIN já está vinculado

Exemplos de vinculações de DNS

Veja a seguir alguns exemplos de vinculações de DNS que podem ser usadas.

Autoritativo

gcloud dns managed-zones create zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --description="DESCRIPTION" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

Encaminhamento condicional.

gcloud dns managed-zones create zone1 \
  --description="DESCRIPTION" \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks=EXISTING_VPC \
  --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-zone1 \
  --dns-name="zone1.example.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

Encaminhando tudo

gcloud dns managed-zones create forward-all \
  --description="" --dns-name="." \
  --visibility="private" \
  --networks="EXISTING_VPC" \
  --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-forward-all \
  --dns-name="." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"

API particular do Google

gcloud dns managed-zones create googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --description="Direct GCVE traffic to Private IPs for Google API Access" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis  \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"
gcloud dns record-sets create private.googleapis.com. \
  --zone="googleapis" \
  --type="A" \
  --ttl="300" \
  --rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11"
gcloud dns record-sets create *.googleapis.com. \
  --zone="googleapis" \
  --type="CNAME" \
  --ttl="300" \
  --rrdatas="private.googleapis.com."

API do Google restrita

gcloud dns managed-zones create googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --description="Direct GCVE traffic to Private IPs for Google API Access" \
  --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis \
  --dns-name="googleapis.com." \
  --visibility="private" \
  --networks="INTRANET_VPC_URL" \
  --target-project="PROJECT_ID" \
  --target-network="EXISTING_VPC" \
  --description="DESCRIPTION"
gcloud dns record-sets create restricted.googleapis.com. \
  --zone="googleapis" \
  --type="A" \
  --ttl="300" \
  --rrdatas="199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7"
gcloud dns record-sets create *.googleapis.com. \
  --zone="googleapis" \
  --type="CNAME" \
  --ttl="300" \
  --rrdatas="restricted.googleapis.com."