Ce document explique comment configurer la résolution DNS pour un nouveau domaine dans Google Distributed Cloud (GDC) avec isolation physique à l'aide de zones DNS. Utilisez une zone DNS pour regrouper un ensemble d'enregistrements DNS et contrôler si ces enregistrements sont visibles en dehors de votre cloud privé virtuel (VPC) dans GDC.
Ce document s'adresse aux administrateurs de plate-forme et aux opérateurs d'application chargés de gérer la résolution DNS pour leur organisation.
Vous pouvez créer des zones DNS publiques ou privées dans votre environnement GDC pour répondre aux exigences de visibilité et d'accès de vos services :
- Pour les services qui nécessitent une visibilité et un accès au réseau externe : configurez une zone DNS publique pour permettre aux utilisateurs et aux systèmes extérieurs à votre réseau d'accéder à votre service. Si vous disposez d'un site Web, d'une API publique ou de tout service devant être accessible depuis l'extérieur de votre environnement GDC Cloud, vous avez besoin d'une zone DNS publique pour mapper votre nom de domaine aux adresses IP appropriées.
- Pour les services qui nécessitent un accès sécurisé et restreint aux systèmes internes : configurez une zone DNS privée pour masquer votre nom de domaine interne et limiter l'accès à vos services internes. Si vous disposez d'une application, d'une base de données ou d'un microservice interne qui doit communiquer avec d'autres services internes en utilisant uniquement des protocoles sécurisés et des adresses IP privées, vous avez besoin d'une zone DNS privée pour mapper votre nom de domaine aux adresses IP appropriées. Une zone DNS privée garantit que ces services peuvent se trouver les uns les autres à l'aide de noms de domaine internes sans exposer leur existence ni leurs adresses IP au réseau externe. Cela renforce la sécurité et simplifie la mise en réseau interne.
Pour en savoir plus sur la différence entre les zones DNS publiques et privées, consultez Types de zones pour Cloud DNS.
Avant de commencer
Pour configurer des zones DNS dans GDC et ajouter des enregistrements, vous devez disposer des éléments suivants :
- Un projet existant. Pour en savoir plus, consultez Créer un projet.
- Les rôles d'identité et d'accès nécessaires. Pour gérer les zones DNS de votre projet, demandez à votre administrateur de projet IAM de vous attribuer le rôle Administrateur de projet DNS géré (
managed-dns-project-admin). - Pour utiliser la CLI gdcloud, assurez-vous de l'avoir installée. Pour en savoir plus, consultez Installer la CLI gdcloud.
- Si vous utilisez
kubectl, un fichier kubeconfig pour le serveur d'API global. Si vous n'avez pas encore généré ce fichier, consultez Se connecter. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux.
Créer une zone DNS publique
Après avoir créé une zone DNS publique, vous devez configurer le résolveur DNS de votre réseau pour qu'il transfère les requêtes aux serveurs de noms appropriés.
Créer la zone
Vous pouvez créer une zone DNS publique à l'aide de la CLI gdcloud ou de l'API Kubernetes.
gdcloud
Pour créer une zone DNS publique, utilisez la commande gdcloud dns managed-zones create :
gdcloud dns managed-zones create DNS_ZONE_NAME \
--dns-name=DOMAIN_NAME \
--visibility=PUBLIC \
--description="DESCRIPTION" \
[--project=PROJECT_NAMESPACE] \
[--async]
Remplacez les éléments suivants :
DNS_ZONE_NAME: nom de votre zone DNS.DOMAIN_NAME: nom de domaine de votre zone DNS publique, par exempleexample.com.DESCRIPTION: description de votre zone DNS. Exemple :Public DNS zone for example.comCe champ est facultatif.PROJECT_NAMESPACE: espace de noms de votre projet. Cette option est facultative si vous avez défini un projet par défaut de manière globale à l'aide degdcloud config set project.--async: spécifiez cette option si vous souhaitez que la commande renvoie immédiatement une réponse, plutôt que d'attendre la fin de l'opération. Vous pouvez utiliserdescribepour vérifier l'état de l'opération.
API
Utilisez l'API Kubernetes dans GDC pour créer une zone DNS publique :
Créez et appliquez une ressource
ManagedDNSZonepour créer une zone DNS accessible depuis l'extérieur de GDC :kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ManagedDNSZone metadata: name: DNS_ZONE_NAME namespace: PROJECT_NAMESPACE spec: dnsName: DOMAIN_NAME description: DESCRIPTION visibility: PUBLIC EOFRemplacez les éléments suivants :
GLOBAL_API_SERVER: chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.DNS_ZONE_NAME: nom de votre zone DNS.PROJECT_NAMESPACE: espace de noms de votre projet.DOMAIN_NAME: nom de domaine de votre zone DNS publique, par exempleexample.com.DESCRIPTION: description de votre zone DNS. Exemple :Public DNS zone for example.comCe champ est facultatif.
Notez que
visibilityest sensible à la casse et doit avoir la valeur exactePUBLIC.
Configurer votre résolveur DNS
Pour une zone DNS publique, vous devez configurer le résolveur DNS de votre réseau afin qu'il transfère les requêtes DNS de cette zone DNS aux serveurs de noms de GDC qui hébergent cette zone DNS.
Récupérez les serveurs de noms de la zone
ManagedDNSZoneque vous avez créée. Pour cette étape, vous devez utiliserkubectl.kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyamlRemplacez les éléments suivants :
GLOBAL_API_SERVER: chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.DNS_ZONE_NAME: nom de votre zone DNS.PROJECT_NAMESPACE: espace de noms de votre projet. Cette option est facultative si vous avez défini un projet par défaut de manière globale à l'aide degdcloud config set project.
Les serveurs de noms seront listés dans la sortie d'état :
apiVersion: networking.global.gdc.goog/v1 kind: ManagedDNSZone metadata: name: DNS_ZONE_NAME namespace: PROJECT_NAMESPACE spec: dnsName: example.com description: "Public DNS zone for example.com" visibility: PUBLIC status: … nameServers: - ns.managed-dns-public.gdc1.staging.gpcdemolabs.comMettez à jour le résolveur DNS de votre réseau pour transférer les requêtes DNS de la nouvelle zone. Dans cet exemple, le résolveur DNS doit être mis à jour pour transférer les requêtes de
example.comversns.managed-dns-public.gdc1.staging.gpcdemolabs.com. Cette configuration suppose que le résolveur dispose déjà de la configuration nécessaire pour transférer correctement les requêtes DNS pour la zone DNS de l'infrastructure GDCgdc1.staging.gpcdemolabs.com.
Créer une zone DNS privée
Vous pouvez créer une zone DNS privée à l'aide de gdcloud CLI ou de l'API Kubernetes.
gdcloud
Pour créer une zone DNS privée, utilisez la commande gdcloud dns managed-zones create :
gdcloud dns managed-zones create DNS_ZONE_NAME \
--dns-name=DOMAIN_NAME \
--visibility=PRIVATE \
--description="DESCRIPTION" \
[--project=PROJECT_NAMESPACE] \
[--async]
Remplacez les éléments suivants :
DNS_ZONE_NAME: nom de votre zone DNS.DOMAIN_NAME: nom de domaine de votre zone DNS privée, par exempleexample.com.DESCRIPTION: description de votre zone DNS. Exemple :Private DNS zone for example.comCe champ est facultatif.PROJECT_NAMESPACE: espace de noms de votre projet. Cette option est facultative si vous avez défini un projet par défaut de manière globale à l'aide degdcloud config set project.--async: spécifiez cette option si vous souhaitez que la commande renvoie immédiatement une réponse, plutôt que d'attendre la fin de l'opération. Vous pouvez utiliserdescribepour vérifier l'état de l'opération.
API
Utilisez l'API Kubernetes pour créer une zone DNS privée :
Créez et appliquez une ressource
ManagedDNSZonepour créer une zone DNS accessible uniquement depuis le VPC client par défaut :kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ManagedDNSZone metadata: name: DNS_ZONE_NAME namespace: PROJECT_NAMESPACE spec: dnsName: DOMAIN_NAME description: DESCRIPTION visibility: PRIVATE EOFRemplacez les éléments suivants :
GLOBAL_API_SERVER: chemin d'accès au fichier kubeconfig du serveur d'API global. Pour en savoir plus, consultez Serveurs d'API globaux et zonaux. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API, consultez Se connecter pour en savoir plus.DNS_ZONE_NAME: nom de votre zone DNS.PROJECT_NAMESPACE: espace de noms de votre projet.DOMAIN_NAME: nom de domaine de votre zone DNS privée, par exempleexample.com.DESCRIPTION: description de votre zone DNS. Exemple :Private DNS zone for example.comCe champ est facultatif.
Notez que
visibilityest sensible à la casse et doit avoir la valeur exactePRIVATE.