Configura i binding DNS
Questa pagina descrive come configurare i binding DNS per le reti VMware Engine standard.
Ogni cloud privato esegue il deployment di un server Cloud DNS utilizzato per la risoluzione di tutti gli appliance di gestione. Puoi configurare questo server come server DNS per tutti i carichi di lavoro VMware configurando i binding DNS. Per farlo, devi:
- Ottieni l'indirizzo IP del server DNS di Private Cloud
- Configura le autorizzazioni di binding DNS per consentire a un principal utente di eseguire il binding al VPC intranet
- Configura il DNS per i tuoi carichi di lavoro VMware o l'impostazione DNS DHCP del segmento NSX
Prima di iniziare
Puoi configurare i binding DNS solo utilizzando lo strumento gcloud
o l'API.
Requisiti di gcloud e dell'API
Per utilizzare lo strumento a riga di comando gcloud
o l'API per gestire le risorse VMware Engine, ti consigliamo di configurare gli strumenti come descritto di seguito.
gcloud
Imposta l'ID progetto predefinito:
gcloud config set project PROJECT_ID
Imposta una regione e una zona predefinite:
gcloud config set compute/region REGION
gcloud config set compute/zone ZONE
Per saperne di più sullo strumento gcloud vmware
,
consulta la documentazione di riferimento di Cloud SDK.
API
Gli esempi di API in questo set di documentazione utilizzano lo strumento a riga di comando cURL
per
interrogare l'API. È necessario un token di accesso valido nell'ambito della richiesta cURL
. Esistono molti modi per ottenere un token di accesso valido. I seguenti
passaggi utilizzano lo strumento gcloud
per generare un token di accesso:
Accedi a Google Cloud:
gcloud auth login
Genera token di accesso ed esportalo in TOKEN:
export TOKEN=`gcloud auth print-access-token`
Verifica che TOKEN sia impostato correttamente:
echo $TOKEN
Ora utilizza il token di autorizzazione nelle richieste all'API. Ad esempio:
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
Gli esempi di codice Python in questa documentazione utilizzano la libreria VMware Engine per comunicare con l'API. Per poter utilizzare questo approccio, la libreria deve essere installata e le credenziali predefinite dell'applicazione devono essere configurate.
Scarica e installa la libreria Python:
pip install google-cloud-vmwareengine
Configura le informazioni ADC eseguendo questi comandi nella shell:
gcloud auth application-default login
In alternativa, utilizza un file di chiave del service account:
export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
Per maggiori informazioni sulla libreria, visita la pagina di riferimento o visualizza gli esempi di codice su GitHub.
Recupera l'IP di un server DNS del carico di lavoro del cloud privato
Console
Per ottenere l'indirizzo IP del server DNS del tuo cloud privato, segui questi passaggi.
Nella console Google Cloud , vai alla pagina Cloud privati.
Fai clic su Seleziona un progetto e poi seleziona l'organizzazione, la cartella o il progetto che contiene il cloud privato a cui vuoi connetterti.
Fai clic sul nome del cloud privato.
Nella pagina Riepilogo del cloud privato, in Server DNS di Private Cloud, fai clic su Copia per copiare l'indirizzo IP del server Cloud DNS privato.
gcloud
Per ottenere l'indirizzo IP del server DNS del tuo cloud privato utilizzando
Google Cloud CLI, utilizza il comando gcloud vmware private-clouds describe
:
gcloud vmware private-clouds describe PRIVATE_CLOUD_ID \ --project=PROJECT_ID \ --location=REGION
Sostituisci quanto segue:
PRIVATE_CLOUD_ID
: il nome del cloud privato per questa richiestaPROJECT_ID
: l'ID progetto per questa richiestaREGION
: la regione del cloud privato; se si tratta di un cloud privato esteso, specifica la zona per questo cloud privato
API
Per ottenere l'indirizzo IP del server DNS del tuo cloud privato utilizzando l'API VMware Engine,
invia una richiesta 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"
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto per questa richiestaREGION
: la regione del cloud privato; se si tratta di un cloud privato esteso, specifica la zona per questo cloud privatoPRIVATE_CLOUD_ID
: il nome del cloud privato per questa richiesta.
Configurare le autorizzazioni di bind DNS
Puoi configurare e gestire le autorizzazioni DNS bind solo utilizzando lo strumento gcloud
o
direttamente tramite l'API REST. Non è possibile configurare i binding
tramite la console.
Concedere l'autorizzazione di binding DNS
Affinché un utente possa configurare i binding DNS, devi concedere a un principal utente l'autorizzazione a eseguire il binding al VPC intranet. In questo caso, un principal utente è l'indirizzo email dell'utente che collegherà la zona DNS privata al VPC intranet.
gcloud
gcloud vmware dns-bind-permission grant \ --user=USER
Sostituisci USER con l'email dell'utente che eseguirà il binding della zona DNS privata con il VPC intranet. Ad esempio, example1@gmail.com
.
API
Invia una richiesta POST
al metodo dnsBindPermissions:grant
e fornisci l'indirizzo email dell'utente nel corpo della richiesta.
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" } }'
Sostituisci quanto segue:
PROJECT_ID
: il progetto per questa richiesta.USER
: l'email dell'utente a cui vuoi revocare le autorizzazioni. Ad esempio,example1@gmail.com
.
Revoca dell'autorizzazione DNS Bind
Revoca l'autorizzazione DNS Bind precedentemente concessa all'utente.
gcloud
gcloud vmware dns-bind-permission revoke \ --user=USER
Sostituisci USER con l'email dell'utente per cui vuoi revocare
le autorizzazioni. Ad esempio, example1@gmail.com
.
API
Invia una richiesta POST
a dnsBindPermissions:revoke
e fornisci l'indirizzo email dell'utente nel corpo della richiesta.
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" } }'
Sostituisci quanto segue:
PROJECT_ID
: il progetto per questa richiesta.USER
: l'email dell'utente a cui vuoi revocare le autorizzazioni. Ad esempio,example1@gmail.com
.
Descrivere l'autorizzazione DNS bind
Descrive le autorizzazioni di binding DNS per un progetto e quale principal utente ha accesso per configurare i binding DNS.
gcloud
gcloud vmware dns-bind-permission describe
API
Invia una richiesta GET
alla risorsa 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
Sostituisci PROJECT_ID
con il progetto per questa richiesta.
Associazione della zona DNS del cloud privato al VPC intranet della rete VMware Engine
Una volta concessa a un principal utente l'autorizzazione per configurare i binding DNS, l'utente può creare un binding tra la zona DNS privata in Cloud DNS e il VPC intranet della rete VMware Engine. VMware Engine utilizza il peering DNS per facilitare la risoluzione di Cloud DNS.
Individuare l'URL VPC Intranet
Per creare il nuovo binding, è necessario l'URL VPC intranet di rete. La rete VPC intranet della rete VMware Engine può essere trovata elencando i dettagli della rete VMware Engine.
Console
Per individuare l'URL del VPC intranet utilizzando la console Google Cloud , segui questi passaggi:
Nella console Google Cloud , vai alla pagina Reti VMware Engine.
Fai clic su Seleziona un progetto e poi seleziona l'organizzazione, la cartella o il progetto che contiene la rete VMware Engine.
Individua la rete VMware Engine, fai clic sull'opzione Azione e seleziona Copia URL rete VPC Intranet.
gcloud
gcloud vmware networks describe VMWARE_ENGINE_NETWORK
Sostituisci VMWARE_ENGINE_NETWORK
con la rete da
descrivere. Nell'ambito della risposta, gcloud
restituisce i dettagli della rete
che contiene l'URL VPC intranet.
API
Effettua una richiesta GET
alla risorsa vmwareEngineNetworks
e specifica il nome della rete:
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
Sostituisci quanto segue:
PROJECT_ID
: il progetto per questa richiestaNETWORK_ID
: la rete da descrivere
Associazione
Il flusso di lavoro previsto, una volta configurate le autorizzazioni di binding, consiste nell'aggiungere un peering DNS al VPC intranet della rete VMware Engine alla procedura standard di gestione delle zone Cloud DNS per ogni 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"
Sostituisci quanto segue:
DOMAIN
: il dominio da estendere, ad esempiozone1.example.com
INTRANET_VPC_URL
: l'URL VPC intranet per la rete VMware EngineEXISTING_VPC
: l'URL della rete VPC esistente a cui è già associatoDOMAIN
PROJECT_ID
: l'ID progetto per questa richiesta
API
Effettua una richiesta PATCH
alla risorsa managedZones
e specifica il nome della 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 } ] } }"
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto per questa richiestaDOMAIN
: il dominio da estendere, ad esempiozone1.example.com
INTRANET_VPC_URL
: l'URL VPC intranet per la rete VMware Engine.EXISTING_VPC
: l'URL della rete VPC esistente a cui è già associato DOMAIN
Esempio di binding DNS
Di seguito sono riportati alcuni esempi di binding DNS che potresti utilizzare.
Autorevole
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"
Forwarding condizionale
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"
Inoltro di tutte le chiamate
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 Google privata
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 Google con limitazioni
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."