Configurer le DNS pour un cluster

Ce document explique comment configurer un DNS pour un cluster d'administrateur ou un cluster d'utilisateur.

La configuration DNS d'un cluster est conservée dans une ressource personnalisée ClusterDNS nommée default. Il s'agit d'une ressource à l'échelle du cluster. C'est-à-dire qu'elle n'est pas associée à un espace de noms.

Afficher la ressource ClusterDNS

Pour afficher la ressource ClusterDNS, procédez comme suit :

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

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

La configuration DNS se trouve dans la section spec. Si la section spec est vide ou manquante, le cluster utilise une configuration Kubernetes CoreDNS par défaut.

Modifier la configuration DNS

Créez un fichier manifeste pour une ressource ClusterDNS nommée default. Renseignez le champ spec selon vos besoins. 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.0.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: private

Enregistrez le fichier manifeste dans un fichier nommé my-dns.yaml et appliquez la ressource au cluster :

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

La spécification ClusterDNS

spec.upstreamNameservers

Tableau d'objets, chacun contenant une adresse IP de serveur et éventuellement un port de serveur. La valeur par défaut du port serveur est 53.

Serveurs de noms en amont par défaut. Les requêtes de domaines hors cluster sont transférées par défaut vers cet ensemble de serveurs. Exemple :

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/resolve.conf sur le nœud pour rechercher la liste des serveurs de noms en amont.

spec.domains

Configuration pour des domaines spécifiques. Cela permet de remplacer la configuration dans upstreamNameservers.

Vous pouvez utiliser cette section pour configurer différents serveurs de noms en amont pour des domaines spécifiques, séparément des serveurs de noms en amont par défaut.

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

Exemple :

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

spec.googleAccess

Chaîne. Si vous souhaitez que les domaines Google soient associés à des adresses IP d'accès privé, définissez ce paramètre sur "private". Si vous souhaitez que les domaines Google soient associés à des adresses IP à accès restreint, définissez ce paramètre sur restricted. Si vous ne souhaitez pas bénéficier de traitement spécial pour les domaines Google, définissez ce paramètre sur default ou supprimez-le. Pour plus d'informations, consultez la section Configurer l'accès privé à Google pour les hôtes sur site.

Exemple :

spec:
  googleAccess: private

spec.orderPolicy

Chaîne. Si vous souhaitez spécifier la règle de tri en fonction de laquelle les serveurs en amont sont sélectionnés. La valeur par défaut est "random". Les types acceptés sont "random","round_robin" et "sequential". Notez que cette règle de tri s'appliquera également aux domaines définis. Consultez la documentation de coredns pour en savoir plus sur policy et sur le rôle de chaque configuration.

Exemple :

spec:
  orderPolicy: sequential