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):
- 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 -
- 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
- 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
- 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
values-external-dns.yaml
values-coredns.yaml
What happened:
Records are created in etcd:
But not returned by CoreDNS:
What you expected to happen:
The record to resolve.
How to reproduce it (as minimally and precisely as possible):
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:
And test again, I get the expected result:
Environment:
external-dns --version): v20260406-v0.21.0Checklist
or have checked the staging image to confirm the bug is still reproducible
kubectl get <resource> -o yamloutput includingstatusvalues-external-dns.yaml
values-coredns.yaml