Skip to content

feat(txt-registry): deprecate legacy txt-format #5172

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 28 commits into
base: master
Choose a base branch
from

Conversation

ivankatliarchuk
Copy link
Contributor

@ivankatliarchuk ivankatliarchuk commented Mar 13, 2025

Description

TODO:

  • ✅ fix tests
  • ✅ test on real cluster and account
  • ✅ review docs
  • ✅ added TXT legacy record cleanup script

Checklist

  • Unit tests updated
  • End user documentation updated

Executed on real cluster with arguments

go run main.go \
    --provider=aws \
    --registry=txt \
    --source=fake \
    --aws-zone-type=private \
    --zone-id-filter=/hostedzone/XXXXXX \
    --log-level=debug \
    --policy=sync \
    --interval=60s \
    --fqdn-template=a1.ex.com

Without change, records current and old format created

aws route53 list-resource-record-sets --hosted-zone-id ${ZONE_UNDER_TEST} --query "ResourceRecordSets[?Type=='TXT'].{Name:Name, Value:ResourceRecords[0].Value}" --output table
-----------------------------------------------------------------------------
|                          ListResourceRecordSets                           |
+--------------------+------------------------------------------------------+
|        Name        |                        Value                         |
+--------------------+------------------------------------------------------+
|  a-fhbr.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-gwbl.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-hgmc.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-hmqw.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-hoxg.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-ipfd.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-melr.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-mkde.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-uknh.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-xiqj.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  fhbr.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  gwbl.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  hgmc.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  hmqw.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  hoxg.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  ipfd.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  melr.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  mkde.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  uknh.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  xiqj.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
+--------------------+------------------------------------------------------+

With the change. New format records created, letagcy TXT records left untouched

❯❯ aws route53 list-resource-record-sets --hosted-zone-id ${ZONE_UNDER_TEST} --query "ResourceRecordSets[?Type=='TXT'].{Name:Name, Value:ResourceRecords[0].Value}" --output table
-----------------------------------------------------------------------------
|                          ListResourceRecordSets                           |
+--------------------+------------------------------------------------------+
|        Name        |                        Value                         |
+--------------------+------------------------------------------------------+
|  a-dkmw.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-ihkf.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-iztb.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-jlmh.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-kmam.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-lqpv.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-rizx.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-sjfa.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-uvlq.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  a-vgpc.a1.ex.com. |  "heritage=external-dns,external-dns/owner=default"  |
|  bwwo.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  ecvx.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  ilan.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  iyda.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  nhhy.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  pazy.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  sdeo.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  tosb.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  wrej.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
|  yymt.a1.ex.com.   |  "heritage=external-dns,external-dns/owner=default"  |
+--------------------+------------------------------------------------------+
``

@ivankatliarchuk ivankatliarchuk marked this pull request as draft March 13, 2025 09:42
@k8s-ci-robot k8s-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 13, 2025
@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Mar 13, 2025
@ivankatliarchuk
Copy link
Contributor Author

/label tide/merge-method-squash

@k8s-ci-robot k8s-ci-robot added the tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges. label Mar 13, 2025
@ivankatliarchuk
Copy link
Contributor Author

/kind cleanup

@k8s-ci-robot k8s-ci-robot added the kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. label Mar 13, 2025
@ivankatliarchuk ivankatliarchuk changed the title WIP: feat(txt-registry): deprecate legacy txt-format feat(txt-registry): deprecate legacy txt-format Mar 14, 2025
@ivankatliarchuk ivankatliarchuk marked this pull request as ready for review March 14, 2025 11:28
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 14, 2025
@mcharriere
Copy link
Contributor

mcharriere commented Mar 27, 2025

Legacy format has one owner ID, then for non legacy to have another owner ID, all records needs to be recreated

which case is that one? changing owner id is not even supported by external-dns

EDIT:
Ah I think I understand your comment, the first file in that commit says something about owner-id. Please ignore and check the rest of the files, in particular docs/registry.md. The ‎docs/proposal/registry.md not really relevant for the discussion.

@ivankatliarchuk
Copy link
Contributor Author

I'm sorry, I'm not entirely clear on what's being asked. The issue is that I haven't discovered a reliable way to automate legacy TXT record deletions without downtimes. That's why it's not in this pull request. If someone knows how to automate this, nothing wrong to open a pull request with proposed functionality.

@mrozentsvayg
Copy link
Contributor

mrozentsvayg commented Mar 31, 2025

The author of the new format saw the possibility of cleaning up the old registry records here: 25c7cb2

Although some of the code changed since then, this line still suggest the clean up can be done there. I'm playing a bit with it but there are some edge cases that need further research.

this is not entirely correct, the reservation here is that the Registry.ApplyChanges() code only gets called on plan.Changes.HasChanges()
it's a graceful approach of deleting the records(provider agnostic), but only eventually consistent

the effective solution in my opinion could be adding specific one-off mode for the external-dns or building a separate tool to aggressively scan the txt registry regardless of the changes and:

  1. delete the old-style txt records with the respect to the existing prefix/suffix/owner configuration (can't do much more for all the combinations);
  2. inform if TXT records are missing for the expected DNS records (now it's also only get handled in case of changes) and potentially try to fix it;
  3. inform if there are extra TXT records in the zone unexpected for the current DNS records and prefix/suffix/owner configuration;

if we would like to discuss it further, it doesn't necessarily have to block this PR, which essentially is to stop adding more garbage TXT records, especially for the new users

@mcharriere
Copy link
Contributor

mcharriere commented Apr 1, 2025

this is not entirely correct, the reservation here is that the Registry.ApplyChanges() code only gets called on plan.Changes.HasChanges()

the txt registry has a way to force an update (see https://github.com/kubernetes-sigs/external-dns/blob/master/registry/txt.go#L217); making the solution possible.

This PR deletes a part that is needed to implement the cleanup of the old-format records.

@ivankatliarchuk
Copy link
Contributor Author

Ok. I'll put this pr on hold. Let's get back to it in few month time.

/hold

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Apr 1, 2025
@ivankatliarchuk
Copy link
Contributor Author

Seems like noone suggested a solution to what was discussed here.

Rationale to remove legacy TXT formats

  • We could not or it's extremely difficult to fix bugs related to formats, and list is growing
  • We are stuck with both formats and no plan

Drawback

  • This PR is not going to help cleanup environments. I personally see not safe/reliable way doing that, if it exists, the community had time to implement one.

Two options, merging this PR or closing. I'm fine with any of them

@Raffo or @szuecs could you make a decision. Go or No-go?

@frittentheke
Copy link
Contributor

Seems like noone suggested a solution to what was discussed here.

Rationale to remove legacy TXT formats

* We could not or it's extremely difficult to fix bugs related to formats, and list is growing
* We are stuck with both formats and no plan

Regarding any bugs and potential fixes for issues like #2903 I also believe the exposure and complexity needs to be reduced.

Drawback

* This PR is not going to help cleanup environments. I personally see not safe/reliable way doing that, if it exists, the community had time to implement one.

It's a bit unfortunate that there never was an external-dns bridge release doing some sort of consistency check and then active migration to the new format. Including logging warnings about potential inconsistencies.

Two options, merging this PR or closing. I'm fine with any of them
@Raffo or @szuecs could you make a decision. Go or No-go?

👀

@Evesy
Copy link
Contributor

Evesy commented May 1, 2025

Between the two I'm in favour of making a breaking change and dropping the legacy format since there's little appetite in providing an automated migration path.

We've performed a migration for all our records (Google & Cloudflare providers) and though it was a bit of toil it wasn't too much effort to do so.

I don't feel continuing to have both TXT formats, especially given they each have their own caveats, is sustainable to keep long term, and it's not great user experience with the current implementation

@k8s-ci-robot k8s-ci-robot added lgtm "Looks good to me", indicates that a PR is ready to be merged. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels May 4, 2025
@mloiseleur
Copy link
Collaborator

/approve cancel

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please ask for approval from mloiseleur. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot removed the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 4, 2025
@mloiseleur
Copy link
Collaborator

/lgtm cancel

@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label May 4, 2025
@mloiseleur
Copy link
Collaborator

Sorry, I thought I was on an other PR. I resumed this PR to its previous state.

@Yunir
Copy link

Yunir commented May 22, 2025

do we want to change cname-* to a-* for AWS txt record for aliases to make it similar to ipv6 AAAA-record&aaaa-* txt-record to just remove confusion? (confussion discussion is going here: #2903 (comment)) Or we can leave it just as a legacy of a product, because it does not brake anything.
If we want to change it, then I think it's easier first to do rename-PR for TXT new format of A alias record for AWS from prefix cname-* to a-*. If no, then we are good to go with this PR.
I am also eager to reduce the amount of txt records to one.

@frittentheke
Copy link
Contributor

frittentheke commented May 22, 2025

do we want to change cname-* to a-* for AWS txt record for aliases to make it similar to ipv6 AAAA-record&aaaa-* txt-record to just remove confusion? (confussion discussion is going here: #2903 (comment)) Or we can leave it just as a legacy of a product, because it does not brake anything. If we want to change it, then I think it's easier first to do rename-PR for TXT new format of A alias record for AWS from prefix cname-* to a-*. If no, then we are good to go with this PR. I am also eager to reduce the amount of txt records to one.

Yes. Remove old format first! No option, no switch. Simply drop it from external-dns.
The migration phase has been going on long enough as having two formats now actively causes issues with new changes and bugfixes.

If that is done, I strongly vote for fixing the prefix for A-records to a-. Them being an alias is simply the technicality of AWS (or other providers which support it). The record TYPE is still either A or AAAA.

Just my 2 cents.

@Yunir
Copy link

Yunir commented May 22, 2025

Yes. Remove old format first! ... If that is done, I strongly vote for fixing the prefix for A-records to a-.

I think you misread my message.
If we want to move from cname- to a-, then it is safer to do it prior the removal of old-txt format. Why:

  • old-txt-format (txt w/o prefix) needs for external-dns to continue manage the records w/o any disruption while refactoring
  • new-txt-format can be changed easily, because it's additional record for now (refactor from cname- to a-)

But if we first remove old-txt format, then we will be left without 'intermediate' working option (it will introduce the 'breaking change' with 'action needed') - external-dns will manage either only A record which has cname-<domain> or a-<domain>, not both. It will be harder to migrate. If we do it, then external-dns will lose rights to manage all records, because it would try to search for a-<domain> only, but old version were creating just cname-<domain>.

So, I am more asking if we want to remove that confusion with prefix, then propose to do it first, as it will be much easier to do the refactor and migrate. But if we don't want to remove confusion, then we might just leave cname- prefix for A-alias aws records as a legacy, it is also fine.

@frittentheke, I understand your willing to move this PR faster, but before the decision made, you may still fallback to the usage of --txt-new-format-only flag as a temporary solution.

@frittentheke
Copy link
Contributor

frittentheke commented May 22, 2025

Yes. Remove old format first! ... If that is done, I strongly vote for fixing the prefix for A-records to a-.

I think you misread my message. If we want to move from cname- to a-, then it is safer to do it prior the removal of old-txt format. Why:

* old-txt-format (txt w/o prefix) needs for external-dns to continue manage the records w/o any disruption while refactoring

* new-txt-format can be changed easily, because it's additional record for now (refactor from `cname-` to `a-`)

But if we first remove old-txt format, then we will be left without 'intermediate' working option (it will introduce the 'breaking change' with 'action needed') - external-dns will manage either only A record which has cname-<domain> or a-<domain>, not both. It will be harder to migrate. If we do it, then external-dns will lose rights to manage all records, because it would try to search for a-<domain> only, but old version were creating just cname-<domain>.

@frittentheke, I understand your willing to move this PR faster, but before the decision made, you may still fallback to the usage of --txt-new-format-only flag as a temporary solution.

No I did not misread it. The opportunity to clean up anything before the new format is LONG gone. It's out there, for quite a while and the last releases actively communicated the intend to remove the old format. We pushed ahead exactly as you said and applied --txt-new-format-only in our environment and removed all legacy TXT records in the process.
See e.g. https://github.com/kubernetes-sigs/external-dns/blob/cd624b6f550c75a5accab84b1354f851e232f384/docs/registry/txt.md#record-format-options which go us started early knowing this very PR here was already open and deprecation was coming.

In the field you will now likely encounter a wild mix of both TXT record formats.

There also was plenty discussion around any potential shortcomings in #3757.

So, I am more asking if we want to remove that confusion with prefix, then propose to do it first, as it will be much easier to do the refactor and migrate. But if we don't want to remove confusion, then we might just leave cname- prefix for A-alias aws records as a legacy, it is also fine.

To clarify what I meant:

Remove the old TXT record format for good (making any of those TXT records just meaningless garbage to external-dns). Then and only then(!) pick up on the renaming bugfix and please add an active conversion / rewrite of the prefix. This should be fairly easy then as it's not possible to have a CNAME and and A record at the same time. So a simple up-conversion is possible. But please don't give up on making things right in regard to the prefix. It's confusing and wrong naming one a cname- and the other an aaaa-. And it's only the non-functional record-keeping TXT records after all that need the cleanup. All of which are totally owned and maintained by external-dns and its responsibility to keep tidy.

@ivankatliarchuk
Copy link
Contributor Author

This particular TXT registry format(old and new to an extend) has been a long-standing problem. New TXT formats have been available for a long time, and disabling the old format would not introduce a breaking change because the TXT records are just ownership records, while the new one has been standard for many versions. If we remove support for these legacy TXT records, the main concern will be dangling records from the old format, which is why we are waiting where someone would like to implement a solution to reliably do a cleanup for all combinations of the config and providers.

Once again - as these are primarily ownership records, their removal should not cause any functional breakage. But as usual, it could be, that there are could be some issues or edge cases. But is difficult to predict.

Users who don't require two TXT ownership records per DNS entry have viable options. They can either encrypt their TXT records, which ensures only the new format TXT record is created, or they can use the --txt-new-format-only flag to exclusively enable new records. It's important to note that, to date, not a single bug or issue related to this functionality has been identified. In both scenarios, any existing old TXT ownership records will need to be removed either manually or via proprietary scripts to prevent potential downtimes.

@ivankatliarchuk
Copy link
Contributor Author

But if we first remove old-txt format, then we will be left without 'intermediate' working option (it will introduce the 'breaking change' with 'action needed') - external-dns will manage either only A record which has cname-<domain> or a-<domain>, not both. It will be harder to migrate. If we do it, then external-dns will lose rights to manage all records, because it would try to search for a-<domain> only, but old version were creating just cname-<domain>.

There is a intermediate option - which is current TXT format(new format), introduced years back. Is there is an open issue that describes this problem, I could have a look, just need to know how to reproduce it. More important, if the prefix should be cname-, but is an aaa- or whatever, it doesn't necessarily break functionality. These TXT records are primarily for external-dns to determine if it manages or owns a particular record.

@ivankatliarchuk
Copy link
Contributor Author

If that is done, I strongly vote for fixing the prefix for A-records to a-. Them being an alias is simply the technicality of AWS (or other providers which support it). The record TYPE is still either A or AAAA.

I'll try to have a look at this one. I remember it was mentioned in one of the issues. Just need to find and see if there is an easy fix.

JesusMtnez pushed a commit to JesusMtnez/homelab that referenced this pull request May 29, 2025
…o v0.16.1 (#667)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [registry.k8s.io/external-dns/external-dns](https://github.com/kubernetes-sigs/external-dns) | minor | `v0.15.1` -> `v0.16.1` |

---

### Release Notes

<details>
<summary>kubernetes-sigs/external-dns (registry.k8s.io/external-dns/external-dns)</summary>

### [`v0.16.1`](https://github.com/kubernetes-sigs/external-dns/releases/tag/v0.16.1)

[Compare Source](kubernetes-sigs/external-dns@v0.16.0...v0.16.1)

This release fixes the breaking change introduced in v0.16.0 for Cloudflare.

:warning: New features on Cloudflare, custom and regional hostnames have some known issues, see [#&#8203;5175](kubernetes-sigs/external-dns#5175) and [#&#8203;5183](kubernetes-sigs/external-dns#5183)

:warning: OpenStack designate in-tree provider will be removed in the next version. There is now a [webhook provider](https://github.com/inovex/external-dns-openstack-webhook).

:information_source: With v0.16.0, a new option on TXT Registry is available to use only new format ([#&#8203;4946](kubernetes-sigs/external-dns#4946)). Previous format will be removed in the next release ([#&#8203;5172](kubernetes-sigs/external-dns#5172)).

#### 🐛 Bug fixes

-   fix(cloudflare): optional custom hostnames by [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg) in kubernetes-sigs/external-dns#5146
-   fix(source): pass GatewayName to config by [@&#8203;buroa](https://github.com/buroa) in kubernetes-sigs/external-dns#5169
-   fix(cloudflare): infinite loop with more than 50 custom hostnames by [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg) in kubernetes-sigs/external-dns#5181

#### 📦 Others

-   chore: update OWNERS with required config file by [@&#8203;mloiseleur](https://github.com/mloiseleur) in kubernetes-sigs/external-dns#5164

**Full Changelog**: kubernetes-sigs/external-dns@v0.16.0...v0.16.1

### [`v0.16.0`](https://github.com/kubernetes-sigs/external-dns/releases/tag/v0.16.0)

[Compare Source](kubernetes-sigs/external-dns@v0.15.1...v0.16.0)

#### 💥 Breaking Changes

There is a [breaking change on Cloudflare](kubernetes-sigs/external-dns#5166) with this release. It requires Cloudflare for Saas.

#### 🚀 Features

-   feat: add dreamhost webook provider to readme  ([#&#8203;5015](kubernetes-sigs/external-dns#5015)) [@&#8203;asymingt](https://github.com/asymingt)
-   feat: Add F5 TransportServer source  ([#&#8203;4944](kubernetes-sigs/external-dns#4944)) [@&#8203;visokoo](https://github.com/visokoo)
-   feat(chart): allow to run tpl on `ServiceAccount` annotations ([#&#8203;4958](kubernetes-sigs/external-dns#4958)) ([#&#8203;4958](kubernetes-sigs/external-dns#4958)) [@&#8203;fcrespofastly](https://github.com/fcrespofastly)
-   feat(cloudflare): custom hostname and fix apex  ([#&#8203;5087](kubernetes-sigs/external-dns#5087)) [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg)
-   feat(deps): added renovate config for custom regexes  ([#&#8203;4978](kubernetes-sigs/external-dns#4978)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   feat: don't discard klog logs at the highest log levels (debug and trace)  ([#&#8203;4961](kubernetes-sigs/external-dns#4961)) [@&#8203;dmarkhas](https://github.com/dmarkhas)
-   feat(pdns): add validation for MX and SRV records  ([#&#8203;4871](kubernetes-sigs/external-dns#4871)) [@&#8203;julillae](https://github.com/julillae)
-   feat(rfc2136): support multiple hosts  ([#&#8203;4653](kubernetes-sigs/external-dns#4653)) [@&#8203;Jeremy-Boyle](https://github.com/Jeremy-Boyle)
-   feat(service): listen to endpoint changes  ([#&#8203;5085](kubernetes-sigs/external-dns#5085)) [@&#8203;dmarkhas](https://github.com/dmarkhas)
-   feat(source): allow to register all pods and their associated PTR record  ([#&#8203;4782](kubernetes-sigs/external-dns#4782)) [@&#8203;foyerunix](https://github.com/foyerunix)
-   feat(txt-registry): add option to use only new format ([#&#8203;4946](kubernetes-sigs/external-dns#4946)) [@&#8203;malpou](https://github.com/malpou)

#### 🐛 Bug fixes

-   fix(aes-encryption): support plain txt and url safe base64 strings  ([#&#8203;4980](kubernetes-sigs/external-dns#4980)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   fix(aws-provider): ListTagsForResource incorrect zone-id handling  ([#&#8203;5029](kubernetes-sigs/external-dns#5029)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   fix(chart): non-string types on svcaccount annotations ([#&#8203;5067](kubernetes-sigs/external-dns#5067)) [@&#8203;hjoshi123](https://github.com/hjoshi123)
-   fix(chart): regression with affinity.nodeAffinity getting ignored  ([#&#8203;5046](kubernetes-sigs/external-dns#5046)) [@&#8203;mkhpalm](https://github.com/mkhpalm)
-   fix(chart): update rbac for F5 transportserver source ([#&#8203;5066](kubernetes-sigs/external-dns#5066)) ([#&#8203;5066](kubernetes-sigs/external-dns#5066)) [@&#8203;visokoo](https://github.com/visokoo)
-   fix(cloudflare): add more descriptive log message  ([#&#8203;5047](kubernetes-sigs/external-dns#5047)) [@&#8203;AndrewCharlesHay](https://github.com/AndrewCharlesHay)
-   fix(cloudflare): use softerror on internal server error with api  ([#&#8203;4931](kubernetes-sigs/external-dns#4931)) [@&#8203;vishuvenu](https://github.com/vishuvenu)
-   fix(dedup): records with different type are not duplicates  ([#&#8203;4889](kubernetes-sigs/external-dns#4889)) [@&#8203;jtszalay](https://github.com/jtszalay)
-   fix(docs): aws tutorial broken internal markdown links  ([#&#8203;5036](kubernetes-sigs/external-dns#5036)) [@&#8203;strophy](https://github.com/strophy)
-   fix:  do not merge CNAME with multiple targets  ([#&#8203;4856](kubernetes-sigs/external-dns#4856)) [@&#8203;dtuck9](https://github.com/dtuck9)
-   fix(f5-virtualserver): skip endpoint creation when VirtualServer is not ready ([#&#8203;4996](kubernetes-sigs/external-dns#4996)) [@&#8203;mikejoh](https://github.com/mikejoh)
-   fix(godaddy): Handle missing Retry-After header gracefully  ([#&#8203;4866](kubernetes-sigs/external-dns#4866)) [@&#8203;alexstojda](https://github.com/alexstojda)
-   fix(oci): records with multiple IP addresses  ([#&#8203;4993](kubernetes-sigs/external-dns#4993)) [@&#8203;jrosinsk](https://github.com/jrosinsk)
-   fix(ovh): cache refresh and duplicates processing  ([#&#8203;4932](kubernetes-sigs/external-dns#4932)) [@&#8203;nmaupu](https://github.com/nmaupu)
-   fix(registry): handle empty targets in TXT records logging an error  ([#&#8203;5149](kubernetes-sigs/external-dns#5149)) [@&#8203;saikatharryc](https://github.com/saikatharryc)
-   fix(source): allow ipv4-mapped ipv6 addresses  ([#&#8203;4943](kubernetes-sigs/external-dns#4943)) [@&#8203;buroa](https://github.com/buroa)
-   fix(source): debug log on gateway target detection  ([#&#8203;5096](kubernetes-sigs/external-dns#5096)) [@&#8203;drcapulet](https://github.com/drcapulet)
-   Fix spelling in webhook OpenAPI spec  ([#&#8203;5038](kubernetes-sigs/external-dns#5038)) [@&#8203;claycooper](https://github.com/claycooper)
-   fix: use informer for istio gateways  ([#&#8203;4522](kubernetes-sigs/external-dns#4522)) [@&#8203;woehrl01](https://github.com/woehrl01)

#### 📝 Documentation

-   docs: add deprecation policy ([#&#8203;5053](kubernetes-sigs/external-dns#5053)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   docs: add staging images to release process ([#&#8203;5050](kubernetes-sigs/external-dns#5050)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   docs: fix typo on aws tutorial  ([#&#8203;5070](kubernetes-sigs/external-dns#5070)) [@&#8203;Ileriayo](https://github.com/Ileriayo)
-   docs: fix typos in tutorials  ([#&#8203;4969](kubernetes-sigs/external-dns#4969)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   docs(Microsoft DNS): improve instructions  ([#&#8203;4893](kubernetes-sigs/external-dns#4893)) [@&#8203;TomyLobo](https://github.com/TomyLobo)
-   docs(proposal): standartise date format  ([#&#8203;5128](kubernetes-sigs/external-dns#5128)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   docs(proposal): update template with statuses  ([#&#8203;5098](kubernetes-sigs/external-dns#5098)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   docs(provider): add ClouDNS to README  ([#&#8203;5065](kubernetes-sigs/external-dns#5065)) [@&#8203;rwunderer](https://github.com/rwunderer)
-   docs(README): fix link to dev guide  ([#&#8203;5116](kubernetes-sigs/external-dns#5116)) [@&#8203;masterkain](https://github.com/masterkain)
-   docs(registry): fix managed-record-type argument  ([#&#8203;5102](kubernetes-sigs/external-dns#5102)) [@&#8203;splitice](https://github.com/splitice)
-   docs: update and refactor contribution part ([#&#8203;5073](kubernetes-sigs/external-dns#5073)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   ci(docs): add markdown linters and editorconfig ([#&#8203;5055](kubernetes-sigs/external-dns#5055)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   Improve sources' docs to mention '--managed-record-types'  ([#&#8203;4882](kubernetes-sigs/external-dns#4882)) [@&#8203;juan-vg](https://github.com/juan-vg)

#### 📦 Others

-   add: auto label source and providers  ([#&#8203;5158](kubernetes-sigs/external-dns#5158)) [@&#8203;szuecs](https://github.com/szuecs)
-   Add OpenStack Designate webook provider to readme  ([#&#8203;5115](kubernetes-sigs/external-dns#5115)) [@&#8203;frittentheke](https://github.com/frittentheke)
-   chore(ci): fix and sort changelog  ([#&#8203;4979](kubernetes-sigs/external-dns#4979)) [@&#8203;mloiseleur](https://github.com/mloiseleur) dependabot
-   chore(ci): fix failing test, upgrade to go 1.23.5 and linter to v1.63  ([#&#8203;5013](kubernetes-sigs/external-dns#5013)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   chore(ci): remove too slow test  ([#&#8203;5014](kubernetes-sigs/external-dns#5014)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   chore(deps): bump actions/setup-python from 5.3.0 to 5.4.0 in the dev-dependencies group  ([#&#8203;5041](kubernetes-sigs/external-dns#5041)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump azure/setup-helm from 4.2.0 to 4.3.0 in the dev-dependencies group  ([#&#8203;5108](kubernetes-sigs/external-dns#5108)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump helm/kind-action from 1.10.0 to 1.11.0 in the dev-dependencies group  ([#&#8203;4956](kubernetes-sigs/external-dns#4956)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump helm/kind-action from 1.11.0 to 1.12.0 in the dev-dependencies group  ([#&#8203;4972](kubernetes-sigs/external-dns#4972)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump nosborn/github-action-markdown-cli from 3.3.0 to 3.4.0 in the dev-dependencies group  ([#&#8203;5083](kubernetes-sigs/external-dns#5083)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 14 updates  ([#&#8203;4976](kubernetes-sigs/external-dns#4976)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 18 updates  ([#&#8203;5040](kubernetes-sigs/external-dns#5040)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 20 updates  ([#&#8203;4999](kubernetes-sigs/external-dns#4999)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 21 updates  ([#&#8203;5089](kubernetes-sigs/external-dns#5089)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 22 updates  ([#&#8203;5062](kubernetes-sigs/external-dns#5062)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 23 updates  ([#&#8203;5145](kubernetes-sigs/external-dns#5145)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 25 updates  ([#&#8203;5023](kubernetes-sigs/external-dns#5023)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 5 updates  ([#&#8203;4987](kubernetes-sigs/external-dns#4987)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group across 1 directory with 7 updates  ([#&#8203;5125](kubernetes-sigs/external-dns#5125)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group with 20 updates  ([#&#8203;5109](kubernetes-sigs/external-dns#5109)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group with 2 updates  ([#&#8203;5022](kubernetes-sigs/external-dns#5022)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group with 3 updates  ([#&#8203;5112](kubernetes-sigs/external-dns#5112)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(deps): bump the dev-dependencies group with 4 updates  ([#&#8203;4988](kubernetes-sigs/external-dns#4988)) [@&#8203;dependabot](https://github.com/dependabot)
-   chore(docs): docs/flags.md generation  ([#&#8203;4983](kubernetes-sigs/external-dns#4983)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(filter-tags): pre-process filter tags  ([#&#8203;5063](kubernetes-sigs/external-dns#5063)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(makefile): add helper and document targets  ([#&#8203;5093](kubernetes-sigs/external-dns#5093)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(makefile): simplify coverage script  ([#&#8203;5105](kubernetes-sigs/external-dns#5105)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(provider-aws): improve canonicalHostedZone handling  ([#&#8203;5031](kubernetes-sigs/external-dns#5031)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore(release): publish chart v1.15.2  ([#&#8203;5094](kubernetes-sigs/external-dns#5094)) [@&#8203;stevehipwell](https://github.com/stevehipwell)
-   chore: update maintainers/reviewers  ([#&#8203;5020](kubernetes-sigs/external-dns#5020)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   chore: upgrade ExternalDNS to go 1.24  ([#&#8203;5106](kubernetes-sigs/external-dns#5106)) [@&#8203;mloiseleur](https://github.com/mloiseleur)
-   kustomize-v0.15.1  ([#&#8203;4966](kubernetes-sigs/external-dns#4966)) [@&#8203;Raffo](https://github.com/Raffo)
-   Release Helm chart for `v0.15.1`  ([#&#8203;5028](kubernetes-sigs/external-dns#5028)) [@&#8203;stevehipwell](https://github.com/stevehipwell)
-   replace all versions to v0.15.1  ([#&#8203;4973](kubernetes-sigs/external-dns#4973)) [@&#8203;Raffo](https://github.com/Raffo)
-   test(cloudflare): add scenarios on submitChanges  ([#&#8203;5054](kubernetes-sigs/external-dns#5054)) [@&#8203;AndrewCharlesHay](https://github.com/AndrewCharlesHay)
-   test(domain-filter): simple filters on domain exclusion ([#&#8203;5064](kubernetes-sigs/external-dns#5064)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)
-   test(provider): tags filter coverage and benchmark  ([#&#8203;5060](kubernetes-sigs/external-dns#5060)) [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk)

#### New Contributors

-   [@&#8203;juan-vg](https://github.com/juan-vg) made their first contribution in kubernetes-sigs/external-dns#4882
-   [@&#8203;dmarkhas](https://github.com/dmarkhas) made their first contribution in kubernetes-sigs/external-dns#4961
-   [@&#8203;buroa](https://github.com/buroa) made their first contribution in kubernetes-sigs/external-dns#4943
-   [@&#8203;fcrespofastly](https://github.com/fcrespofastly) made their first contribution in kubernetes-sigs/external-dns#4958
-   [@&#8203;nmaupu](https://github.com/nmaupu) made their first contribution in kubernetes-sigs/external-dns#4932
-   [@&#8203;dtuck9](https://github.com/dtuck9) made their first contribution in kubernetes-sigs/external-dns#4856
-   [@&#8203;asymingt](https://github.com/asymingt) made their first contribution in kubernetes-sigs/external-dns#5015
-   [@&#8203;alexstojda](https://github.com/alexstojda) made their first contribution in kubernetes-sigs/external-dns#4866
-   [@&#8203;visokoo](https://github.com/visokoo) made their first contribution in kubernetes-sigs/external-dns#4944
-   [@&#8203;vishuvenu](https://github.com/vishuvenu) made their first contribution in kubernetes-sigs/external-dns#4931
-   [@&#8203;TomyLobo](https://github.com/TomyLobo) made their first contribution in kubernetes-sigs/external-dns#4893
-   [@&#8203;strophy](https://github.com/strophy) made their first contribution in kubernetes-sigs/external-dns#5036
-   [@&#8203;malpou](https://github.com/malpou) made their first contribution in kubernetes-sigs/external-dns#4946
-   [@&#8203;foyerunix](https://github.com/foyerunix) made their first contribution in kubernetes-sigs/external-dns#4782
-   [@&#8203;rwunderer](https://github.com/rwunderer) made their first contribution in kubernetes-sigs/external-dns#5065
-   [@&#8203;Ileriayo](https://github.com/Ileriayo) made their first contribution in kubernetes-sigs/external-dns#5070
-   [@&#8203;hjoshi123](https://github.com/hjoshi123) made their first contribution in kubernetes-sigs/external-dns#5067
-   [@&#8203;mkhpalm](https://github.com/mkhpalm) made their first contribution in kubernetes-sigs/external-dns#5046
-   [@&#8203;woehrl01](https://github.com/woehrl01) made their first contribution in kubernetes-sigs/external-dns#4522
-   [@&#8203;jtszalay](https://github.com/jtszalay) made their first contribution in kubernetes-sigs/external-dns#4889
-   [@&#8203;splitice](https://github.com/splitice) made their first contribution in kubernetes-sigs/external-dns#5102
-   [@&#8203;drcapulet](https://github.com/drcapulet) made their first contribution in kubernetes-sigs/external-dns#5096
-   [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg) made their first contribution in kubernetes-sigs/external-dns#5087
-   [@&#8203;frittentheke](https://github.com/frittentheke) made their first contribution in kubernetes-sigs/external-dns#5115
-   [@&#8203;masterkain](https://github.com/masterkain) made their first contribution in kubernetes-sigs/external-dns#5116
-   [@&#8203;renanqts](https://github.com/renanqts) made their first contribution in kubernetes-sigs/external-dns#5132
-   [@&#8203;rlees85](https://github.com/rlees85) made their first contribution in kubernetes-sigs/external-dns#5111
-   [@&#8203;stefaneg](https://github.com/stefaneg) made their first contribution in kubernetes-sigs/external-dns#5135
-   [@&#8203;saikatharryc](https://github.com/saikatharryc) made their first contribution in kubernetes-sigs/external-dns#5149

**Full Changelog**: kubernetes-sigs/external-dns@v0.15.1...v0.16.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4wLjAtbmV4dC4xIiwidXBkYXRlZEluVmVyIjoiNDAuMC4wLW5leHQuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwL21pbm9yIl19-->

Reviewed-on: https://codeberg.org/JesusMtnez/homelab/pulls/667
Co-authored-by: JesusMtnez-bot <[email protected]>
Co-committed-by: JesusMtnez-bot <[email protected]>
JesusMtnez added a commit to JesusMtnez/homelab that referenced this pull request May 29, 2025
…o v0.17.0 (#712)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [registry.k8s.io/external-dns/external-dns](https://github.com/kubernetes-sigs/external-dns) | minor | `v0.16.1` -> `v0.17.0` |

---

### Release Notes

<details>
<summary>kubernetes-sigs/external-dns (registry.k8s.io/external-dns/external-dns)</summary>

### [`v0.17.0`](https://github.com/kubernetes-sigs/external-dns/releases/tag/v0.17.0)

[Compare Source](kubernetes-sigs/external-dns@v0.16.1...v0.17.0)

#### Global information

:information_source: On Pi Hole, support for v6 has been added. Pi Hole v5 support is deprecated and will be removed in a future version

:information_source: On OVH, the provider has been heavily rewritten. New ACLs are need. See documentation and PR [#&#8203;5143](kubernetes-sigs/external-dns#5143) for details.

:information_source: On IPv6, the [proposal 002](https://github.com/kubernetes-sigs/external-dns/blob/master/docs/proposal/002-internal-ipv6-handling-rollback.md) has been implemented, thanks to [@&#8203;hjoshi123](https://github.com/hjoshi123)

-   ⚠️ In the next release, the default of this new `expose-internal-ipv6` flag will be set to false

⚠️ There is a severe known issue with Active Directory ([#&#8203;5240](kubernetes-sigs/external-dns#5240)) since v0.16.0. PR to fix it ([#&#8203;5385](kubernetes-sigs/external-dns#5385)) is in review

:information_source: The legacy txt-format will be removed in the next minor version ([#&#8203;5172](kubernetes-sigs/external-dns#5172))

-   ⚠️ There is currently no migration script to clean old style txt records. If you need it, if you think you can do it, PRs are welcome.

ℹ️ A new Nomad source may be added to external-dns ([#&#8203;5284](kubernetes-sigs/external-dns#5284))

-   This PR can be merged only after a review and test from real Nomad users

#### 🚀 Features

-   feat: additional template functions by [@&#8203;matkam](https://github.com/matkam) in [#&#8203;3949](kubernetes-sigs/external-dns#3949)
-   feat(banner): standardize user agent and output by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5154](kubernetes-sigs/external-dns#5154)
-   feat(chart): Update image to v0.16.1 by [@&#8203;stevehipwell](https://github.com/stevehipwell) in [#&#8203;5201](kubernetes-sigs/external-dns#5201)
-   feat(cloudflare): multiple custom hostnames support by [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg) in [#&#8203;5239](kubernetes-sigs/external-dns#5239)
-   feat(helm): allow extraArgs to also be a map enabling overrides of individual values by [@&#8203;frittentheke](https://github.com/frittentheke) in [#&#8203;5293](kubernetes-sigs/external-dns#5293)
-   feat: IDNA awareness in the zone finder by [@&#8203;lexisother](https://github.com/lexisother) in [#&#8203;5147](kubernetes-sigs/external-dns#5147)
-   feat(ovh): major rewriting of the provider by [@&#8203;rbeuque74](https://github.com/rbeuque74) in [#&#8203;5143](kubernetes-sigs/external-dns#5143)
-   feat(pihole): add optional support for v6 by [@&#8203;tJouve](https://github.com/tJouve) in [#&#8203;5226](kubernetes-sigs/external-dns#5226)
-   feat(pihole): add support for IPv6 Dual format by [@&#8203;tJouve](https://github.com/tJouve) in [#&#8203;5253](kubernetes-sigs/external-dns#5253)
-   feat(source): optional exclusion of unschedulable nodes by [@&#8203;Hayajiro](https://github.com/Hayajiro) in [#&#8203;5045](kubernetes-sigs/external-dns#5045)
-   feat(source): optional expose of nodes internal ipv6 by [@&#8203;hjoshi123](https://github.com/hjoshi123) in [#&#8203;5192](kubernetes-sigs/external-dns#5192)

#### 🐛 Bug fixes

-   fix(aws): typo on route53 IAM by [@&#8203;tico24](https://github.com/tico24) in [#&#8203;5197](kubernetes-sigs/external-dns#5197)
-   fix(chart): add missing types for empty values by [@&#8203;t3mi](https://github.com/t3mi) in [#&#8203;5207](kubernetes-sigs/external-dns#5207)
-   fix(cloudflare): custom hostnames edge-cases causing duplicates by [@&#8203;mrozentsvayg](https://github.com/mrozentsvayg) in [#&#8203;5183](kubernetes-sigs/external-dns#5183)
-   fix(cloudflare): regional hostnames by [@&#8203;vflaux](https://github.com/vflaux) in [#&#8203;5175](kubernetes-sigs/external-dns#5175)
-   fix(Gateway API): ensure generation match by [@&#8203;davidwin93](https://github.com/davidwin93) in [#&#8203;5241](kubernetes-sigs/external-dns#5241)
-   fix(gateway-api): ensure to use only latest generation with HTTPRoutes by [@&#8203;kashalls](https://github.com/kashalls) in [#&#8203;5349](kubernetes-sigs/external-dns#5349)
-   fix(helm): added missing schema values by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5228](kubernetes-sigs/external-dns#5228)
-   fix(helm): update helm schema by [@&#8203;semnell](https://github.com/semnell) in [#&#8203;5297](kubernetes-sigs/external-dns#5297)
-   fix(log testing): re-use logger library testing functionality by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5368](kubernetes-sigs/external-dns#5368)
-   fix(node): logger test fixed by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5232](kubernetes-sigs/external-dns#5232)
-   fix(ovh): handling capitalized DNS records + prevent panic by [@&#8203;rbeuque74](https://github.com/rbeuque74) in [#&#8203;5390](kubernetes-sigs/external-dns#5390)
-   fix(webhook): api json object plan.Changes case by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5355](kubernetes-sigs/external-dns#5355)
-   fix(zonefinder): handle underscores in dns records by [@&#8203;arthlr](https://github.com/arthlr) in [#&#8203;5281](kubernetes-sigs/external-dns#5281)

#### 📝 Documentation

-   docs(contributing): add conventional commits by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5333](kubernetes-sigs/external-dns#5333)
-   docs(proposal): externaldns api graduation to beta by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5079](kubernetes-sigs/external-dns#5079)
-   docs(rfc2136): fix env variable in the guideline by [@&#8203;riupie](https://github.com/riupie) in [#&#8203;5352](kubernetes-sigs/external-dns#5352)
-   docs(tutorials): add IONOS Cloud  setup tutorial for ExternalDNS by [@&#8203;smilutinovic-ionos](https://github.com/smilutinovic-ionos) in [#&#8203;5364](kubernetes-sigs/external-dns#5364)
-   docs(typo): grcp → grpc by [@&#8203;octo](https://github.com/octo) in [#&#8203;5231](kubernetes-sigs/external-dns#5231)
-   docs: update link to Anexia webhook provider by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5244](kubernetes-sigs/external-dns#5244)
-   docs: update rfc2136 by [@&#8203;BasJ93](https://github.com/BasJ93) in [#&#8203;5325](kubernetes-sigs/external-dns#5325)

#### 📦 Others

-   Add Yandex Cloud Webhook by [@&#8203;ismailbaskin](https://github.com/ismailbaskin) in [#&#8203;5190](kubernetes-sigs/external-dns#5190)
-   chore: add se for nlb, alb in thailand region by [@&#8203;xshot9011](https://github.com/xshot9011) in [#&#8203;5200](kubernetes-sigs/external-dns#5200)
-   chore: fix typo on txtOwnerId comment/description by [@&#8203;lanandra](https://github.com/lanandra) in [#&#8203;5351](kubernetes-sigs/external-dns#5351)
-   chore(ci): fix random data race failure on source/node test by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5268](kubernetes-sigs/external-dns#5268)
-   chore(ci): improve release script by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5394](kubernetes-sigs/external-dns#5394)
-   chore(ci): update linter to v2.0.2 by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5246](kubernetes-sigs/external-dns#5246)
-   chore(code-cleanup): move logic away from main.go add tests by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5222](kubernetes-sigs/external-dns#5222)
-   chore(code): improve some tests + re-order sources flags CLI by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5288](kubernetes-sigs/external-dns#5288)
-   chore(code-quality): added lint checks by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5318](kubernetes-sigs/external-dns#5318)
-   chore(code-quality): providers linter warnings fixes by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5320](kubernetes-sigs/external-dns#5320)
-   chore(code-quality): refactoring and linter fixes by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5374](kubernetes-sigs/external-dns#5374)
-   chore(code-quality): webhook increase code coverage by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5337](kubernetes-sigs/external-dns#5337)
-   chore(crd): use conventional paths and update controller-gen to v0.17.2 by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5287](kubernetes-sigs/external-dns#5287)
-   chore(dependencies): update toools versions by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5252](kubernetes-sigs/external-dns#5252)
-   chore(deps): build with go 1.24.2 by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5306](kubernetes-sigs/external-dns#5306)
-   chore(deps): bump renovatebot/github-action from 41.0.14 to 41.0.16 in the dev-dependencies group by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5188](kubernetes-sigs/external-dns#5188)
-   chore(deps): bump renovatebot/github-action from 41.0.16 to 41.0.17 in the dev-dependencies group by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5210](kubernetes-sigs/external-dns#5210)
-   chore(deps): bump the dev-dependencies group across 1 directory with 14 updates by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5346](kubernetes-sigs/external-dns#5346)
-   chore(deps): bump the dev-dependencies group across 1 directory with 14 updates by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5382](kubernetes-sigs/external-dns#5382)
-   chore(deps): bump the dev-dependencies group across 1 directory with 17 updates by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5238](kubernetes-sigs/external-dns#5238)
-   chore(deps): bump the dev-dependencies group across 1 directory with 19 updates by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5262](kubernetes-sigs/external-dns#5262)
-   chore(deps): bump the dev-dependencies group across 1 directory with 20 updates by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5211](kubernetes-sigs/external-dns#5211)
-   chore(deps): bump the dev-dependencies group across 1 directory with 21 updates by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5313](kubernetes-sigs/external-dns#5313)
-   chore(deps): bump the dev-dependencies group across 1 directory with 2 updates by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5247](kubernetes-sigs/external-dns#5247)
-   chore(deps): bump the dev-dependencies group across 1 directory with 2 updates by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5301](kubernetes-sigs/external-dns#5301)
-   chore(deps): bump the dev-dependencies group across 1 directory with 2 updates by [@&#8203;app/dependabot](https://github.com/app/dependabot) in [#&#8203;5323](kubernetes-sigs/external-dns#5323)
-   chore(deps): code cleanup, pkg/errors is archived by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5335](kubernetes-sigs/external-dns#5335)
-   chore(deps): switch to goccy yaml by [@&#8203;Raffo](https://github.com/Raffo) in [#&#8203;5292](kubernetes-sigs/external-dns#5292)
-   chore(deps): update linter to v2.1.x by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5366](kubernetes-sigs/external-dns#5366)
-   chore(fqdn-template): fqdn templating move to specific folder and update documentation by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5354](kubernetes-sigs/external-dns#5354)
-   chore(github): add a release template by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5324](kubernetes-sigs/external-dns#5324)
-   chore(helm): add validation for prefix and suffix and capture regression by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5250](kubernetes-sigs/external-dns#5250)
-   chore(openstack designate)!: remove in-tree provider by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5126](kubernetes-sigs/external-dns#5126)
-   chore(providers): rename custom TTL constants to defaultTTL by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5312](kubernetes-sigs/external-dns#5312)
-   chore: Release Helm chart v1.16.1 by [@&#8203;stevehipwell](https://github.com/stevehipwell) in [#&#8203;5270](kubernetes-sigs/external-dns#5270)
-   chore(release): updates kustomize & docs with v0.16.1 by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5184](kubernetes-sigs/external-dns#5184)
-   chore(source): code cleanup by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5304](kubernetes-sigs/external-dns#5304)
-   chore(webhook): bump cenkalti/backoff version by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5342](kubernetes-sigs/external-dns#5342)
-   test: add tests for cloudflare provider by [@&#8203;natitomattis](https://github.com/natitomattis) in [#&#8203;5248](kubernetes-sigs/external-dns#5248)
-   test(log): execute on multiple platforms by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5370](kubernetes-sigs/external-dns#5370)
-   test(log): fix random race detection by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5273](kubernetes-sigs/external-dns#5273)
-   test(source): cover unhappy paths by [@&#8203;linoleparquet](https://github.com/linoleparquet) in [#&#8203;5369](kubernetes-sigs/external-dns#5369)
-   test(source): fix data race on node_test by [@&#8203;mloiseleur](https://github.com/mloiseleur) in [#&#8203;5334](kubernetes-sigs/external-dns#5334)
-   test(source/pod): improve code coverage by [@&#8203;ivankatliarchuk](https://github.com/ivankatliarchuk) in [#&#8203;5378](kubernetes-sigs/external-dns#5378)
-   test(tlsconfig): add unit tests by [@&#8203;linoleparquet](https://github.com/linoleparquet) in [#&#8203;5381](kubernetes-sigs/external-dns#5381)
-   test(zone_filter): improve coverage from 66.7% to 100% by [@&#8203;upsaurav12](https://github.com/upsaurav12) in [#&#8203;5388](kubernetes-sigs/external-dns#5388)

#### 📦 Docker Image

    docker pull registry.k8s.io/external-dns/external-dns:v0.17.0

#### New Contributors

-   [@&#8203;ismailbaskin](https://github.com/ismailbaskin) made their first contribution in kubernetes-sigs/external-dns#5190
-   [@&#8203;lexisother](https://github.com/lexisother) made their first contribution in kubernetes-sigs/external-dns#5147
-   [@&#8203;tico24](https://github.com/tico24) made their first contribution in kubernetes-sigs/external-dns#5197
-   [@&#8203;t3mi](https://github.com/t3mi) made their first contribution in kubernetes-sigs/external-dns#5207
-   [@&#8203;octo](https://github.com/octo) made their first contribution in kubernetes-sigs/external-dns#5231
-   [@&#8203;xshot9011](https://github.com/xshot9011) made their first contribution in kubernetes-sigs/external-dns#5200
-   [@&#8203;tJouve](https://github.com/tJouve) made their first contribution in kubernetes-sigs/external-dns#5226
-   [@&#8203;Hayajiro](https://github.com/Hayajiro) made their first contribution in kubernetes-sigs/external-dns#5045
-   [@&#8203;davidwin93](https://github.com/davidwin93) made their first contribution in kubernetes-sigs/external-dns#5241
-   [@&#8203;vflaux](https://github.com/vflaux) made their first contribution in kubernetes-sigs/external-dns#5175
-   [@&#8203;arthlr](https://github.com/arthlr) made their first contribution in kubernetes-sigs/external-dns#5281
-   [@&#8203;semnell](https://github.com/semnell) made their first contribution in kubernetes-sigs/external-dns#5297
-   [@&#8203;BasJ93](https://github.com/BasJ93) made their first contribution in kubernetes-sigs/external-dns#5325
-   [@&#8203;natitomattis](https://github.com/natitomattis) made their first contribution in kubernetes-sigs/external-dns#5248
-   [@&#8203;riupie](https://github.com/riupie) made their first contribution in kubernetes-sigs/external-dns#5352
-   [@&#8203;lanandra](https://github.com/lanandra) made their first contribution in kubernetes-sigs/external-dns#5351
-   [@&#8203;smilutinovic-ionos](https://github.com/smilutinovic-ionos) made their first contribution in kubernetes-sigs/external-dns#5364
-   [@&#8203;linoleparquet](https://github.com/linoleparquet) made their first contribution in kubernetes-sigs/external-dns#5369
-   [@&#8203;kashalls](https://github.com/kashalls) made their first contribution in kubernetes-sigs/external-dns#5349
-   [@&#8203;matkam](https://github.com/matkam) made their first contribution in kubernetes-sigs/external-dns#3949
-   [@&#8203;upsaurav12](https://github.com/upsaurav12) made their first contribution in kubernetes-sigs/external-dns#5388

**Full Changelog**: kubernetes-sigs/external-dns@v0.16.1...v0.17.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4xNSIsInVwZGF0ZWRJblZlciI6IjQwLjExLjE1IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXAvbWlub3IiXX0=-->

Co-authored-by: JesusMtnez <[email protected]>
Reviewed-on: https://codeberg.org/JesusMtnez/homelab/pulls/712
Co-authored-by: JesusMtnez-bot <[email protected]>
Co-committed-by: JesusMtnez-bot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. tide/merge-method-squash Denotes a PR that should be squashed by tide when it merges.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants