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 utilisé pour la résolution de tous les dispositifs 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 :
- Obtenir l'adresse IP du serveur DNS du cloud privé
- Configurer les autorisations de liaison DNS pour permettre à un principal utilisateur de se lier au VPC intranet
- 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 relatives à 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
Définissez votre ID de projet par défaut :
gcloud config set project PROJECT_ID
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 :
Se connecter à Google Cloud :
gcloud auth login
Générez un jeton d'accès et exportez-le vers TOKEN :
export TOKEN=`gcloud auth print-access-token`
Vérifiez que le 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 d'application par défaut doivent être configurés.
Téléchargez et installez la bibliothèque Python :
pip install google-cloud-vmwareengine
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 les 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.
Dans la console Google Cloud , accédez à la page Clouds privés.
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.
Cliquez sur le nom du cloud privé.
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 Google Cloud CLI, utilisez la commande gcloud vmware private-clouds describe
:
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êtePROJECT_ID
: ID du projet pour cette requêteREGION
: région du cloud privé. S'il s'agit d'un cloud privé étendu, spécifiez la zone pour 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êteREGION
: région du cloud privé. S'il s'agit d'un cloud privé étendu, spécifiez la zone pour ce cloud privé.PRIVATE_CLOUD_ID
: nom du cloud privé pour cette requête.
Configurer les autorisations DNS bind
Vous ne pouvez configurer et gérer les autorisations DNS bind 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, le principal utilisateur est l'adresse e-mail de l'utilisateur qui associera la zone DNS privée au VPC intranet.
gcloud
gcloud vmware dns-bind-permission grant \ --user=USER
Remplacez USER par l'adresse e-mail de l'utilisateur qui va associer la zone DNS privée au VPC de l'intranet. Exemple :example1@gmail.com
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. Exemple :example1@gmail.com
Révoquer l'autorisation DNS Bind
Révoque l'autorisation DNS Bind précédemment accordée à l'utilisateur.
gcloud
gcloud vmware dns-bind-permission revoke \ --user=USER
Remplacez USER par l'adresse e-mail de l'utilisateur pour lequel vous souhaitez révoquer les autorisations. Exemple :example1@gmail.com
API
Envoyez une requête POST
à dnsBindPermissions:revoke
et indiquez 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. Exemple :example1@gmail.com
Décrire l'autorisation DNS bind
Décrit les autorisations de liaison DNS pour un projet et le principal utilisateur autorisé à configurer les liaisons DNS.
gcloud
gcloud vmware dns-bind-permission describe
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.
Associer une zone Cloud DNS privée au réseau VPC intranet VMware Engine
Une fois que vous avez accordé à un principal utilisateur les autorisations nécessaires pour configurer les liaisons DNS, l'utilisateur 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 réseau VPC intranet
Il vous faut 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 trouver l'URL du VPC de l'intranet à l'aide de la console Google Cloud , procédez comme suit :
Dans la console Google Cloud , accédez à la page Réseaux VMware Engine.
Cliquez sur Sélectionner un projet, puis sélectionnez l'organisation, le dossier ou le projet contenant le réseau VMware Engine.
Localisez 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
Remplacez VMWARE_ENGINE_NETWORK
par le réseau à décrire. Dans la réponse, gcloud
renvoie les détails du réseau contenant l'URL VPC de l'intranet.
API
Envoyez une requête GET
à la ressource vmwareEngineNetworks
et indiquez 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êteNETWORK_ID
: réseau à décrire
Liaison
Une fois les autorisations d'association configurées, le workflow prévu consiste à ajouter un appairage DNS au réseau VPC intranet VMware Engine dans votre processus standard de gestion des zones Cloud DNS 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 exemplezone1.example.com
INTRANET_VPC_URL
: URL du VPC intranet pour le réseau VMware EngineEXISTING_VPC
: URL du réseau VPC existant auquel leDOMAIN
est déjà associéPROJECT_ID
: ID du projet pour cette requête
API
Effectuez une requête PATCH
pour la ressource managedZones
et indiquez 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êteDOMAIN
: domaine à étendre, par exemplezone1.example.com
INTRANET_VPC_URL
: URL 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 tous les appels
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 à accès 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."