Configurare 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 tutte le appliance di gestione. Puoi configurare questo server come server DNS per tutti i carichi di lavoro VMware configurando i binding DNS. Per farlo, devi:

  1. Recuperare l'indirizzo IP del server DNS del cloud privato
  2. Configurare le autorizzazioni di binding DNS per consentire a un'entità utente di eseguire il binding al VPC intranet
  3. Configurare il DNS per i 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

  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 query sull'API. È necessario un token di accesso valido come parte 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, è necessario installare la libreria e configurare le credenziali predefinite dell'applicazione.

  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 chiave dell'account di servizio:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

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

Recuperare l'indirizzo IP del server DNS del carico di lavoro del cloud privato

Console

Per recuperare l'indirizzo IP del server DNS del cloud privato, segui questi passaggi.

  1. Nella Google Cloud console, vai alla pagina Cloud privati.

    Vai a Cloud privati

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

  3. Fai clic sul nome del cloud privato.

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

gcloud

Per recuperare l'indirizzo IP del server DNS del cloud privato utilizzando Google Cloud CLI, utilizza il gcloud vmware private-clouds describe comando:

 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 si tratta di un cloud privato esteso, specifica la zona per questo cloud privato

API

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

Configurare le autorizzazioni di binding DNS

Puoi configurare e gestire le autorizzazioni di binding DNS 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'entità utente l'autorizzazione a eseguire il binding al VPC intranet. In questo caso, un'entità utente è l'indirizzo email dell'utente che eseguirà il binding della zona DNS privata con il VPC intranet.

gcloud

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

Sostituisci quanto segue:

  • USER: l'indirizzo email dell'utente che eseguirà il binding della zona DNS privata con il VPC intranet; ad esempio, example1@gmail.com
  • PROJECT_ID: l'ID progetto per questa richiesta

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 il quale vuoi revocare le autorizzazioni. Ad esempio, example1@gmail.com.

Revocare l'autorizzazione di binding DNS

Revoca l'autorizzazione di binding DNS precedentemente concessa all'utente.

gcloud

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

Sostituisci quanto segue:

  • USER: l'indirizzo email dell'utente per il quale vuoi revocare le autorizzazioni; ad esempio, example1@gmail.com
  • PROJECT_ID: l'ID progetto per questa richiesta

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'indirizzo email dell'utente per il quale vuoi revocare le autorizzazioni. Ad esempio, example1@gmail.com.

Descrivere l'autorizzazione di binding DNS

Descrive le autorizzazioni di binding DNS per un progetto e l'entità utente che ha accesso alla configurazione dei binding DNS.

gcloud

gcloud vmware dns-bind-permission describe \
--project=PROJECT_ID

Sostituisci PROJECT_ID con l'ID progetto per questa richiesta.

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.

Eseguire il binding della zona DNS del cloud privato con il VPC intranet della rete VMware Engine

Una volta concesse a un'entità utente le autorizzazioni 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 del VPC intranet

Per creare il nuovo binding, devi disporre dell'URL del VPC intranet della rete. Puoi trovare il VPC intranet della rete VMware Engine elencando i dettagli della rete VMware Engine.

Console

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

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

    Vai a Reti VMware Engine

  2. Fai clic su Seleziona un progetto e poi seleziona l'organizzazione, la cartella o il progetto che contiene la rete VMware Engine.

  3. 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 \
--project=PROJECT_ID

Sostituisci quanto segue:

  • VMWARE_ENGINE_NETWORK: la rete da descrivere
  • PROJECT_ID: l'ID progetto per questa richiesta

API

Invia 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

Binding

Una volta configurate le autorizzazioni di binding, il flusso di lavoro previsto consiste nell'aggiungere un peering DNS al VPC intranet della rete VMware Engine al processo di gestione delle zone Cloud DNS standard 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 esempio zone1.example.com
  • INTRANET_VPC_URL: l'URL del VPC intranet per la rete VMware Engine
  • EXISTING_VPC: l'URL della rete VPC esistente a cui è già associato il DOMAIN
  • PROJECT_ID: l'ID progetto per questa richiesta

API

Invia 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 estendere, ad esempio zone1.example.com
  • INTRANET_VPC_URL: l'URL del VPC intranet per la rete VMware Engine.
  • EXISTING_VPC: l'URL della rete VPC esistente a cui è già associato il DOMAIN

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

Forwarding di tutti

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 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 Google limitate

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