Skip to content

Created PTR records are ignored by CoreDNS #6466

@NHellFire

Description

@NHellFire

What happened:

Records are created in etcd:

$ kubectl logs deploy/external-dns
time="2026-06-01T18:02:36Z" level=info msg="Generating new prefix: (41d1e77d)"
time="2026-06-01T18:02:36Z" level=info msg="Delete key /skydns/arpa/in-addr/172/26/0/2/cluster1"
time="2026-06-01T18:02:36Z" level=info msg="Add/set key /skydns/arpa/in-addr/172/26/0/2/41d1e77d to Host=coredns-etcd-worker, Text=, TTL=0"
time="2026-06-01T18:02:36Z" level=info msg="Generating new prefix: (489d3005)"
time="2026-06-01T18:02:36Z" level=info msg="Delete key /skydns/arpa/in-addr/172/26/0/3/cluster1"
time="2026-06-01T18:02:36Z" level=info msg="Add/set key /skydns/arpa/in-addr/172/26/0/3/489d3005 to Host=coredns-etcd-control-plane, Text=, TTL=0"

But not returned by CoreDNS:

$ kubectl run --rm -it dnsutils --image=infoblox/dnstools --restart=Never
All commands and output from this session will be recorded in container logs, including credentials and sensitive information passed through the command prompt.
If you don't see a command prompt, try pressing enter.
dnstools# host 172.26.0.2 coredns.default.svc.cluster.local
Using domain server:
Name: coredns.default.svc.cluster.local
Address: 10.96.71.74#53
Aliases:

Host 2.0.26.172.in-addr.arpa. not found: 3(NXDOMAIN)

What you expected to happen:

The record to resolve.

How to reproduce it (as minimally and precisely as possible):

  1. Create cluster
$ curl -L https://github.com/kubernetes-sigs/external-dns/raw/refs/tags/v0.21.0/docs/snippets/tutorials/coredns/kind.yaml | kind create cluster --config -
  1. Deploy etcd
$ kubectl apply -f https://github.com/kubernetes-sigs/external-dns/raw/refs/tags/v0.21.0/docs/snippets/tutorials/coredns/etcd.yaml
$ kubectl rollout status statefulset etcd
  1. Deploy CoreDNS
$ helm repo add coredns https://coredns.github.io/helm
$ helm repo update
$ helm upgrade --install coredns coredns/coredns \
  -f https://github.com/user-attachments/files/28475732/values-coredns.yaml \
  -n default
  1. Deploy external-dns
$ helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/
$ helm repo update
$ helm upgrade --install external-dns external-dns/external-dns \
  -f https://github.com/user-attachments/files/28475733/values-external-dns.yaml \
  -n default

Anything else we need to know?:

The CoreDNS docs only specify keys like /skydns/arpa/in-addr/10/0/0/127, looks like the etcd backend doesn't support multiple PTR records.

If I duplicate the entry without the unique key:

$ kubectl exec -it etcd-0 -- etcdctl put /skydns/arpa/in-addr/172/26/0/2 '{"host":"coredns-etcd-worker","targetstrip":1}'
OK

And test again, I get the expected result:

dnstools# host 172.26.0.2 coredns.default.svc.cluster.local
Using domain server:
Name: coredns.default.svc.cluster.local
Address: 10.96.71.74#53
Aliases:

2.0.26.172.in-addr.arpa domain name pointer coredns-etcd-worker.

Environment:

  • External-DNS version (use external-dns --version): v20260406-v0.21.0
  • DNS provider: coredns
  • Others:

Checklist

  • I have searched existing issues and tried to find a fix myself
  • I am using the latest release,
    or have checked the staging image to confirm the bug is still reproducible
  • I have provided the actual process flags (not Helm values)
  • I have provided kubectl get <resource> -o yaml output including status
  • I have provided full external-dns debug logs
  • I have described what DNS records exist and what I expected

values-external-dns.yaml
values-coredns.yaml

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugCategorizes issue or PR as related to a bug.kind/featureCategorizes issue or PR as related to a new feature.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions