API ResourceRecordSets de Cloud DNS

1. Introduction

64e18005b6cdcd83.png

Dernière mise à jour:06/01/2021

Qu'est-ce que Cloud DNS ?

Consultez notre page d'accueil.

Objectifs de l'atelier

Dans cet atelier de programmation, vous allez créer une zone gérée Cloud DNS et des jeux d'enregistrements de ressources pertinents à l'aide de gcloud pour gérer la résolution de noms vers une instance de VM.

Points abordés

CRÉER, LIRE, SUPPRIMER et METTRE À JOUR des jeux d'enregistrements de ressources individuels.

Prérequis

2. Configuration

Configurer votre projet Google Cloud Platform

Se connecter à gcloud

gcloud auth login

Créer un projet

gcloud projects create my-codelab-project

Activer l'API Cloud DNS

gcloud services enable dns.googleapis.com

Cette opération peut prendre quelques minutes

3. Créer une ManagedZone privée

Une zone gérée contient des jeux d'enregistrements de ressources.

Notez le nom de domaine pour lequel vous souhaitez ajouter des enregistrements DNS. Dans cet exemple, nous utiliserons "mon-domaine.com". et supposons que votre instance de VM se trouve sur le réseau par défaut.

gcloud dns managed-zones create my-zone \
    --description="ManagedZone for Cloud DNS ResourceRecordSets codelab." \
    --dns-name=my-domain.com. \
    --networks=default \
    --visibility=private

4. Gérer les jeux d'enregistrements de ressources

À la fin de cette section, les requêtes DNS exécutées sur votre réseau privé virtuel pour votre domaine seront associées à l'adresse IP de la VM.

Par exemple, si l'adresse IP de votre VM est "1.2.3.4" et que vous souhaitez obtenir "mon-domaine.com". vers cette adresse IP, vous devez créer un "enregistrement A".

CRÉER un enregistrement A

gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
  • L'argument positionnel "mon-domaine.com". , également appelé dnsName, est le nom pour lequel nous voulons définir la résolution DNS.
  • –type: indique le type d'enregistrement DNS que nous essayons de créer.
  • -ttl: indique la valeur TTL (Time To Live) pour cet enregistrement.
  • -rrdatas: contient la réponse réelle à la requête.
  • –zone: obligatoire pour indiquer dans quelle zone ManagedZone cet enregistrement doit être créé.

Pour en savoir plus sur les concepts DNS, cliquez ici.

Maintenant que vous avez créé votre enregistrement A, vous devriez pouvoir tester la résolution DNS.

Connectez-vous en SSH à votre machine. Dans cet exemple, nous utilisons une instance de VM nommée "dns-codelab" dans "us-central1-a"

gcloud compute ssh codelab --zone=us-central1-a

Installez dnsutils afin de pouvoir utiliser la fonction commande

sudo apt install dnsutils

interroger votre domaine

dig my-domain.com.

le résultat doit être semblable à

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19979
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;my-domain.com.                        IN        A

;; ANSWER SECTION:
my-domain.com.                60        IN        A        1.2.3.4
...

CREATE, PATCH et GET un enregistrement CNAME

Maintenant que vous avez mappé mon-domaine.com. vers 1.2.3.4, vous voudrez probablement vous assurer que www.my-domain.com. résout également 1.2.3.4. Enregistrements pour "www." les préfixes ne sont pas créés automatiquement.

Si vous interrogez www.my-domain.com.

dig www.my-domain.com.

vous obtiendrez un résultat semblable à

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

indiquant qu'il n'y a pas d'enregistrement DNS pour ce domaine

Plutôt que de créer un autre enregistrement A, nous devons créer un enregistrement CNAME qui pointe vers un autre enregistrement. Cela nous évitera d'avoir à modifier les deux enregistrements si nous voulons utiliser une adresse IP différente.

quitter votre instance de VM

exit

Créer un enregistrement CNAME

gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"

Maintenant que vous avez créé votre enregistrement CNAME, vous devriez pouvoir tester la résolution DNS.

Connectez-vous à nouveau en SSH à votre machine.

gcloud compute ssh codelab --zone=us-central1-a

interroger votre domaine

dig www.my-domain.com.

vous devriez avoir reçu un résultat semblable à

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

Oh non ! Il semblerait que vous ayez fait une faute de frappe lors de la création de l'enregistrement CNAME dans "–rrdatas". . Plutôt que de supprimer et de recréer l'enregistrement, nous pouvons corriger la modification appropriée.

quitter votre instance de VM

exit

Appliquer un correctif à l'enregistrement CNAME

gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"

Notez que nous pouvons omettre "-ttl" indicateur puisque nous ne le modifions pas, mais tous les autres indicateurs doivent être inclus, car ils font partie de l'identifiant unique universel du ResourceRecordSet.

Nous pouvons également vérifier que l'enregistrement est conforme aux attentes en utilisant gcloud

gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"

ce qui devrait produire

NAME                    TYPE    TTL  DATA
www.my-domain.com.      CNAME   60  "my-domain.com."

Vérifier que l'enregistrement CNAME est correctement résolu

gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.

vous devriez avoir reçu un résultat semblable à

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7471
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;www.my-domain.com.                IN        A

;; ANSWER SECTION:
www.my-domain.com.        60        IN        CNAME         my-domain.com..
...

DELETE pour effectuer un nettoyage

Pour pouvoir supprimer une zone ManagedZone, vous devez d'abord supprimer tous les jeux d'enregistrements ResourceRecordSets de cette ressource (à l'exception des enregistrements NS et SOA, qui sont générés automatiquement et doivent toujours exister dans la ManagedZone).

quitter votre instance de VM

exit

Supprimer l'enregistrement CNAME

gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"

Supprimer l'enregistrement A

gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"

Supprimer la ManagedZone

gcloud dns managed-zones delete "my-zone"

5. Félicitations

Félicitations, vous avez appris à gérer vos ResourceRecordSets.

Complément d'informations

Documents de référence