Configure as associações de DNS

Esta página descreve como configurar associações de DNS para redes do VMware Engine padrão.

Cada nuvem privada implementa um servidor DNS da nuvem que é usado para toda a resolução de dispositivos de gestão. Pode configurar este servidor como o servidor DNS para todas as cargas de trabalho do VMware configurando associações DNS. Para o fazer, tem de:

  1. Obtenha o endereço IP do servidor DNS da nuvem privada
  2. Configure as autorizações de associação de DNS para permitir que um principal do utilizador se associe à VPC da intranet
  3. Configure o DNS para as suas cargas de trabalho VMware ou a definição de DNS DHCP do segmento NSX

Antes de começar

Só pode configurar associações de DNS através da ferramenta gcloud ou da API.

Requisitos da API e da gcloud

Para usar a ferramenta de linha de comandos gcloud ou a API para gerir os recursos do VMware Engine, recomendamos que configure as ferramentas conforme descrito abaixo.

gcloud

  1. Defina o ID do projeto predefinido:

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

    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 Cloud SDK.

API

Os exemplos de API neste conjunto de documentação usam a ferramenta de linha de comandos cURL para consultar a API. É necessária uma chave de acesso válida como parte do pedido.cURL Existem várias formas de obter um token de acesso válido. Os passos seguintes usam a ferramenta gcloud para gerar um token de acesso:

  1. Inicie sessão em Google Cloud:

    gcloud auth login
    
  2. Gere o token de acesso e exporte-o para TOKEN:

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

    echo $TOKEN
    

Agora, use o token de autorização nos seus pedidos à API. Por 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 VMware Engine para comunicar com a API. Para poder usar esta abordagem, a biblioteca tem de estar instalada e as credenciais predefinidas da aplicação devem estar configuradas.

  1. Transfira e instale a biblioteca Python:

    pip install google-cloud-vmwareengine
    
  2. Configure as informações do ADC executando esses comandos na shell:

    gcloud auth application-default login
    

    Em alternativa, use um ficheiro de chave da conta de serviço:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

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

Obtenha o IP do servidor DNS de uma carga de trabalho na nuvem privada

Consola

Para obter o endereço IP do servidor DNS da sua nuvem privada, siga estes passos.

  1. Na Google Cloud consola, aceda à página Nuvens privadas.

    Aceda a Nuvens privadas

  2. Clique em Selecionar um projeto e, de seguida, selecione a organização, a pasta ou o projeto que contém a nuvem privada à qual quer estabelecer ligação.

  3. Clique no nome da nuvem privada.

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

gcloud

Para obter o endereço IP do servidor DNS da sua nuvem privada através da Google Cloud CLI, use o comando gcloud vmware private-clouds describe:

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

Substitua o seguinte:

  • PRIVATE_CLOUD_ID: o nome da nuvem privada para este pedido
  • PROJECT_ID: o ID do projeto para este pedido
  • REGION: a região da nuvem privada; se for uma nuvem privada expandida, especifique a zona desta nuvem privada

API

Para obter o endereço IP do servidor DNS da sua nuvem privada através da API VMware Engine, faça um pedido 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 o seguinte:

  • PROJECT_ID: o ID do projeto para este pedido
  • REGION: a região da nuvem privada; se for uma nuvem privada expandida, especifique a zona desta nuvem privada
  • PRIVATE_CLOUD_ID: o nome da nuvem privada para este pedido.

Configure as autorizações de associação de DNS

Só pode configurar e gerir autorizações de associação de DNS através da ferramenta gcloud ou diretamente através da API REST. Não é possível configurar associações através da consola.

Conceda autorização de vinculação de DNS

Para que um utilizador possa configurar associações de DNS, tem de conceder a um principal do utilizador a autorização para se associar à VPC da intranet. Neste caso, uma conta principal do utilizador é o endereço de email do utilizador que vai associar a zona DNS privada à VPC da intranet.

gcloud

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

Substitua USER pelo email do utilizador que vai associar a zona DNS privada à VPC da intranet. Por exemplo, example1@gmail.com.

API

Faça um pedido POST ao método dnsBindPermissions:grant e faculte o endereço de email do utilizador no corpo do pedido.

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 o seguinte:

  • PROJECT_ID: o projeto para este pedido.
  • USER: o email do utilizador para o qual quer revogar autorizações. Por exemplo, example1@gmail.com.

Revogue a autorização de associação de DNS

Revoga a autorização de associação de DNS que foi concedida anteriormente ao utilizador.

gcloud

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

Substitua USER pelo email do utilizador para o qual quer revogar as autorizações. Por exemplo, example1@gmail.com.

API

Faça um pedido para POSTdnsBindPermissions:revoke e faculte o endereço de email do utilizador no corpo do pedido.

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 o seguinte:

  • PROJECT_ID: o projeto para este pedido.
  • USER: o email do utilizador para o qual quer revogar autorizações. Por exemplo, example1@gmail.com.

Descreva a autorização de vinculação de DNS

Descreve as autorizações de vinculação de DNS para um projeto e que principal do utilizador tem acesso para configurar vinculações de DNS.

gcloud

gcloud vmware dns-bind-permission describe

API

Faça um pedido 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 este pedido.

Associar a zona de DNS da nuvem privada à VPC da intranet da rede do VMware Engine

Depois de conceder ao principal do utilizador as autorizações para configurar associações de DNS, o utilizador pode criar uma associação entre a zona DNS privada no Cloud DNS e a VPC da intranet da rede do VMware Engine. O VMware Engine usa o intercâmbio de tráfego de DNS para facilitar a resolução de DNS do Cloud DNS.

Localizar o URL da VPC da intranet

Precisa do URL da VPC da intranet da rede para criar a nova associação. Pode encontrar a intranet da rede da VPC do VMware Engine listando os detalhes da rede do VMware Engine.

Consola

Para localizar o URL da VPC da intranet através da Google Cloud consola, siga estes passos:

  1. Na Google Cloud consola, aceda à página Redes do VMware Engine.

    Aceda às redes do VMware Engine

  2. Clique em Selecionar um projeto e, de seguida, selecione a organização, a pasta ou o projeto que contém a rede do VMware Engine.

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

gcloud

gcloud vmware networks describe VMWARE_ENGINE_NETWORK

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

API

Faça um pedido GET ao recurso vmwareEngineNetworks e indique 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 o seguinte:

  • PROJECT_ID: o projeto para este pedido
  • NETWORK_ID: a rede a descrever

Encadernação

O fluxo de trabalho pretendido, depois de configuradas as autorizações de associação, é adicionar uma interligação de DNS à VPC da intranet da rede do VMware Engine no seu processo de gestão de zonas do Cloud DNS padrão 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 o seguinte:

  • DOMAIN: o domínio a ser alargado. Exemplo: zone1.example.com
  • INTRANET_VPC_URL: o URL da VPC da intranet para a rede do VMware Engine
  • : o URL da rede VPC existente à qual o DOMAIN já está associadoEXISTING_VPC
  • PROJECT_ID: o ID do projeto para este pedido

API

Faça um pedido PATCH ao recurso managedZones e indique 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 o seguinte:

  • PROJECT_ID: o ID do projeto para este pedido
  • DOMAIN: o domínio a ser alargado. 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 existente à qual o DOMAIN já está associado

Exemplo de associações de DNS

Seguem-se alguns exemplos de associações de DNS que pode usar.

Autoritário

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"

Encaminhamento de 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"

Google API Private

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

Google API Restricted

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