Partager via


Personnaliser CoreDNS pour AKS (Azure Kubernetes Service)

Azure Kubernetes Service (AKS) utilise CoreDNS pour la gestion et la résolution DNS du cluster avec tous les clusters 1.12.x et versions ultérieures. AKS étant un service managé, vous ne pouvez pas modifier la configuration principale pour CoreDNS (fichier CoreFile). Au lieu de cela, vous utilisez un fichier ConfigMap Kubernetes pour remplacer les paramètres par défaut. Pour afficher les ConfigMaps CoreDNS AKS par défaut, utilisez la commande kubectl get configmaps --namespace=kube-system coredns --output yaml.

Cet article explique comment utiliser ConfigMaps pour les options de personnalisation CoreDNS de base dans Azure Kubernetes Service (AKS).

Remarque

Auparavant, AKS était utilisé kube-dns pour la gestion et la résolution DNS du cluster, mais il est désormais déconseillé. kube-dns proposait différentes options de personnalisation via une carte de configuration Kubernetes. CoreDNS n’est pas rétrocompatible avec kube-dns. Vous devez mettre à jour toutes les personnalisations précédentes pour utiliser CoreDNS.

Prerequisites

  • Cet article suppose que vous avez un cluster AKS existant. Si vous avez besoin d’un cluster AKS, vous pouvez en créer un en utilisant Azure CLI, Azure PowerShell ou le Portail Azure.
  • Vérifiez la version de CoreDNS que vous exécutez. Les valeurs de configuration peuvent changer entre les versions.

Prise en charge des plug-ins

Tous les plug-ins CoreDNS intégrés sont pris en charge. Aucun module complémentaire/plug-in tiers n’est pris en charge.

Important

Lorsque vous créez des configurations comme celles de cet article, les noms que vous spécifiez dans la data section doivent se terminer .server par ou .override. La convention d’affectation de noms est définie dans la ConfigMap CoreDNS AKS par défaut, que vous pouvez voir à l’aide de la commande kubectl get configmaps --namespace=kube-system coredns --output yaml.

Configurer les réécritures de noms DNS

  1. Créez un fichier nommé corednsms.yaml et collez-le dans l’exemple de configuration suivant. Veillez à remplacer <domain to be rewritten> par votre propre nom de domaine complet (FQDN).

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: |
        <domain to be rewritten>.com:53 {
        log
        errors
        rewrite stop {
          name regex (.*)\.<domain to be rewritten>\.com {1}.default.svc.cluster.local
          answer name (.*)\.default\.svc\.cluster\.local {1}.<domain to be rewritten>.com
        }
        forward . /etc/resolv.conf # You can redirect this to a specific DNS server such as 10.0.0.10, but that server must be able to resolve the rewritten domain name
        }
    

    Important

    Si vous redirigez vers un serveur DNS, tel que l’adresse IP du service CoreDNS, ce serveur DNS doit être en mesure de résoudre le nom de domaine réécrit.

  2. Créez la ConfigMap à l’aide de la commande kubectl apply configmap et spécifiez le nom de votre manifeste YAML.

    kubectl apply -f corednsms.yaml
    
  3. Vérifiez que les personnalisations ont été appliquées à l’aide de la kubectl get configmaps commande.

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. Effectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la kubectl rollout restart commande.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Spécifier un serveur de transfert pour votre trafic réseau

  1. Créez un fichier nommé corednsms.yaml et collez-le dans l’exemple de configuration suivant. Veillez à remplacer forward par votre propre nom et <domain to be rewritten> par vos propres valeurs.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        <domain to be rewritten>.com:53 {
            forward foo.com 1.1.1.1
        }
    
  2. Créez configMap à l’aide de la kubectl apply configmap commande.

    kubectl apply -f corednsms.yaml
    
  3. Effectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la kubectl rollout restart commande.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Utiliser des domaines personnalisés

Vous pouvez configurer des domaines personnalisés qui ne peuvent être résolus qu’en interne. Par exemple, vous souhaiterez peut-être résoudre le domaine personnalisé puglife.local, qui n’est pas un domaine de niveau supérieur valide. Sans un ConfigMap de domaine personnalisé, le cluster AKS ne peut pas résoudre l’adresse.

  1. Créez un fichier nommé corednsms.yaml et collez-le dans l’exemple de configuration suivant. Veillez à mettre à jour le domaine personnalisé et l’adresse IP avec vos propres valeurs.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      puglife.server: | # You can select any name here, but it must end with the .server file extension
        puglife.local:53 {
            errors
            cache 30
            forward . 192.11.0.1  # This is my test/dev DNS server
        }
    
  2. Créez configMap à l’aide de la kubectl apply configmap commande.

    kubectl apply -f corednsms.yaml
    
  3. Effectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la kubectl rollout restart commande.

    kubectl --namespace kube-system rollout restart deployment coredns 
    

Configurer des domaines stub

  1. Créez un fichier nommé corednsms.yaml et collez l’exemple de configuration suivant. Veillez à mettre à jour les domaines et adresses IP personnalisés avec vos propres valeurs.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        abc.com:53 {
         errors
         cache 30
         forward . 1.2.3.4
        }
        my.cluster.local:53 {
            errors
            cache 30
            forward . 2.3.4.5
        }
    
    
  2. Créez le ConfigMap à l’aide de la kubectl apply configmap commande et spécifiez.

    kubectl apply -f corednsms.yaml
    
  3. Effectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la kubectl rollout restart commande.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Ajouter des mappages personnalisés d'hôte à IP

  1. Créez un fichier nommé corednsms.yaml et collez l’exemple de configuration suivant. Veillez à mettre à jour les adresses IP et les noms d’hôte avec vos propres valeurs.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom # This is the name of the ConfigMap you can overwrite with your changes
      namespace: kube-system
    data:
        test.override: | # You can select any name here, but it must end with the .override file extension
              hosts { 
                  10.0.0.1 example1.org
                  10.0.0.2 example2.org
                  10.0.0.3 example3.org
                  fallthrough
              }
    
  2. Créez configMap à l’aide de la kubectl apply configmap commande.

    kubectl apply -f corednsms.yaml
    
  3. Effectuez un redémarrage propagé pour recharger configMap et permettre au planificateur Kubernetes de redémarrer CoreDNS sans temps d’arrêt à l’aide de la kubectl rollout restart commande.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Étapes suivantes