Configurer les liaisons DNS

Cette page explique comment configurer les liaisons DNS pour les réseaux VMware Engine standards.

Chaque cloud privé déploie un serveur Cloud DNS qui est utilisé pour la résolution de tous les appliances de gestion. Vous pouvez configurer ce serveur comme serveur DNS pour toutes les charges de travail VMware en configurant des liaisons DNS. Pour ce faire, vous devez procéder comme suit :

  1. Obtenir l'adresse IP du serveur DNS du cloud privé
  2. Configurer les autorisations de liaison DNS pour autoriser un principal utilisateur à se lier au VPC intranet
  3. Configurer le DNS pour vos charges de travail VMware ou le paramètre DNS DHCP du segment NSX

Avant de commencer

Vous ne pouvez configurer les liaisons DNS qu'à l'aide de l'outil gcloud ou de l'API.

Exigences concernant gcloud et l'API

Pour utiliser l'outil de ligne de commande gcloud ou l'API afin de gérer vos ressources VMware Engine, nous vous recommandons de configurer les outils comme décrit ci-dessous.

gcloud

  1. Définissez votre ID de projet par défaut :

    gcloud config set project PROJECT_ID
    
  2. Définissez une région et une zone par défaut :

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

Pour en savoir plus sur l'outil gcloud vmware, consultez la documentation de référence de Cloud SDK Cloud.

API

Les exemples d'API de cet ensemble de documentation utilisent l'outil de ligne de commande cURL pour interroger l'API. Un jeton d'accès valide est requis dans la requête cURL. Il existe de nombreuses façons d'obtenir un jeton d'accès valide. Les étapes suivantes utilisent l'outil gcloud pour générer un jeton d'accès :

  1. Connectez-vous à Google Cloud:

    gcloud auth login
    
  2. Générez un jeton d'accès et exportez-le vers TOKEN :

    export TOKEN=`gcloud auth print-access-token`
    
  3. Vérifiez que TOKEN est correctement défini :

    echo $TOKEN
    

Utilisez maintenant le jeton d'autorisation dans vos requêtes à l'API. Exemple :

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

Les exemples de code Python de cette documentation utilisent la bibliothèque VMware Engine pour communiquer avec l'API. Pour pouvoir utiliser cette approche, la bibliothèque doit être installée et les identifiants par défaut de l'application doivent être configurés.

  1. Téléchargez et installez la bibliothèque Python :

    pip install google-cloud-vmwareengine
    
  2. Configurez les informations ADC en exécutant ces commandes dans votre shell :

    gcloud auth application-default login
    

    Vous pouvez également utiliser un fichier de clé de compte de service :

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Pour en savoir plus sur la bibliothèque, consultez la page de référence ou affichez des exemples de code sur GitHub.

Obtenir l'adresse IP d'un serveur DNS de charge de travail de cloud privé

Console

Pour obtenir l'adresse IP du serveur DNS de votre cloud privé, procédez comme suit.

  1. Dans la Google Cloud console, accédez à la page Clouds privés.

    Accéder à Clouds privés

  2. Cliquez sur Sélectionner un projet, puis sélectionnez l'organisation, le dossier ou le projet contenant le cloud privé auquel vous souhaitez vous connecter.

  3. Cliquez sur le nom du cloud privé.

  4. Sur la page Résumé du cloud privé, sous Serveurs DNS du cloud privé, cliquez sur Copier pour copier l'adresse IP du serveur Cloud DNS privé.

gcloud

Pour obtenir l'adresse IP du serveur DNS de votre cloud privé à l'aide de la Google Cloud CLI, utilisez la gcloud vmware private-clouds describe commande :

 gcloud vmware private-clouds describe PRIVATE_CLOUD_ID \
  --project=PROJECT_ID \
  --location=REGION

Remplacez les éléments suivants :

  • PRIVATE_CLOUD_ID : nom du cloud privé pour cette requête
  • PROJECT_ID : ID du projet pour cette requête
  • REGION : région du cloud privé. S'il s'agit d'un cloud privé étendu, spécifiez la zone de ce cloud privé.

API

Pour obtenir l'adresse IP du serveur DNS de votre cloud privé à l'aide de l'API VMware Engine, envoyez une requête 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"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête
  • REGION: région du cloud privé. S'il s'agit d'un cloud privé étendu, spécifiez la zone de ce cloud privé.
  • PRIVATE_CLOUD_ID: nom du cloud privé pour cette requête.

Configurer les autorisations de liaison DNS

Vous ne pouvez configurer et gérer les autorisations de liaison DNS qu'à l'aide de l'outil gcloud ou directement à l'aide de l'API REST. Il n'est pas possible de configurer des liaisons via la console.

Accorder l'autorisation de liaison DNS

Pour qu'un utilisateur puisse configurer des liaisons DNS, vous devez accorder à un principal utilisateur l'autorisation de se lier au VPC intranet. Dans ce cas, un principal utilisateur correspond à l'adresse e-mail de l'utilisateur qui liera la zone DNS privée au VPC intranet.

gcloud

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

Remplacez les éléments suivants :

  • USER: adresse e-mail de l'utilisateur qui va lier la zone DNS privée au VPC intranet, par exemple example1@gmail.com
  • PROJECT_ID : ID du projet pour cette requête

API

Envoyez une requête POST à la méthode dnsBindPermissions:grant et fournissez l'adresse e-mail de l'utilisateur dans le corps de la requête.

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"
}
}'

Remplacez les éléments suivants :

  • PROJECT_ID : projet pour cette requête.
  • USER: adresse e-mail de l'utilisateur pour lequel vous souhaitez révoquer les autorisations. Par exemple, example1@gmail.com.

Révoquer l'autorisation de liaison DNS

Révoque l'autorisation de liaison DNS précédemment accordée à l'utilisateur.

gcloud

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

Remplacez les éléments suivants :

  • USER: adresse e-mail de l'utilisateur pour lequel vous souhaitez révoquer les autorisations, par exemple example1@gmail.com
  • PROJECT_ID : ID du projet pour cette requête

API

Envoyez une requête POST à dnsBindPermissions:revoke et fournissez l'adresse e-mail de l'utilisateur dans le corps de la requête.

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"
}
}'

Remplacez les éléments suivants :

  • PROJECT_ID : projet pour cette requête.
  • USER: adresse e-mail de l'utilisateur pour lequel vous souhaitez révoquer les autorisations. Par exemple, example1@gmail.com.

Décrire l'autorisation de liaison DNS

Décrit les autorisations de liaison DNS pour un projet et le principal utilisateur qui est autorisé à configurer les liaisons DNS.

gcloud

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

Remplacez PROJECT_ID par l'ID du projet pour cette requête.

API

Envoyez une requête GET à la ressource 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

Remplacez PROJECT_ID par le projet pour cette requête.

Lier la zone DNS du cloud privé au VPC intranet du réseau VMware Engine

Une fois que vous avez accordé à un principal utilisateur les autorisations nécessaires pour configurer les liaisons DNS, il peut créer une liaison entre la zone DNS privée dans Cloud DNS et le VPC intranet du réseau VMware Engine. VMware Engine utilise l'appairage DNS pour faciliter la résolution Cloud DNS.

Localiser l'URL du VPC intranet

Vous avez besoin de l'URL du VPC intranet du réseau pour créer la liaison. Pour trouver le VPC intranet du réseau VMware Engine, listez les détails du réseau VMware Engine.

Console

Pour localiser l'URL du VPC intranet à l'aide de la Google Cloud console, procédez comme suit :

  1. Dans la Google Cloud console, accédez à la page Réseaux VMware Engine.

    Accéder à Réseaux VMware Engine

  2. Cliquez sur Sélectionner un projet, puis sélectionnez l'organisation, le dossier ou le projet contenant le réseau VMware Engine.

  3. Recherchez le réseau VMware Engine, cliquez sur l'option Action , puis sélectionnez Copier l'URL du réseau VPC intranet.

gcloud

gcloud vmware networks describe VMWARE_ENGINE_NETWORK \
--project=PROJECT_ID

Remplacez les éléments suivants :

  • VMWARE_ENGINE_NETWORK : réseau à décrire
  • PROJECT_ID : ID du projet pour cette requête

API

Envoyez une requête GET à la ressource vmwareEngineNetworks et fournissez le nom du réseau :

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

Remplacez les éléments suivants :

  • PROJECT_ID : projet pour cette requête
  • NETWORK_ID : réseau à décrire

Liaison

Une fois les autorisations de liaison configurées, le workflow prévu consiste à ajouter un appairage DNS au VPC intranet du réseau VMware Engine dans votre processus de gestion de zone Cloud DNS standard pour chaque zone.

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"

Remplacez les éléments suivants :

  • DOMAIN : domaine à étendre, par exemple zone1.example.com
  • INTRANET_VPC_URL: URL du VPC intranet pour le réseau VMware Engine
  • EXISTING_VPC: URL du réseau VPC existant auquel le DOMAIN est déjà lié
  • PROJECT_ID : ID du projet pour cette requête

API

Envoyez une requête PATCH à la ressource managedZones et fournissez le nom de la zone :

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
      }
    ]
  }  
}"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête
  • DOMAIN : domaine à étendre, par exemple zone1.example.com
  • INTRANET_VPC_URL : URL du VPC intranet pour le réseau VMware Engine.
  • EXISTING_VPC : URL du réseau VPC existant auquel le DOMAIN est déjà lié

Exemples de liaisons DNS

Voici quelques exemples de liaisons DNS que vous pouvez utiliser.

Primaire

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"

Transfert conditionnel

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"

Transfert de tout

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 privée

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 dont l'accès est limité

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