Skip to content
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

fix: duplicated endpoint per hosted zone #4296

Conversation

leonardocaylent
Copy link
Contributor

@leonardocaylent leonardocaylent commented Mar 3, 2024

Description

Looking into Issue #4241 we found that Delete was trying to generate 2 calls with 6 records per hosted zone instead of 2 calls with 3 records each. Taking a deeper look, changes.Delete at plan.go was handling duplicates at 0.13.6 but on the latest version it's not filtering them anymore.
Removing the duplicate endpoints in plan.go solves this issue for all providers

Short explain of new behavior
Added a new function RemoveDuplicates to detect duplicated endpoints when needed
Added Unit Tests for the function
Removed duplicated records on plan.go for changes.Delete

Details
Create behavior:
Without the fix:

level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1]"
level=debug msg="Adding cname-testdeploy.internal.sandbox.yourdomain.com. to zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2]"
level=debug msg="Adding cname-testdeploy.internal.sandbox.yourdomain.com. to zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1]"
level=info msg="Desired change: CREATE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=info msg="Desired change: CREATE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ2]"
level=info msg="Desired change: CREATE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=info msg="3 record(s) in zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2] were successfully updated"
level=info msg="Desired change: CREATE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"
level=info msg="Desired change: CREATE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ1]"
level=info msg="Desired change: CREATE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"
level=info msg="3 record(s) in zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1] were successfully updated"

With the fix:

level=info msg="Desired change: CREATE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=info msg="Desired change: CREATE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ2]"
level=info msg="Desired change: CREATE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=info msg="3 record(s) in zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2] were successfully updated"
level=info msg="Desired change: CREATE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"
level=info msg="Desired change: CREATE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ1]"
level=info msg="Desired change: CREATE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"

Delete behavior:
Without the fix:

level=debug msg="Considering zone: /hostedzone/HZ1 (domain: sandbox.yourdomain.com.)"
level=debug msg="Considering zone: /hostedzone/HZ2 (domain: internal.sandbox.yourdomain.com.)"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1]"
level=debug msg="Adding cname-testdeploy.internal.sandbox.yourdomain.com. to zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2]"
level=debug msg="Adding cname-testdeploy.internal.sandbox.yourdomain.com. to zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2]"
level=debug msg="Adding testdeploy.internal.sandbox.yourdomain.com. to zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1]"
level=debug msg="Adding cname-testdeploy.internal.sandbox.yourdomain.com. to zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2]"
level=debug msg="Adding cname-testdeploy.internal.sandbox.yourdomain.com. to zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1]"
level=info msg="Desired change: DELETE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=info msg="Desired change: DELETE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ2]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ2]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=error msg="Failure in zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2] when submitting change batch: InvalidChangeBatch: [The request contains an invalid set of changes for a resource record set 'TXT cname-testdeploy.internal.sandbox.yourdomain.com.', The request contains an invalid set of changes for a resource record set 'A testdeploy.internal.sandbox.yourdomain.com.', The request contains an invalid set of changes for a resource record set 'TXT testdeploy.internal.sandbox.yourdomain.com.']\n\tstatus code: 400, request id: X"
level=info msg="Desired change: DELETE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"
level=info msg="Desired change: DELETE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ1]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ1]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"
level=error msg="Failure in zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1] when submitting change batch: InvalidChangeBatch: [The request contains an invalid set of changes for a resource record set 'TXT cname-testdeploy.internal.sandbox.yourdomain.com.', The request contains an invalid set of changes for a resource record set 'A testdeploy.internal.sandbox.yourdomain.com.', The request contains an invalid set of changes for a resource record set 'TXT testdeploy.internal.sandbox.yourdomain.com.']\n\tstatus code: 400, request id: X"
level=error msg="Failed to do run once: soft error\nfailed to submit all changes for the following zones: [/hostedzone/HZ2 /hostedzone/HZ1]"

With the fix:

level=debug msg="Considering zone: /hostedzone/HZ2 (domain: internal.sandbox.yourdomain.com.)"
level=debug msg="Considering zone: /hostedzone/HZ1 (domain: sandbox.yourdomain.com.)"
level=info msg="Desired change: DELETE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ1]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ1]"
level=info msg="3 record(s) in zone sandbox.yourdomain.com. [Id: /hostedzone/HZ1] were successfully updated"
level=info msg="Desired change: DELETE cname-testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com A [Id: /hostedzone/HZ2]"
level=info msg="Desired change: DELETE testdeploy.internal.sandbox.yourdomain.com TXT [Id: /hostedzone/HZ2]"
level=info msg="3 record(s) in zone internal.sandbox.yourdomain.com. [Id: /hostedzone/HZ2] were successfully updated"

Fixes #4241

Checklist

  • Unit tests updated
  • End user documentation updated

@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 3, 2024
Copy link

linux-foundation-easycla bot commented Mar 3, 2024

CLA Signed

The committers listed above are authorized under a signed CLA.

@k8s-ci-robot k8s-ci-robot added the cncf-cla: no Indicates the PR's author has not signed the CNCF CLA. label Mar 3, 2024
@k8s-ci-robot
Copy link
Contributor

Welcome @leonardocaylent!

It looks like this is your first PR to kubernetes-sigs/external-dns 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-sigs/external-dns has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot k8s-ci-robot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Mar 3, 2024
@k8s-ci-robot
Copy link
Contributor

Hi @leonardocaylent. Thanks for your PR.

I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot added size/S Denotes a PR that changes 10-29 lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. and removed cncf-cla: no Indicates the PR's author has not signed the CNCF CLA. labels Mar 3, 2024
@leonardocaylent leonardocaylent changed the title Group By Endpoint names per Hosted Zone on AWS Group By EndpointName_RecordType per Hosted Zone on AWS Mar 3, 2024
@leonardocaylent leonardocaylent marked this pull request as ready for review March 3, 2024 20:39
@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 3, 2024
@mloiseleur
Copy link
Contributor

/ok-to-test

@k8s-ci-robot k8s-ci-robot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Mar 4, 2024
@mloiseleur
Copy link
Contributor

/retitle fix: duplicated endpoint per hosted zone

@k8s-ci-robot k8s-ci-robot changed the title Group By EndpointName_RecordType per Hosted Zone on AWS fix: duplicated endpoint per hosted zone Mar 4, 2024
@mloiseleur
Copy link
Contributor

@leonardocaylent Do you think you can add a test on this ?

In order to keep issues fixed for good, we accept PR only when there is a test with it.

@leonardocaylent
Copy link
Contributor Author

leonardocaylent commented Mar 4, 2024

@leonardocaylent Do you think you can add a test on this ?

In order to keep issues fixed for good, we accept PR only when there is a test with it.

@mloiseleur Yes, I can. I also need to check for TestAWSRecords and TestAWSApplyChanges that are failing.

Copy link
Contributor

@yurrriq yurrriq left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can optimize this a bit by using the empty struct.

log.Debugf("Key Output: %s", key)
// Initialize the map for the current zone if it doesn't exist
if visitedHostnames[aws.StringValue(z.Id)] == nil {
visitedHostnames[aws.StringValue(z.Id)] = make(map[string]bool)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
visitedHostnames[aws.StringValue(z.Id)] = make(map[string]bool)
visitedHostnames[aws.StringValue(z.Id)] = map[string]struct{}{}

visitedHostnames[aws.StringValue(z.Id)] = make(map[string]bool)
}

if visitedHostnames[aws.StringValue(z.Id)][key] {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if visitedHostnames[aws.StringValue(z.Id)][key] {
if _, ok := visitedHostnames[aws.StringValue(z.Id)][key]; ok {

@@ -1008,7 +1021,8 @@ func changesByZone(zones map[string]*route53.HostedZone, changeSet Route53Change
}
}
changes[aws.StringValue(z.Id)] = append(changes[aws.StringValue(z.Id)], c)
log.Debugf("Adding %s to zone %s [Id: %s]", hostname, aws.StringValue(z.Name), aws.StringValue(z.Id))
visitedHostnames[aws.StringValue(z.Id)][key] = true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
visitedHostnames[aws.StringValue(z.Id)][key] = true
visitedHostnames[aws.StringValue(z.Id)][key] = struct{}{}

@k8s-ci-robot
Copy link
Contributor

@yurrriq: changing LGTM is restricted to collaborators

In response to this:

We can optimize this a bit by using the empty struct.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot removed the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Mar 5, 2024
@leonardocaylent
Copy link
Contributor Author

@yurrriq The root cause of the issue is that this function lost the ability to remove the duplicate endpoints on the current records at 0.14.0
I tried adding the RemoveDuplicates function in here but does break some unit tests:

--- FAIL: TestPlan (0.11s)
    --- FAIL: TestPlan/TestSyncSecondRound (0.00s)
        plan_test.go:951: expected ["foo 0 IN CNAME  v2 []"] to match []
    --- FAIL: TestPlan/TestSyncSecondRoundMigration (0.00s)
        plan_test.go:951: expected [] to match ["foo 0 IN CNAME  v1 []"]

@szuecs
Copy link
Contributor

szuecs commented Apr 9, 2024

Please follow up with #4296 (comment). Raffo said what he wants to see and if you want to get this done, then please follow his guideline.
We are happy to review the mentioned PR that you can link back to this one to make sure there is more priority from our side.

@leonardocaylent
Copy link
Contributor Author

@szuecs I've read @Raffo's comments. We were working with @yurrriq and @cronik and we found the root cause. I'll put here a brief summary:
1)About the unit tests, they are a little missleading (having a same DNS name for an A record and a CNAME at the same time) but for the test purposes @cronik said the intention was to test the behavior, not the validation of being able to create both records. This issue was created because is related to this but we think it's not a priority or needs to be addresed on the #4241
2)We found that duplicated endpoints were always at the records variable on controller.go, the real root cause of the issue was that on this Pull Request multi-cluster-fix the plans started to be different:

		Behavior on 0.14.0 on Deletes
		------------------------------------------------------------------------------------------------------
		DNSName          | Current record                                      | Desired Records (Candidate) |
		------------------------------------------------------------------------------------------------------
		dnsname.zone.com |[dnsname.zone.com IN A]dnsname.zone.com IN A (dup ep)| []                          |
		------------------------------------------------------------------------------------------------------
	
		Behavior on 0.13.6 on Deletes
		------------------------------------------------------------------------------------------------------
		DNSName          | Current record                                      | Desired Records (Candidate) |
		------------------------------------------------------------------------------------------------------
		dnsname.zone.com | [dnsname.zone.com IN CNAME ]                        | []                          |
		------------------------------------------------------------------------------------------------------

3)I didn't see any new comments between @Raffo's comment and the new finding so I think that changes the solution. The things are on the current PR but the last commit (d9b7439) it's a Draft and it's really complex to explain on a comment. I'm still working on the solution because we find the real root cause only 5 days ago, which was merged into main 7 months ago. I'd really appreciate if some of the contributors with more experience have time to discuss in a huddle about this.
If that's not possible I'll post on the original-issue to ask another review to this pull request, if that's not the way to contribute or I'm failing with some of the steps please reach out to me and I'll stop doing that. I'm new here and I just want contribute my grain of sand to k8s.

@leonardocaylent
Copy link
Contributor Author

@Raffo We could confirm that
1)The behavior on the new version is different:
Behavior on 0.13.6 on Deletes:

DNS Name : dnsname.zone.com
Current record: 
dnsname.zone.com 300 IN CNAME  k8s-ingre-1234abcd.us-west-2.elb.amazonaws.com [{aws/evaluate-target-health true} {alias true}] 
Desired Records (Candidate): []

Behavior on 0.14.0 on Deletes:

DNS Name : dnsname.zone.com
Current record: 
dnsname.zone.com 300 IN A  k8s-ingre-1234abcd.us-west-2.elb.amazonaws.com [{aws/evaluate-target-health true} {alias true}] 
dnsname.zone.com 300 IN A  k8s-ingre-1234abcd.us-west-2.elb.amazonaws.com [{aws/evaluate-target-health true} {alias true}] 
Desired Records (Candidate): []

2)There were 2 major changes on plan.go, the Record Type included in the plan, and the ability to remove duplicated endpoints on changes.Delete
3)The variable records on controller.go is working fine, it contains duplicated endpoints at that time because it's reflecting the current state of the DNS records on the provider, to have a low impact the change needs to be applied only on plan.go
4)This could be considered a fix to have the previous behavior prior to #3747 , but after having this in place, we could work on a feature for AWS "Creating the dns records for endpoints only in the Hosted Zone that has the best fit". A good starting point would be on the suitableZones function, but I guess we should have some discussion about if having the records in only one hosted zone needs some type of regression. The ideal change would be if this new feature makes changes.Delete to detect the unnecessary records in the duplicated/triplicated hosted zones.

From my point of view, this PR is ready to review. Special thanks to all the persons that helped finding the root cause of this issue.

Copy link
Contributor

@yurrriq yurrriq left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, I agree that any changes to the AWS provider to choose the most suitable zone are best addressed in a followup issue and PR

@k8s-ci-robot
Copy link
Contributor

@yurrriq: changing LGTM is restricted to collaborators

In response to this:

lgtm, I agree that any changes to the AWS provider to choose the most suitable zone are best addressed in a followup issue and PR

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@Raffo
Copy link
Contributor

Raffo commented May 3, 2024

@leonardocaylent thank you for the update and the work with the rest of the community to figure out what the best path forward is. I followed the last updates and the change proposed seems reasonable to me. @szuecs @mloiseleur is the change fine for you as well? I feel that you followed this more closely, so I want to wait for your okay for this to proceed.

@mloiseleur
Copy link
Contributor

This change is working and lgtm. Even if it's an edge case, I understand it was working before.
I (really) hope that we will be able to fix the source and remove this code.

@Raffo
Copy link
Contributor

Raffo commented May 6, 2024

I (really) hope that we will be able to fix the source and remove this code.

@mloiseleur yes, same. Do we want to get this in and work on the more permanent fix then? Does this require a release? Who's working on the second part? Sorry tons of questions 😅

@leonardocaylent
Copy link
Contributor Author

I (really) hope that we will be able to fix the source and remove this code.

@mloiseleur yes, same. Do we want to get this in and work on the more permanent fix then? Does this require a release? Who's working on the second part? Sorry tons of questions 😅

@Raffo I can work on the second part with help of someone does has experience and knowledge on the aws provider. The final fix will require the same amount of testing and debugging than this one (quite a lot)

@leonardocaylent
Copy link
Contributor Author

@Raffo @mloiseleur I agree that we want to get this merged in since the functionality of the plans changed and this will require a release. I also agree that we will be able to fix the source and remove this code entirely when we only generate one of each record in the correct hosted zone.

@Raffo
Copy link
Contributor

Raffo commented May 9, 2024

Ok so the plan is:

  1. I take a final review at this.
  2. If all is good, I merge.
  3. I kick off the release process for v0.14.2.
  4. We start working on the better fix and proceed accordingly.

Does this sound correct?

@leonardocaylent
Copy link
Contributor Author

Ok so the plan is:

  1. I take a final review at this.
  2. If all is good, I merge.
  3. I kick off the release process for v0.14.2.
  4. We start working on the better fix and proceed accordingly.

Does this sound correct?

That sounds perfect, I created this feature ticket to start the discussion about how to proceed with that. I explained with details the current behavior.

@Raffo
Copy link
Contributor

Raffo commented May 10, 2024

/lgtm
/approve

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label May 10, 2024
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: Raffo, yurrriq

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

The pull request process is described 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 added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label May 10, 2024
@k8s-ci-robot k8s-ci-robot merged commit 03a2c66 into kubernetes-sigs:master May 10, 2024
13 checks passed
truecharts-admin referenced this pull request in truecharts/public May 17, 2024
…rnal-dns to v0.14.2@3fcad62 by renovate (#22163)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[registry.k8s.io/external-dns/external-dns](https://togithub.com/kubernetes-sigs/external-dns)
| patch | `v0.14.1` -> `v0.14.2` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

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

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

[Compare
Source](https://togithub.com/kubernetes-sigs/external-dns/compare/v0.14.1...v0.14.2)

#### What's Changed

- kustomize-v0.14.1 by [@&#8203;Raffo](https://togithub.com/Raffo) in
[https://github.com/kubernetes-sigs/external-dns/pull/4331](https://togithub.com/kubernetes-sigs/external-dns/pull/4331)
- replace all links in tutorials for v0.14.1 by
[@&#8203;Raffo](https://togithub.com/Raffo) in
[https://github.com/kubernetes-sigs/external-dns/pull/4332](https://togithub.com/kubernetes-sigs/external-dns/pull/4332)
- chore: upgrade ExternalDNS to go 1.22 by
[@&#8203;mloiseleur](https://togithub.com/mloiseleur) in
[https://github.com/kubernetes-sigs/external-dns/pull/4318](https://togithub.com/kubernetes-sigs/external-dns/pull/4318)
- build(deps): bump the dev-dependencies group with 13 updates by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4329](https://togithub.com/kubernetes-sigs/external-dns/pull/4329)
- build(deps): bump the dev-dependencies group with 5 updates by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4334](https://togithub.com/kubernetes-sigs/external-dns/pull/4334)
- build(deps): bump the dev-dependencies group with 9 updates by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4349](https://togithub.com/kubernetes-sigs/external-dns/pull/4349)
- build(deps): bump the dev-dependencies group with 1 update by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4341](https://togithub.com/kubernetes-sigs/external-dns/pull/4341)
- Add `dnsendpoint` CRD to Helm chart by
[@&#8203;onedr0p](https://togithub.com/onedr0p) in
[https://github.com/kubernetes-sigs/external-dns/pull/4322](https://togithub.com/kubernetes-sigs/external-dns/pull/4322)
- build(deps): bump the dev-dependencies group with 13 updates by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4361](https://togithub.com/kubernetes-sigs/external-dns/pull/4361)
- build(deps): bump GrantBirki/json-yaml-validate from 2.6.1 to 2.6.2 in
the dev-dependencies group by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4364](https://togithub.com/kubernetes-sigs/external-dns/pull/4364)
- chore(chart): Released chart for v0.14.1 by
[@&#8203;stevehipwell](https://togithub.com/stevehipwell) in
[https://github.com/kubernetes-sigs/external-dns/pull/4357](https://togithub.com/kubernetes-sigs/external-dns/pull/4357)
- chore: alphabetical order on providers by
[@&#8203;mloiseleur](https://togithub.com/mloiseleur) in
[https://github.com/kubernetes-sigs/external-dns/pull/4350](https://togithub.com/kubernetes-sigs/external-dns/pull/4350)
- doc: advertise current plan on providers by
[@&#8203;mloiseleur](https://togithub.com/mloiseleur) in
[https://github.com/kubernetes-sigs/external-dns/pull/4365](https://togithub.com/kubernetes-sigs/external-dns/pull/4365)
- Fix(ipv6): support ipv6 shortener and expander equal by
[@&#8203;dongjiang1989](https://togithub.com/dongjiang1989) in
[https://github.com/kubernetes-sigs/external-dns/pull/4351](https://togithub.com/kubernetes-sigs/external-dns/pull/4351)
- feat(WebhookProvider): Let WebhookProvider return `SoftError` on
response status codes >= 500 by
[@&#8203;SimonKienzler](https://togithub.com/SimonKienzler) in
[https://github.com/kubernetes-sigs/external-dns/pull/4319](https://togithub.com/kubernetes-sigs/external-dns/pull/4319)
- Webhook provider: Use correct error gauge in `AdjustEndpoints()` func
by [@&#8203;SimonKienzler](https://togithub.com/SimonKienzler) in
[https://github.com/kubernetes-sigs/external-dns/pull/4374](https://togithub.com/kubernetes-sigs/external-dns/pull/4374)
- build(deps): bump the dev-dependencies group with 18 updates by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4381](https://togithub.com/kubernetes-sigs/external-dns/pull/4381)
- Add exclude domains value in Chart by
[@&#8203;bford-evs](https://togithub.com/bford-evs) in
[https://github.com/kubernetes-sigs/external-dns/pull/4380](https://togithub.com/kubernetes-sigs/external-dns/pull/4380)
- docs(aws): fix typo and upgrade cleanup flow by
[@&#8203;franzudev](https://togithub.com/franzudev) in
[https://github.com/kubernetes-sigs/external-dns/pull/4389](https://togithub.com/kubernetes-sigs/external-dns/pull/4389)
- docs(gke): detail how to configure workload identity by
[@&#8203;userbradley](https://togithub.com/userbradley) in
[https://github.com/kubernetes-sigs/external-dns/pull/4373](https://togithub.com/kubernetes-sigs/external-dns/pull/4373)
- chore(ci): fix failing test by
[@&#8203;mloiseleur](https://togithub.com/mloiseleur) in
[https://github.com/kubernetes-sigs/external-dns/pull/4397](https://togithub.com/kubernetes-sigs/external-dns/pull/4397)
- chore: Update controller-tools version to v0.14.0 by
[@&#8203;dongjiang1989](https://togithub.com/dongjiang1989) in
[https://github.com/kubernetes-sigs/external-dns/pull/4400](https://togithub.com/kubernetes-sigs/external-dns/pull/4400)
- chore(ci): update golangci-lint to v1.57.2 by
[@&#8203;dongjiang1989](https://togithub.com/dongjiang1989) in
[https://github.com/kubernetes-sigs/external-dns/pull/4406](https://togithub.com/kubernetes-sigs/external-dns/pull/4406)
- chore: upgrade ExternalDNS to go 1.22.2 by
[@&#8203;mloiseleur](https://togithub.com/mloiseleur) in
[https://github.com/kubernetes-sigs/external-dns/pull/4414](https://togithub.com/kubernetes-sigs/external-dns/pull/4414)
- build(deps): bump the dev-dependencies group across 1 directory with 4
updates by [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4412](https://togithub.com/kubernetes-sigs/external-dns/pull/4412)
- build(deps): bump the dev-dependencies group across 1 directory with
24 updates by [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4416](https://togithub.com/kubernetes-sigs/external-dns/pull/4416)
- custom Azure Active Directory Authority Host by
[@&#8203;Jeremy-Boyle](https://togithub.com/Jeremy-Boyle) in
[https://github.com/kubernetes-sigs/external-dns/pull/4210](https://togithub.com/kubernetes-sigs/external-dns/pull/4210)
- feat(DNSimple): User API tokens by
[@&#8203;IntegralProgrammer](https://togithub.com/IntegralProgrammer) in
[https://github.com/kubernetes-sigs/external-dns/pull/4274](https://togithub.com/kubernetes-sigs/external-dns/pull/4274)
- docs: annotation placement for azuredns tutorial by
[@&#8203;jonas-budde](https://togithub.com/jonas-budde) in
[https://github.com/kubernetes-sigs/external-dns/pull/4415](https://togithub.com/kubernetes-sigs/external-dns/pull/4415)
- feat(azure): add zone name filter for Azure Private DNS by
[@&#8203;khuedoan](https://togithub.com/khuedoan) in
[https://github.com/kubernetes-sigs/external-dns/pull/4346](https://togithub.com/kubernetes-sigs/external-dns/pull/4346)
- test: detect no change necessary with provider specific config by
[@&#8203;szuecs](https://togithub.com/szuecs) in
[https://github.com/kubernetes-sigs/external-dns/pull/4189](https://togithub.com/kubernetes-sigs/external-dns/pull/4189)
- docs: add setup example with helm chart on some providers by
[@&#8203;omerap12](https://togithub.com/omerap12) in
[https://github.com/kubernetes-sigs/external-dns/pull/4405](https://togithub.com/kubernetes-sigs/external-dns/pull/4405)
- test: controller run() and successfully shutdown by
[@&#8203;szuecs](https://togithub.com/szuecs) in
[https://github.com/kubernetes-sigs/external-dns/pull/3639](https://togithub.com/kubernetes-sigs/external-dns/pull/3639)
- fix syntax on cloudflare externalDNS by
[@&#8203;ilyesAj](https://togithub.com/ilyesAj) in
[https://github.com/kubernetes-sigs/external-dns/pull/4436](https://togithub.com/kubernetes-sigs/external-dns/pull/4436)
- build(deps): bump the dev-dependencies group across 1 directory with
11 updates by [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4440](https://togithub.com/kubernetes-sigs/external-dns/pull/4440)
- chore(chart): Adding extra containers by
[@&#8203;omerap12](https://togithub.com/omerap12) in
[https://github.com/kubernetes-sigs/external-dns/pull/4432](https://togithub.com/kubernetes-sigs/external-dns/pull/4432)
- aws: add ca-west-1 region by
[@&#8203;jeremy-albuixech](https://togithub.com/jeremy-albuixech) in
[https://github.com/kubernetes-sigs/external-dns/pull/4444](https://togithub.com/kubernetes-sigs/external-dns/pull/4444)
- fix: duplicated endpoint per hosted zone by
[@&#8203;leonardocaylent](https://togithub.com/leonardocaylent) in
[https://github.com/kubernetes-sigs/external-dns/pull/4296](https://togithub.com/kubernetes-sigs/external-dns/pull/4296)
- build(deps): bump actions/checkout from 4.1.4 to 4.1.5 in the
dev-dependencies group by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4438](https://togithub.com/kubernetes-sigs/external-dns/pull/4438)
- Add IPv6 AAAA record support to PiHole provider by
[@&#8203;PseudoResonance](https://togithub.com/PseudoResonance) in
[https://github.com/kubernetes-sigs/external-dns/pull/4324](https://togithub.com/kubernetes-sigs/external-dns/pull/4324)
- fix: soft error on cloudflare rate limits by
[@&#8203;ebachle](https://togithub.com/ebachle) in
[https://github.com/kubernetes-sigs/external-dns/pull/4437](https://togithub.com/kubernetes-sigs/external-dns/pull/4437)
- Update cloudflare.md by
[@&#8203;mfreeman451](https://togithub.com/mfreeman451) in
[https://github.com/kubernetes-sigs/external-dns/pull/4449](https://togithub.com/kubernetes-sigs/external-dns/pull/4449)
- Fix headings, whitespace by
[@&#8203;stefanlasiewski](https://togithub.com/stefanlasiewski) in
[https://github.com/kubernetes-sigs/external-dns/pull/4457](https://togithub.com/kubernetes-sigs/external-dns/pull/4457)
- docs: add reference to anexia webhook provider by
[@&#8203;ProbstenHias](https://togithub.com/ProbstenHias) in
[https://github.com/kubernetes-sigs/external-dns/pull/4441](https://togithub.com/kubernetes-sigs/external-dns/pull/4441)
- fix logline mentioning plugin api by
[@&#8203;Raffo](https://togithub.com/Raffo) in
[https://github.com/kubernetes-sigs/external-dns/pull/4459](https://togithub.com/kubernetes-sigs/external-dns/pull/4459)
- docs: lint gke docs + make terraform config more secure by
[@&#8203;DrFaust92](https://togithub.com/DrFaust92) in
[https://github.com/kubernetes-sigs/external-dns/pull/4456](https://togithub.com/kubernetes-sigs/external-dns/pull/4456)
- build(deps): bump action-stars/install-tool-from-github-release from
0.2.2 to 0.2.3 in the dev-dependencies group by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4464](https://togithub.com/kubernetes-sigs/external-dns/pull/4464)
- changed documentation to include more details description when using
API Tokens by [@&#8203;rhjensen79](https://togithub.com/rhjensen79) in
[https://github.com/kubernetes-sigs/external-dns/pull/4474](https://togithub.com/kubernetes-sigs/external-dns/pull/4474)
- fix: add clarification to endpoint unit tests by
[@&#8203;leonardocaylent](https://togithub.com/leonardocaylent) in
[https://github.com/kubernetes-sigs/external-dns/pull/4462](https://togithub.com/kubernetes-sigs/external-dns/pull/4462)
- build(deps): bump the dev-dependencies group across 1 directory with
19 updates by [@&#8203;mloiseleur](https://togithub.com/mloiseleur) in
[https://github.com/kubernetes-sigs/external-dns/pull/4476](https://togithub.com/kubernetes-sigs/external-dns/pull/4476)
- build(deps): bump the dev-dependencies group across 1 directory with
19 updates by [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/kubernetes-sigs/external-dns/pull/4475](https://togithub.com/kubernetes-sigs/external-dns/pull/4475)

#### New Contributors

- [@&#8203;onedr0p](https://togithub.com/onedr0p) made their first
contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4322](https://togithub.com/kubernetes-sigs/external-dns/pull/4322)
- [@&#8203;SimonKienzler](https://togithub.com/SimonKienzler) made their
first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4319](https://togithub.com/kubernetes-sigs/external-dns/pull/4319)
- [@&#8203;bford-evs](https://togithub.com/bford-evs) made their first
contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4380](https://togithub.com/kubernetes-sigs/external-dns/pull/4380)
- [@&#8203;franzudev](https://togithub.com/franzudev) made their first
contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4389](https://togithub.com/kubernetes-sigs/external-dns/pull/4389)
- [@&#8203;userbradley](https://togithub.com/userbradley) made their
first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4373](https://togithub.com/kubernetes-sigs/external-dns/pull/4373)
- [@&#8203;Jeremy-Boyle](https://togithub.com/Jeremy-Boyle) made their
first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4210](https://togithub.com/kubernetes-sigs/external-dns/pull/4210)
- [@&#8203;IntegralProgrammer](https://togithub.com/IntegralProgrammer)
made their first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4274](https://togithub.com/kubernetes-sigs/external-dns/pull/4274)
- [@&#8203;jonas-budde](https://togithub.com/jonas-budde) made their
first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4415](https://togithub.com/kubernetes-sigs/external-dns/pull/4415)
- [@&#8203;khuedoan](https://togithub.com/khuedoan) made their first
contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4346](https://togithub.com/kubernetes-sigs/external-dns/pull/4346)
- [@&#8203;omerap12](https://togithub.com/omerap12) made their first
contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4405](https://togithub.com/kubernetes-sigs/external-dns/pull/4405)
- [@&#8203;ilyesAj](https://togithub.com/ilyesAj) made their first
contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4436](https://togithub.com/kubernetes-sigs/external-dns/pull/4436)
- [@&#8203;jeremy-albuixech](https://togithub.com/jeremy-albuixech) made
their first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4444](https://togithub.com/kubernetes-sigs/external-dns/pull/4444)
- [@&#8203;leonardocaylent](https://togithub.com/leonardocaylent) made
their first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4296](https://togithub.com/kubernetes-sigs/external-dns/pull/4296)
- [@&#8203;PseudoResonance](https://togithub.com/PseudoResonance) made
their first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4324](https://togithub.com/kubernetes-sigs/external-dns/pull/4324)
- [@&#8203;ebachle](https://togithub.com/ebachle) made their first
contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4437](https://togithub.com/kubernetes-sigs/external-dns/pull/4437)
- [@&#8203;mfreeman451](https://togithub.com/mfreeman451) made their
first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4449](https://togithub.com/kubernetes-sigs/external-dns/pull/4449)
- [@&#8203;ProbstenHias](https://togithub.com/ProbstenHias) made their
first contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4441](https://togithub.com/kubernetes-sigs/external-dns/pull/4441)
- [@&#8203;DrFaust92](https://togithub.com/DrFaust92) made their first
contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4456](https://togithub.com/kubernetes-sigs/external-dns/pull/4456)
- [@&#8203;rhjensen79](https://togithub.com/rhjensen79) made their first
contribution in
[https://github.com/kubernetes-sigs/external-dns/pull/4474](https://togithub.com/kubernetes-sigs/external-dns/pull/4474)

**Full Changelog**:
kubernetes-sigs/external-dns@v0.14.1...v0.14.2

</details>

---

### Configuration

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

🚦 **Automerge**: Enabled.

♻ **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://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNjguMSIsInVwZGF0ZWRJblZlciI6IjM3LjM2OC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImF1dG9tZXJnZSIsInVwZGF0ZS9kb2NrZXIvZ2VuZXJhbC9ub24tbWFqb3IiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
7 participants