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 yaml output including status
  • I have provided full external-dns debug logs
  • I have described what DNS records exist and what I expected

Source: kubernetes-sigs/external-dns