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:
- Obtenha o endereço IP do servidor DNS da nuvem privada
- Configure as autorizações de associação de DNS para permitir que um principal do utilizador se associe à VPC da intranet
- 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
Defina o ID do projeto predefinido:
gcloud config set project PROJECT_ID
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:
Inicie sessão em Google Cloud:
gcloud auth login
Gere o token de acesso e exporte-o para TOKEN:
export TOKEN=`gcloud auth print-access-token`
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.
Transfira e instale a biblioteca Python:
pip install google-cloud-vmwareengine
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.
Na Google Cloud consola, aceda à página Nuvens privadas.
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.
Clique no nome da nuvem privada.
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 pedidoPROJECT_ID
: o ID do projeto para este pedidoREGION
: 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 pedidoREGION
: a região da nuvem privada; se for uma nuvem privada expandida, especifique a zona desta nuvem privadaPRIVATE_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 POST
dnsBindPermissions: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:
Na Google Cloud consola, aceda à página Redes do VMware Engine.
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.
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 pedidoNETWORK_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 pedidoDOMAIN
: 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."