Ce document explique comment configurer la résolution DNS pour un nouveau domaine dans Google Distributed Cloud (GDC) air-gapped à 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'applications 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 en dehors de votre réseau d'accéder à votre service. Si vous disposez d'un site Web, d'une API publique ou de tout service qui doit être accessible en dehors 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 à l'aide de noms de domaine internes sans exposer leur existence ni leurs adresses IP au réseau externe. Cela améliore 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 IAM de projet de vous accorder le rôle Administrateur de projet DNS géré (
managed-dns-project-admin). - Pour utiliser la CLI gdcloud, assurez-vous qu'elle est 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
Une fois que vous avez 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 gdcloud dns managed-zones create
commande :
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, tel queexample.com.DESCRIPTION: description de votre zone DNS. Par exemple,Public DNS zone for example.com. Ce champ est facultatif.PROJECT_NAMESPACE: espace de noms de votre projet. Cet indicateur est facultatif si vous avez défini un projet par défaut au niveau mondial à l'aide degdcloud config set project.--async: spécifiez cette option si vous souhaitez que la commande renvoie immédiatement une réponse au lieu 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 en dehors 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 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, tel queexample.com.DESCRIPTION: description de votre zone DNS. Par exemple,Public DNS zone for example.com. Ce champ est facultatif.
Notez que la valeur de
visibilityest sensible à la casse et doit être exactementPUBLIC.
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 pour cette zone DNS aux serveurs de noms de GDC qui hébergent cette zone DNS.
Récupérez les serveurs de noms pour la
ManagedDNSZoneque vous avez créée. Vous devez utiliserkubectlpour cette étape.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 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. Cet indicateur est facultatif si vous avez défini un projet par défaut au niveau mondial à 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 qu'il transfère les requêtes DNS pour la nouvelle zone. Dans cet exemple, le résolveur DNS doit être mis à jour pour transférer les requêtes pour
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 d'infrastructure de GDCgdc1.staging.gpcdemolabs.com.
Créer une zone DNS privée
Vous pouvez créer une zone DNS privée à l'aide de la CLI gdcloud ou de l'API Kubernetes.
gdcloud
Pour créer une zone DNS privée, utilisez la
gdcloud dns managed-zones create
commande :
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, tel queexample.com.DESCRIPTION: description de votre zone DNS. Par exemple,Private DNS zone for example.com. Ce champ est facultatif.PROJECT_NAMESPACE: espace de noms de votre projet. Cet indicateur est facultatif si vous avez défini un projet par défaut au niveau mondial à l'aide degdcloud config set project.--async: spécifiez cette option si vous souhaitez que la commande renvoie immédiatement une réponse au lieu 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 à partir du 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 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, tel queexample.com.DESCRIPTION: description de votre zone DNS. Par exemple,Private DNS zone for example.com. Ce champ est facultatif.
Notez que la valeur de
visibilityest sensible à la casse et doit être exactementPRIVATE.