Skip to content

route53: ZoneClass negativeCacheTTLSeconds owns the hosted zone SOA MINIMUM - #23

Merged
reoring merged 1 commit into
mainfrom
feat/route53-negative-cache-ttl
Nov 2, 2026
Merged

reoring merged 1 commit into
mainfrom
feat/route53-negative-cache-ttl

Conversation

@reoring

@reoring reoring commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Why

Resolvers cache NXDOMAIN/NODATA for the zone SOA MINIMUM (RFC 2308). Route 53 creates zones with MINIMUM 86400, so a record written by dns-api after a consumer's first lookup can stay invisible to in-VPC resolvers for a day. Platform worked around this with a CoreDNS forward hack; the zone's negative-cache TTL is dns-api's to own because it is the only writer of the zone.

What

  • Route53ZoneClassParameters.negativeCacheTTLSeconds (int32, 0..2147483647, optional). Absent = SOA untouched.
  • Zone reconcile (created and adopted zones, public and private): read apex SOA once; if MINIMUM differs, UPSERT the SOA changing only MINIMUM (TTL and the other six fields preserved). Tracked as PendingHostedZoneChange.Operation=NegativeCacheTTL through the existing INSYNC barrier.
  • Route53ZoneStatusData.negativeCacheTTLSeconds: observed MINIMUM.
  • Built-in Provider schemas (both manifests), docs (docs/design/route53-provider.md), README.

Checks

  • task generate, controller-chart:sync-crds, controller-chart:lint
  • go test ./internal/go/providers/route53/... ./pkg/go/api/route53/..., go build ./...

Consumer: appthrust/platform invert-wlc A2 (PMC CoreDNS takeover drops the forward hack).

…INIMUM

Resolvers cache NXDOMAIN/NODATA for the SOA MINIMUM (RFC 2308); Route 53
creates zones with 86400, so records written by dns-api can stay invisible
to in-VPC resolvers for a day. The Route 53 ZoneClass parameter
negativeCacheTTLSeconds makes the controller converge the apex SOA MINIMUM
of created and adopted hosted zones (one read per reconcile, one UPSERT
changing only MINIMUM, tracked as a pending hosted-zone change
NegativeCacheTTL). The observed MINIMUM is published in zone status data.
@reoring
reoring merged commit 7ab4c31 into main Nov 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant