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:
- Consiga o endereço IP do servidor DNS da nuvem privada
- Configurar permissões de vinculação de DNS para permitir que um principal de usuário se vincule à VPC da intranet
- 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
Defina o ID do projeto padrão:
gcloud config set project PROJECT_ID
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:
Faça login no Google Cloud:
gcloud auth login
Gerar token de acesso e exportar para TOKEN:
export TOKEN=`gcloud auth print-access-token`
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.
Faça o download e instale a biblioteca Python:
pip install google-cloud-vmwareengine
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.
No console do Google Cloud, acesse a página Nuvens privadas.
Clique no nome da nuvem privada à qual você quer se conectar.
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çãoPROJECT_ID
: o ID do projeto desta solicitaçãoREGION
: 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çãoREGION
: a região da nuvem privada. Se for uma nuvem privada estendida, especifique a zona para essa nuvem privadaPRIVATE_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:
No console do Google Cloud, acesse a página Redes do VMware Engine.
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çãoNETWORK_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 EngineEXISTING_VPC
: o URL da rede VPC atual a que oDOMAIN
já está vinculadoPROJECT_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."