For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/customizing-coredns.md.

Personnaliser CoreDNS sur un cluster Managed Kubernetes OVHcloud

Voir en Markdown

Découvrez comment personnaliser CoreDNS sur un cluster Managed Kubernetes OVHcloud

Objectif

Le service Managed Kubernetes OVHcloud vous fournit des clusters Kubernetes sans les contraintes liées à leur installation ou à leur exploitation.

Les clusters Managed Kubernetes OVHcloud utilisent CoreDNS comme serveur DNS pour la découverte de services (Service Discovery).

Chez OVHcloud, nous sommes à l'écoute de nos utilisateurs et améliorons nos produits et services en conséquence ; c'est pourquoi nous vous donnons la possibilité de personnaliser la configuration de CoreDNS, grâce au mécanisme d'extension dans une ConfigMap spéciale qui n'est pas modifiée lors d'un redéploiement.

Prérequis

  • Un cluster Managed Kubernetes OVHcloud

En pratique

Afficher la configuration par défaut de CoreDNS

Dans un cluster Managed Kubernetes OVHcloud, le DNS est géré par CoreDNS.

Consultez la ConfigMap pour voir la configuration par défaut.

kubectl get configmap coredns -n kube-system -o yaml

Le résultat devrait ressembler à ceci :

$ kubectl get configmap coredns -n kube-system -o yaml
apiVersion: v1
data:
  Corefile: |
    .:53 {
        errors
        health {
            lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
            ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf {
          prefer_udp
          policy sequential
        }
        cache 30
        loop
        reload
        loadbalance
        import custom/*.include
        log
    }
    import custom/*.server
kind: ConfigMap
metadata:
  creationTimestamp: "2022-09-22T07:00:39Z"
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
  name: coredns
  namespace: kube-system
  resourceVersion: "5786561917"
  uid: a4e7310b-50b9-4976-a014-13e4bee12344
Warning

Lorsque le control plane Kubernetes est redéployé, ou lors de la mise à niveau du cluster vers le dernier patch, cette configuration CoreDNS par défaut est restaurée à sa valeur par défaut.

Pour comprendre la signification de cette configuration CoreDNS, consultez la documentation officielle de CoreDNS et la documentation des plugins CoreDNS.

Personnaliser la configuration de CoreDNS

Warning

Modifier la configuration par défaut de CoreDNS peut entraîner des erreurs si cela n'est pas fait correctement.

Si vous souhaitez modifier et personnaliser la configuration de CoreDNS, vous pouvez le faire en modifiant la ConfigMap coredns-custom, qui ne sera jamais altérée par les services OVHcloud :

$ kubectl get cm coredns-custom -n kube-system -o yaml
apiVersion: v1
data:
  example.include: |
    # Include .:53 example
  example.server: |
    # Server example
kind: ConfigMap
metadata:
  creationTimestamp: "2022-10-10T09:14:03Z"
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
  name: coredns-custom
  namespace: kube-system
  resourceVersion: "5786561924"
  uid: 95c51a5d-c413-4520-b84d-a16892626620

Vous pouvez ajouter une nouvelle configuration dans les blocs data.example.include et data.example.server.

Modifiez la ConfigMap coredns-custom avec la commande suivante :

kubectl edit cm coredns-custom -n kube-system  

Par exemple, si vous souhaitez utiliser un nameserver personnalisé qui redirigera vers votre DNS privé toutes les résolutions FQDN pour *.myprivatedomain.com :

$ kubectl edit cm coredns-custom -n kube-system
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
  example.include: |
    # Include .:53 example
  myprivatedomain.server: |
    myprivatedomain.com.:53 {
    forward . [my-custom-dns-server-private-ip]
  }
kind: ConfigMap
metadata:
  creationTimestamp: "2022-10-10T09:14:03Z"
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
  name: coredns-custom
  namespace: kube-system
  resourceVersion: "5786561924"
  uid: 95c51a5d-c413-4520-b84d-a16892626620

Vérifiez les logs pour vous assurer que la personnalisation a bien été appliquée :

kubectl logs -n kube-system -l k8s-app=kube-dns -f

Limitations connues

  • Une résolution DNS entièrement privée n'est pas possible ; seul un domaine privé peut être résolu. Cela signifie que les FQDN publics sont résolus par le DNS public OVHcloud. Par exemple, lors de la résolution de kubernetes.io depuis un pod, CoreDNS résout d'abord vers .:53, qui est le nameserver par défaut, puis résout le /etc/resolv.conf du nœud worker sous-jacent. Il résout ensuite le DNS public OVHcloud (qui est configuré par le Managed Kubernetes OVHcloud).

  • Lors de la mise à niveau des nœuds du cluster (ou lorsqu'un nœud redémarre), le pod CoreDNS peut être redémarré et adopter la nouvelle configuration. C'est pour cette raison que vous devez personnaliser la configuration via la ConfigMap coredns-custom.

  • CoreDNS est configuré pour recharger sa configuration (la ConfigMap dans ce cas) toutes les 30 secondes.

  • Les nouveaux clusters Kubernetes disposeront du nouveau déploiement CoreDNS et des nouvelles ConfigMaps, tandis que les anciens devront mettre à jour leur control plane vers le dernier patch.

Aller plus loin

Pour avoir une vue d'ensemble du service Managed Kubernetes OVHcloud, vous pouvez consulter la page Managed Kubernetes OVHcloud.

Pour en savoir plus sur l'utilisation pratique de votre cluster Kubernetes, nous vous invitons à consulter nos tutoriels.

  • Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.

  • Échangez avec notre communauté d'utilisateurs.

Cette page vous a-t-elle aidé ?