Configurer le DNS pour un cluster

Ce document explique comment configurer les options de fournisseur DNS (Domain Name System) pour Google Distributed Cloud Connected. 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 possède 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 spécifie comment traiter les domaines Google. Les valeurs googleAccess spécifient le comportement suivant :

  • default : aucun traitement spécial pour les domaines Google. Supprimer le champ googleAccess a le même effet.

  • private : renvoie les domaines Google vers des adresses IP d'accès privé uniquement.

  • restricted : renvoie les domaines Google vers des adresses IP avec accès restreint uniquement.

L'exemple de paramètre suivant renvoie les domaines Google vers des adresses IP à accès privé uniquement :

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.