rfc2136-min-ttl results in record recreation in each reconciliation cycle
Author: mateuszdrabCreated Sep 12, 2026Updated Sep 13, 2026
Labelskind/bug
What happened:
I introduced the rfc2136-min-ttl to all my external-dns instances one month ago, today after the upgrade to 0.22, I noticed that there have been thousands of updates to my zone, unnecessarily done exactly since the change was introduced.
What you expected to happen:
During reconciliation, all records should be up to date.
How to reproduce it (as minimally and precisely as possible):
Use the rfc2136-min-ttl flag
Anything else we need to know?:
The log shows
time="2026-09-12T08:33:22Z" level=info msg="Removing RR: record.test.local 86400 A 192.168.88.9"
time="2026-09-12T08:33:22Z" level=info msg="Adding RR: record.test.local 86400 A 192.168.88.9"
time="2026-09-12T08:33:22Z" level=info msg="Removing RR: _a-record.test.local 0 TXT \"heritage=external-dns,external-dns/owner=cluster,external-dns/resource=service/kube-system/k8s-gateway\""
time="2026-09-12T08:33:22Z" level=info msg="Adding RR: _a-record.test.local 86400 TXT \"heritage=external-dns,external-dns/owner=cluster,external-dns/resource=service/kube-system/k8s-gateway\""Notice that external-dns indicates a TTL on the ownership record is 0, but it is in reality set correctly according to dig when querying my DNS, as such, it seems external-dns is not reading the TTL of the ownership record properly.
Environment:
- External-DNS version (use
external-dns --version): 0.22 - DNS provider: rfc2136 against Microsoft DNS and bind9 (separate instances)
- 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 yamloutput includingstatus - I have provided full external-dns debug logs
- I have described what DNS records exist and what I expected
Source: kubernetes-sigs/external-dns