Configurer le DNS pour un cluster

Ce document explique comment configurer les options de fournisseur DNS (Domain Name System) pour Google Distributed Cloud. La configuration DNS d'un cluster est conservée dans une ressource personnalisée ClusterDNS nommée default. Cette ressource s'applique à l'ensemble du cluster et n'est donc pas associée à un espace de noms. La ressource personnalisée ClusterDNS s'applique à tous les types de clusters.

Créer la ressource ClusterDNS

Créez un fichier manifeste pour une ressource ClusterDNS nommée default. Renseignez le champ spec pour configurer les paramètres de ressource de votre choix. Exemple :

apiVersion: networking.gke.io/v1alpha1
kind: ClusterDNS
metadata:
  name: default
spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 8.8.4.4
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: default

Pour enregistrer le fichier manifeste dans un fichier nommé my-dns.yaml et appliquer la ressource au cluster, exécutez la commande suivante :

kubectl --kubeconfig KUBECONFIG apply -f my-dns.yaml

Remplacez KUBECONFIG par le chemin d'accès au fichier kubeconfig du cluster.

Afficher la ressource ClusterDNS

Pour afficher la ressource ClusterDNS, exécutez la commande suivante :

kubectl --kubeconfig KUBECONFIG get clusterdns default --output yaml

Remplacez KUBECONFIG par le chemin d'accès au fichier kubeconfig du cluster.

La spécification ClusterDNS

Les sections suivantes décrivent les parties de la définition de ressource personnalisée ClusterDNS permettant de configurer le DNS pour vos clusters. Vous pouvez mettre à jour la ressource ClusterDNS pour un cluster à tout moment.

spec.upstreamNameservers

Utilisez le champ spec.upstreamNameservers pour spécifier vos serveurs de noms en amont par défaut avec un tableau d'objets. Chaque objet contient une adresse IP de serveur et éventuellement un port de serveur. La valeur par défaut du port serveur est 53. Les requêtes de domaines hors cluster sont transférées par défaut vers cet ensemble de serveurs.

Voici un exemple de configuration upstreamNameservers :

spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 1.2.3.4
    serverPort: 54

Si vous ne spécifiez aucune valeur pour upstreamNameservers, le fournisseur DNS utilise le fichier /etc/resolv.conf sur le nœud pour rechercher la liste des serveurs de noms en amont.

spec.domains

Utilisez le champ spec.domains pour configurer différents serveurs de noms en amont pour des domaines particuliers. Ces paramètres de serveur de noms spécifiques au domaine remplacent la configuration dans upstreamNameservers.

Vous pouvez également activer la journalisation des requêtes pour un domaine. Vous pouvez activer la journalisation des requêtes pour n'importe quel domaine spécifié ou pour le domaine du cluster, cluster.local.

Voici un exemple de configuration spec.domains :

spec:
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 50000
  - name: cluster.local
    queryLogging: true

spec.googleAccess

Le champ spec.googleAccess est une chaîne qui configure la résolution DNS pour les domaines utilisés par les Google APIs et services mondiaux. Ce champ accepte les valeurs suivantes :

  • default: par défaut, la résolution DNS mappe les domaines d'API Google mondiaux aux adresses IP par défaut. Le cluster ne personnalise pas la résolution DNS pour les domaines d'API Google mondiaux. Pour en savoir plus, consultez la section Adresses IP pour les domaines par défaut. Si vous ne spécifiez pas de valeur dans le champ googleAccess, le système utilise default.

  • private : mappe la résolution DNS pour les domaines d'API Google mondiaux aux adresses IP utilisées par private.googleapis.com.

  • restricted : mappe la résolution DNS pour les domaines d'API Google mondiaux aux adresses IP utilisées par restricted.googleapis.com.

L'exemple suivant montre comment définir la résolution DNS pour utiliser private.googleapis.com :

spec:
  googleAccess: private

Pour plus d'informations sur la configuration, consultez la section Configurer l'accès privé à Google pour les hôtes sur site.

spec.orderPolicy

Le champ spec.orderPolicy est une chaîne. Utilisez ce champ pour spécifier la règle d'ordre selon laquelle les serveurs en amont sont sélectionnés.

  • La valeur par défaut est random.
  • Les types compatibles sont random, round_robin et sequential.
  • Cette règle d'ordre s'applique également aux domaines définis.

Pour en savoir plus sur policy et sur l'effet de chaque configuration, consultez la documentation coredns.

Voici un exemple de configuration spec.orderPolicy :

spec:
  orderPolicy: sequential