Skip to content

Add status condition for DNS TTL #752

@azgabur

Description

@azgabur

Is your feature request related to a problem? Please describe.
In the DNS, TTL is a time value which makes changes to the zone not have an immediate impact. Therefore to be 100% sure the required dns record can be queried by all users a dns propagation must happen. First step is to ensure all nameservers contain the required zone state, still is currently handled in the Ready status condition. But additionally either TTL of the changed record or negative caching TTL (or TTL of SOA records itself, always the minimum of the values) value of time must pass to be sure that all caching recursive resolvers will flush their cache to retrieve the new changes and this will complete the DNS propagation, this can be shown in a separate "Propagated" condition.

Describe the solution you'd like
For DNSRecord (and eventually also DNSPolicy) a new status condition should be added which would track time from the most recent change until expiration of TTL of either 1. Existing DNS record TTL or 2. Negative caching TTL defined in SOA record and give two answers. Either "Propagated" or "Not propagated"

status:
  conditions:
    - lastTransitionTime: 'xxx'
      message: DNS record is propagated
      status: 'True'
      type: Propagated

or

status:
  conditions:
    - lastTransitionTime: 'xxx'
      message: DNS record is propagating, TTL=xx
      status: 'False'
      type: Propagated

This will give the user some additional information if their DnsRecord (DNSPolicy) has been applied globally.

Additionally this could also affect the Ready condition, but I think this condition can be separated.

Describe alternatives you've considered
The information for calculating the "DNS Propagation" is all contained in the DNSRecord such as lastTransitionTime and TTL of the existing record, only missing information is negative caching TTL contained in SOA record which can be retrieved from dns query. So user could calculate this information if needed, but I still think having a status condition would be a good idea.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions