Configura associazioni DNS

Questa pagina descrive come configurare le associazioni DNS per le reti VMware Engine standard.

Ogni private cloud esegue il deployment di un server Cloud DNS utilizzato per la risoluzione di tutte le appliance di gestione. Puoi configurare questo server come server DNS per tutti i carichi di lavoro VMware impostando le associazioni DNS. Per farlo, devi:

  1. Ottieni l'indirizzo IP del server DNS del cloud privato
  2. Configura le autorizzazioni di associazione DNS per consentire a un'entità utente di eseguire l'associazione al VPC intranet
  3. Configura il DNS per i carichi di lavoro VMware o l'impostazione DNS DHCP per il segmento NSX-T

Prima di iniziare

Puoi configurare le associazioni DNS solo utilizzando lo strumento gcloud o l'API.

Requisiti di gcloud e API

Per utilizzare lo strumento a riga di comando gcloud o l'API per gestire le risorse di VMware Engine, ti consigliamo di configurare gli strumenti come descritto di seguito.

gcloud

  1. Imposta l'ID progetto predefinito:

    gcloud config set project PROJECT_ID
    
  2. Imposta una regione e una zona predefinite:

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

Per ulteriori informazioni 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 eseguire una query sull'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:

  1. Accedi a Google Cloud:

    gcloud auth login
    
  2. Genera il token di accesso ed esportalo in TOKEN:

    export TOKEN=`gcloud auth print-access-token`
    
  3. 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.

  1. Scarica e installa la libreria Python:

    pip install google-cloud-vmwareengine
    
  2. Configura le informazioni ADC eseguendo questi comandi nella shell:

    gcloud auth application-default login
    

    In alternativa, utilizza un file di chiavi dell'account di servizio:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Per maggiori informazioni sulla libreria, visita la pagina di riferimento o visualizza gli esempi di codice su GitHub.

Ottenere l'IP del server DNS del carico di lavoro del cloud privato

Console

Per ottenere l'indirizzo IP del server DNS del tuo private cloud, segui questi passaggi.

  1. Nella console Google Cloud, vai alla pagina Nuvole private.

    Vai a Private Cloud

  2. Fai clic sul nome del private cloud a cui vuoi connetterti.

  3. Nella pagina Riepilogo per il cloud privato, in Private Cloud DNS server, fai clic su Copia per copiare l'indirizzo IP del server Cloud DNS privato.

gcloud

Per ottenere l'indirizzo IP del server DNS del 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 richiesta
  • PROJECT_ID: l'ID progetto per questa richiesta
  • REGION: la regione del cloud privato; se Questo è un cloud privato ampliato, specifica la zona per cloud

API

Per ottenere l'indirizzo IP del server DNS del cloud privato utilizzando l'API VMware Engine, effettua 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 richiesta
  • REGION: la regione del cloud privato; se si tratta di un cloud privato ampliato, specifica la zona per questo cloud privato
  • PRIVATE_CLOUD_ID: il nome del cloud privato per questa richiesta.

Configura autorizzazioni di binding DNS

Puoi configurare e gestire le autorizzazioni di binding DNS solo utilizzando lo strumento gcloud oppure direttamente usando l'API REST. Non è possibile configurare le associazioni tramite la console.

Concedi autorizzazione di associazione DNS

Affinché un utente possa configurare le associazioni DNS, devi concedere a un principale utente l'autorizzazione per eseguire l'associazione alla VPC intranet. In questo caso, un'entità utente l'indirizzo email dell'utente che assocerà la zona DNS privata al rete VPC intranet.

gcloud

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

Sostituisci USER con l'email dell'utente che vincola l'account la 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'indirizzo email dell'utente per cui vuoi revocare le autorizzazioni. Ad esempio, example1@gmail.com.

Revoca autorizzazione di associazione DNS

Revoca l'autorizzazione DNS Bind concessa in precedenza all'utente.

gcloud

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

Sostituisci USER con l'indirizzo email dell'utente per cui vuoi revocare le autorizzazioni. Ad esempio, example1@gmail.com.

API

Effettua una richiesta POST a dnsBindPermissions:revoke e fornisci l'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'indirizzo email dell'utente per cui vuoi revocare le autorizzazioni. Ad esempio, example1@gmail.com.

Descrivi l'autorizzazione di associazione DNS

Descrive le autorizzazioni di associazione DNS per un progetto e l'entità utente che ha accesso per configurare le associazioni 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

Dopo aver concesso a un utente principale le autorizzazioni per configurare le associazioni DNS, l'utente può creare un'associazione tra la zona DNS privata in Cloud DNS e la VPC intranet della rete VMware Engine. VMware Engine utilizza il peering DNS per semplificare la risoluzione di Cloud DNS.

Localizzazione dell'URL VPC Intranet

Per creare la nuova associazione, devi disporre dell'URL VPC dell'intranet della rete. Puoi trovare il VPC intranet della rete VMware Engine elencando i dettagli della rete VMware Engine.

Console

Per individuare l'URL VPC Intranet utilizzando la console Google Cloud, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Reti VMware Engine.

    Vai alle reti VMware Engine

  2. 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. Come parte della risposta, gcloud restituisce i dettagli della rete che contiene l'URL VPC dell'intranet.

API

Effettua una richiesta GET alla risorsa vmwareEngineNetworks e fornisci 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 richiesta
  • NETWORK_ID: la rete da descrivere

Associazione

Il flusso di lavoro previsto, una volta configurate le autorizzazioni di associazione, aggiungi un peering DNS al VPC intranet della rete VMware Engine nel tuo ambiente Processo di gestione delle zone di 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 esteso, ad esempio zone1.example.com
  • INTRANET_VPC_URL: l'URL della rete VPC intranet per la rete VMware Engine
  • EXISTING_VPC: l'URL della rete VPC esistente a cui è già associato DOMAIN
  • PROJECT_ID: l'ID progetto per questa richiesta

API

Effettua una richiesta PATCH alla risorsa managedZones e fornisci 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 richiesta
  • DOMAIN: il dominio da esteso, ad esempio zone1.example.com
  • INTRANET_VPC_URL: l'URL VPC intranet per la rete VMware Engine.
  • EXISTING_VPC: l'URL della rete VPC esistente a cui DOMAIN è già associato

Esempi di associazioni DNS

Di seguito sono riportati alcuni esempi di associazioni 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"

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

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

API di Google limitata

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