external-dns/endpoint
Kyle Cronin 7fb144d8d8 Fix planning for multi-cluster dual stack record types
When AAAA multi-target / dual stack support was
added via #2461 it broke ownership of domains across
different clusters with different ingress records types.

For example if 2 clusters manage the same zone,
1 cluster uses A records and the other uses CNAME
records, when each record type is treated as a separate
planning record, it will cause ownership to bounce back
and forth and records to be constantly created and
deleted.

This change updates the planner to keep track of multiple
current records for a domain. This allows for A and AAAA
records to exist for a domain while allowing record type
changes.

The planner will ignore desired records for a domain that
represent conflicting record types allowed by RFC 1034 3.6.2.
For example if the desired records for a domain contains
a CNAME record plus any other record type no changes for
that domain will be planned.

The planner now contains an owned record filter provided
by the registry. This allows the planner to accurately plan
create updates when there are record type changes between
the current and desired endpoints. Without this filter the
planner could add create changes for domains not owned
by the controller.
2023-08-15 19:37:50 -04:00
..
crypto_test.go #1828: Support encrypted DNS txt records 2023-04-28 20:29:54 +02:00
crypto.go #1828: Support encrypted DNS txt records 2023-04-28 20:29:54 +02:00
domain_filter_test.go Add serialization/deserialization support to DomainFilter 2023-07-01 20:14:39 -07:00
domain_filter.go Add serialization/deserialization support to DomainFilter 2023-07-01 20:14:39 -07:00
endpoint_test.go Fix planning for multi-cluster dual stack record types 2023-08-15 19:37:50 -04:00
endpoint.go Fix planning for multi-cluster dual stack record types 2023-08-15 19:37:50 -04:00
labels_test.go #1828: Support encrypted DNS txt records 2023-04-28 20:29:54 +02:00
labels.go #1828: Support encrypted DNS txt records 2023-04-28 20:29:54 +02:00
target_filter_test.go Simplify TargetFilterInterface 2023-06-05 12:54:44 -07:00
target_filter.go Simplify TargetFilterInterface 2023-06-05 12:54:44 -07:00
zz_generated.deepcopy.go gofumpt 2022-09-20 20:48:57 -07:00