Configurer le DNS pour un cluster

Ce document explique comment configurer les options de fournisseur DNS (Domain Name System) pour GKE sur Bare Metal. 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 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
      - 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 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, procédez comme suit :

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

Spécifiez vos serveurs de noms en amont par défaut avec un tableau d'objets, chacun disposant d'une adresse IP de serveur et éventuellement d'un port de serveur. La valeur par défaut du port du serveur est 53. Les requêtes pour les domaines hors cluster sont transférées par défaut vers ce tableau d'adresses de serveur.

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

spec.domains

Configuration pour des domaines spécifiques. Utilisez cette section 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.

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

Énumération (private, restricted ou default). 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, consultez la section Configurer l'accès privé à Google pour les hôtes sur site.