-
Notifications
You must be signed in to change notification settings - Fork 2.8k
feat(cloudflare): custom hostname and fix apex #5087
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
feat(cloudflare): custom hostname and fix apex #5087
Conversation
…hostname initial custom hostnames support
Add cloudflare-custom-hostnames support information
…is not set in the plan change; API requires admin role and fails on any change unnecessarily otherwise
…work" This reverts commit 438b0bc.
…is not set in the plan change; API requires admin role and fails on any change unnecessarily otherwise
…work" This reverts commit 438b0bc.
…dflare-custom-hostname
Hi @mrozentsvayg. 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 Once the patch is verified, the new status will be reflected by the 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-sigs/prow repository. |
There are a couple of changes not directly related to the cloudflare custom hostnames support:
|
@AndrewCharlesHay Would you please review this PR ? Wdyt of this approach ? |
/ok-to-test |
LGTM! |
provider/cloudflare/cloudflare.go
Outdated
} | ||
|
||
// customHostnamesWithPagination performs automatic pagination of results on requests to cloudflare.CustomHostnames | ||
func (p *CloudFlareProvider) customHostnamesWithPagination(ctx context.Context, zoneID string) ([]cloudflare.CustomHostname, error) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you rename this to listCustomHostnamesWithAutoPagination
to match the naming of listDNSRecordsWithAutoPagination
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@AndrewCharlesHay done!
it stemmed from the API / cloudflare-go library method name CustomHostnames
(https://github.com/cloudflare/cloudflare-go/blob/v0/custom_hostname.go#L222) and I agree that the internal helper function doesn't have to follow it.
The library naming inconsistency is only v0 specific, newer cloudflare SDK versions drastically addressed it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ohh that makes sense. Thanks for updating it!
…tion help function to improve the naming consistency
provider/cloudflare/cloudflare.go
Outdated
_, chAddErr := p.Client.CreateCustomHostname(ctx, zoneID, change.CustomHostname) | ||
if chAddErr != nil { | ||
failedChange = true | ||
log.WithFields(logFields).Errorf("failed to add custom hostname %v: %v", change.CustomHostname.Hostname, chAddErr) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you want to make the error statement something like Failed to add replacement custom hostname
so that it is different and more specific to the error message on line 405
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All possible scenarios:
- adding record (DNS along with the custom hostname) - "failed to create"
- deleting record - "failed to delete"
- updating record:
- custom hostname didn't not exist before - "failed to add"
- custom hostname exists and needs to be removed - "failed to remove"
- custom hostname needs to be changed (cloudflare doesn't allow to rename the existing hostname, recreate only):
- "failed to remove"
- "failed to add"
I couldn't come up with a clear message for the last 2, besides "failed to add/remove custom hostname on replace" or "failed to add custom hostname on update".
Do you think it would it be less confusing? I would be happy to rephrase it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think just adding the word replacement
would differentiate it from line 405 and let them know that it was in the process of replacing the record and is probably in a bad state now since it deleted the record and couldn't recreate the record.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated, hope that helps, thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good thanks!
## Setting cloudflare-region-key to configure regional services | ||
|
||
Using the `external-dns.alpha.kubernetes.io/cloudflare-region-key` annotation on your ingress, you can restrict which data centers can decrypt and serve HTTPS traffic. A list of available options can be seen [here](https://developers.cloudflare.com/data-localization/regional-services/get-started/). | ||
Currently, requires SuperAdmin or Admin role. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Most likely same requirement for Setting cloudflare-custom-hostname
, as I was not able to use non Admin role.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's documented in the new Setting cloudflare-custom-hostname section:
Requires Cloudflare for SaaS product and "SSL and Certificates" API permission.
source/source.go
Outdated
v, exists = annotations[CloudflareCustomHostnameKey] | ||
if exists { | ||
providerSpecificAnnotations = append(providerSpecificAnnotations, endpoint.ProviderSpecificProperty{ | ||
Name: CloudflareCustomHostnameKey, | ||
Value: v, | ||
}) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
v, exists = annotations[CloudflareCustomHostnameKey] | |
if exists { | |
providerSpecificAnnotations = append(providerSpecificAnnotations, endpoint.ProviderSpecificProperty{ | |
Name: CloudflareCustomHostnameKey, | |
Value: v, | |
}) | |
} | |
if v, exists := annotations[CloudflareCustomHostnameKey]; exists { | |
providerSpecificAnnotations = append(providerSpecificAnnotations, endpoint.ProviderSpecificProperty{ | |
Name: CloudflareCustomHostnameKey, | |
Value: v, | |
}) | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like unit test is missing as well for this code
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would you please elaborate on that?
All added functionality is based on the single external-dns.alpha.kubernetes.io/cloudflare-custom-hostname
annotation, the new test function contains all possible test cases (add, replace, remove) with it:
https://github.com/kubernetes-sigs/external-dns/pull/5087/files#diff-537daf60acab77454c1d11e74a7076d095600e9b67cbf3541782c569aa162dbfR1501
Please let me know if i'm missing something, thanks!
provider/cloudflare/cloudflare.go
Outdated
records[0].Type, | ||
endpoint.TTL(records[0].TTL), | ||
targets...) | ||
ep.WithProviderSpecific(source.CloudflareProxiedKey, strconv.FormatBool(*records[0].Proxied)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to ensure that records[0].Proxied
is not nil before dereferencing it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could be something like that
proxied := false
if records[0].Proxied != nil {
proxied = *records[0].Proxied
}
ep.WithProviderSpecific(source.CloudflareProxiedKey, strconv.FormatBool(proxied))
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
added
(applicable to the existing code as well)
provider/cloudflare/cloudflare.go
Outdated
if _, ok := customOriginServers[records[0].Name]; ok { | ||
ep.WithProviderSpecific(source.CloudflareCustomHostnameKey, customOriginServers[records[0].Name]) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if _, ok := customOriginServers[records[0].Name]; ok { | |
ep.WithProviderSpecific(source.CloudflareCustomHostnameKey, customOriginServers[records[0].Name]) | |
} | |
if customHostname, ok := customOriginServers[records[0].Name]; ok { | |
ep.WithProviderSpecific(source.CloudflareCustomHostnameKey, customHostname) | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
my bad, thanks
not even sure why i committed it like that
targets...). | ||
WithProviderSpecific(source.CloudflareProxiedKey, strconv.FormatBool(*records[0].Proxied)), | ||
) | ||
ep := endpoint.NewEndpointWithTTL( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it is possible for records[0]
to cause an out-of-index exception if the records slice is empty.
we most likely do need
if len(records) == 0 {
return endpoints
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
added
(applicable to the existing code as well)
ep.WithProviderSpecific(source.CloudflareCustomHostnameKey, customOriginServers[records[0].Name]) | ||
} | ||
|
||
endpoints = append(endpoints, ep) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
added
(applicable to the existing code as well)
provider/cloudflare/cloudflare.go
Outdated
return "" | ||
} | ||
|
||
func groupByNameAndType(records []cloudflare.DNSRecord) []*endpoint.Endpoint { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this function only used in tests? If YES, could we move it to cloudflare_test.go?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in this case we just do not need the original version.
renaming groupByNameAndTypeWithCh
to groupByNameAndTypeWithCustomHostnames
and using it directly from the single cloudflare_test.go ref
Value: v, | ||
}) | ||
} | ||
if v, exists := annotations[CloudflareCustomHostnameKey]; exists { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#5087 (comment)
This code is not coverade with testing. How I knew it? The source_test.go no changes
And I just did a double check with code coverage. I thinks this is the last thing that needs resolving.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right.
Currently source_test.go
is only covering A, AAAA, CNAME records validator function suitableType()
(with the logic if not ipv4 address and not ipv6 address, then it's CNAME) and TTL validator getTTLFromAnnotations()
(which makes sense, because the code implements ttl value parser).
Neither existing provider specific annotations (getProviderSpecificAnnotations()
), nor anything else implemented in source.go
, besides the TTL annotations (including the very hostnameAnnotationKey = "external-dns.alpha.kubernetes.io/hostname"
in getHostnamesFromAnnotations()
) are having unit tests. I believe with the reasoning that the string values are just being used as it is and there's basically no code to cover with tests.
However I used the occasion to cover with unit tests all the logic implemented in getProviderSpecificAnnotations()
.
If we need to add more unit tests for more source.go
functions, I believe it should not be in this PR scope.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/lgtm
cc @mloiseleur for review |
@AndrewCharlesHay Do you want to do a final review before merge ? |
/lgtm |
@AndrewCharlesHay: changing LGTM is restricted to collaborators In response to this:
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-sigs/prow repository. |
/approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ivankatliarchuk, mloiseleur 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 |
Many thanks for this great PR 👍. |
…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 [#​5175](kubernetes-sigs/external-dns#5175) and [#​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 ([#​4946](kubernetes-sigs/external-dns#4946)). Previous format will be removed in the next release ([#​5172](kubernetes-sigs/external-dns#5172)). #### 🐛 Bug fixes - fix(cloudflare): optional custom hostnames by [@​mrozentsvayg](https://github.com/mrozentsvayg) in kubernetes-sigs/external-dns#5146 - fix(source): pass GatewayName to config by [@​buroa](https://github.com/buroa) in kubernetes-sigs/external-dns#5169 - fix(cloudflare): infinite loop with more than 50 custom hostnames by [@​mrozentsvayg](https://github.com/mrozentsvayg) in kubernetes-sigs/external-dns#5181 #### 📦 Others - chore: update OWNERS with required config file by [@​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 ([#​5015](kubernetes-sigs/external-dns#5015)) [@​asymingt](https://github.com/asymingt) - feat: Add F5 TransportServer source ([#​4944](kubernetes-sigs/external-dns#4944)) [@​visokoo](https://github.com/visokoo) - feat(chart): allow to run tpl on `ServiceAccount` annotations ([#​4958](kubernetes-sigs/external-dns#4958)) ([#​4958](kubernetes-sigs/external-dns#4958)) [@​fcrespofastly](https://github.com/fcrespofastly) - feat(cloudflare): custom hostname and fix apex ([#​5087](kubernetes-sigs/external-dns#5087)) [@​mrozentsvayg](https://github.com/mrozentsvayg) - feat(deps): added renovate config for custom regexes ([#​4978](kubernetes-sigs/external-dns#4978)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - feat: don't discard klog logs at the highest log levels (debug and trace) ([#​4961](kubernetes-sigs/external-dns#4961)) [@​dmarkhas](https://github.com/dmarkhas) - feat(pdns): add validation for MX and SRV records ([#​4871](kubernetes-sigs/external-dns#4871)) [@​julillae](https://github.com/julillae) - feat(rfc2136): support multiple hosts ([#​4653](kubernetes-sigs/external-dns#4653)) [@​Jeremy-Boyle](https://github.com/Jeremy-Boyle) - feat(service): listen to endpoint changes ([#​5085](kubernetes-sigs/external-dns#5085)) [@​dmarkhas](https://github.com/dmarkhas) - feat(source): allow to register all pods and their associated PTR record ([#​4782](kubernetes-sigs/external-dns#4782)) [@​foyerunix](https://github.com/foyerunix) - feat(txt-registry): add option to use only new format ([#​4946](kubernetes-sigs/external-dns#4946)) [@​malpou](https://github.com/malpou) #### 🐛 Bug fixes - fix(aes-encryption): support plain txt and url safe base64 strings ([#​4980](kubernetes-sigs/external-dns#4980)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - fix(aws-provider): ListTagsForResource incorrect zone-id handling ([#​5029](kubernetes-sigs/external-dns#5029)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - fix(chart): non-string types on svcaccount annotations ([#​5067](kubernetes-sigs/external-dns#5067)) [@​hjoshi123](https://github.com/hjoshi123) - fix(chart): regression with affinity.nodeAffinity getting ignored ([#​5046](kubernetes-sigs/external-dns#5046)) [@​mkhpalm](https://github.com/mkhpalm) - fix(chart): update rbac for F5 transportserver source ([#​5066](kubernetes-sigs/external-dns#5066)) ([#​5066](kubernetes-sigs/external-dns#5066)) [@​visokoo](https://github.com/visokoo) - fix(cloudflare): add more descriptive log message ([#​5047](kubernetes-sigs/external-dns#5047)) [@​AndrewCharlesHay](https://github.com/AndrewCharlesHay) - fix(cloudflare): use softerror on internal server error with api ([#​4931](kubernetes-sigs/external-dns#4931)) [@​vishuvenu](https://github.com/vishuvenu) - fix(dedup): records with different type are not duplicates ([#​4889](kubernetes-sigs/external-dns#4889)) [@​jtszalay](https://github.com/jtszalay) - fix(docs): aws tutorial broken internal markdown links ([#​5036](kubernetes-sigs/external-dns#5036)) [@​strophy](https://github.com/strophy) - fix: do not merge CNAME with multiple targets ([#​4856](kubernetes-sigs/external-dns#4856)) [@​dtuck9](https://github.com/dtuck9) - fix(f5-virtualserver): skip endpoint creation when VirtualServer is not ready ([#​4996](kubernetes-sigs/external-dns#4996)) [@​mikejoh](https://github.com/mikejoh) - fix(godaddy): Handle missing Retry-After header gracefully ([#​4866](kubernetes-sigs/external-dns#4866)) [@​alexstojda](https://github.com/alexstojda) - fix(oci): records with multiple IP addresses ([#​4993](kubernetes-sigs/external-dns#4993)) [@​jrosinsk](https://github.com/jrosinsk) - fix(ovh): cache refresh and duplicates processing ([#​4932](kubernetes-sigs/external-dns#4932)) [@​nmaupu](https://github.com/nmaupu) - fix(registry): handle empty targets in TXT records logging an error ([#​5149](kubernetes-sigs/external-dns#5149)) [@​saikatharryc](https://github.com/saikatharryc) - fix(source): allow ipv4-mapped ipv6 addresses ([#​4943](kubernetes-sigs/external-dns#4943)) [@​buroa](https://github.com/buroa) - fix(source): debug log on gateway target detection ([#​5096](kubernetes-sigs/external-dns#5096)) [@​drcapulet](https://github.com/drcapulet) - Fix spelling in webhook OpenAPI spec ([#​5038](kubernetes-sigs/external-dns#5038)) [@​claycooper](https://github.com/claycooper) - fix: use informer for istio gateways ([#​4522](kubernetes-sigs/external-dns#4522)) [@​woehrl01](https://github.com/woehrl01) #### 📝 Documentation - docs: add deprecation policy ([#​5053](kubernetes-sigs/external-dns#5053)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - docs: add staging images to release process ([#​5050](kubernetes-sigs/external-dns#5050)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - docs: fix typo on aws tutorial ([#​5070](kubernetes-sigs/external-dns#5070)) [@​Ileriayo](https://github.com/Ileriayo) - docs: fix typos in tutorials ([#​4969](kubernetes-sigs/external-dns#4969)) [@​mloiseleur](https://github.com/mloiseleur) - docs(Microsoft DNS): improve instructions ([#​4893](kubernetes-sigs/external-dns#4893)) [@​TomyLobo](https://github.com/TomyLobo) - docs(proposal): standartise date format ([#​5128](kubernetes-sigs/external-dns#5128)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - docs(proposal): update template with statuses ([#​5098](kubernetes-sigs/external-dns#5098)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - docs(provider): add ClouDNS to README ([#​5065](kubernetes-sigs/external-dns#5065)) [@​rwunderer](https://github.com/rwunderer) - docs(README): fix link to dev guide ([#​5116](kubernetes-sigs/external-dns#5116)) [@​masterkain](https://github.com/masterkain) - docs(registry): fix managed-record-type argument ([#​5102](kubernetes-sigs/external-dns#5102)) [@​splitice](https://github.com/splitice) - docs: update and refactor contribution part ([#​5073](kubernetes-sigs/external-dns#5073)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - ci(docs): add markdown linters and editorconfig ([#​5055](kubernetes-sigs/external-dns#5055)) [@​mloiseleur](https://github.com/mloiseleur) - Improve sources' docs to mention '--managed-record-types' ([#​4882](kubernetes-sigs/external-dns#4882)) [@​juan-vg](https://github.com/juan-vg) #### 📦 Others - add: auto label source and providers ([#​5158](kubernetes-sigs/external-dns#5158)) [@​szuecs](https://github.com/szuecs) - Add OpenStack Designate webook provider to readme ([#​5115](kubernetes-sigs/external-dns#5115)) [@​frittentheke](https://github.com/frittentheke) - chore(ci): fix and sort changelog ([#​4979](kubernetes-sigs/external-dns#4979)) [@​mloiseleur](https://github.com/mloiseleur) dependabot - chore(ci): fix failing test, upgrade to go 1.23.5 and linter to v1.63 ([#​5013](kubernetes-sigs/external-dns#5013)) [@​mloiseleur](https://github.com/mloiseleur) - chore(ci): remove too slow test ([#​5014](kubernetes-sigs/external-dns#5014)) [@​mloiseleur](https://github.com/mloiseleur) - chore(deps): bump actions/setup-python from 5.3.0 to 5.4.0 in the dev-dependencies group ([#​5041](kubernetes-sigs/external-dns#5041)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump azure/setup-helm from 4.2.0 to 4.3.0 in the dev-dependencies group ([#​5108](kubernetes-sigs/external-dns#5108)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump helm/kind-action from 1.10.0 to 1.11.0 in the dev-dependencies group ([#​4956](kubernetes-sigs/external-dns#4956)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump helm/kind-action from 1.11.0 to 1.12.0 in the dev-dependencies group ([#​4972](kubernetes-sigs/external-dns#4972)) [@​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 ([#​5083](kubernetes-sigs/external-dns#5083)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group across 1 directory with 14 updates ([#​4976](kubernetes-sigs/external-dns#4976)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group across 1 directory with 18 updates ([#​5040](kubernetes-sigs/external-dns#5040)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group across 1 directory with 20 updates ([#​4999](kubernetes-sigs/external-dns#4999)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group across 1 directory with 21 updates ([#​5089](kubernetes-sigs/external-dns#5089)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group across 1 directory with 22 updates ([#​5062](kubernetes-sigs/external-dns#5062)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group across 1 directory with 23 updates ([#​5145](kubernetes-sigs/external-dns#5145)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group across 1 directory with 25 updates ([#​5023](kubernetes-sigs/external-dns#5023)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group across 1 directory with 5 updates ([#​4987](kubernetes-sigs/external-dns#4987)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group across 1 directory with 7 updates ([#​5125](kubernetes-sigs/external-dns#5125)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group with 20 updates ([#​5109](kubernetes-sigs/external-dns#5109)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group with 2 updates ([#​5022](kubernetes-sigs/external-dns#5022)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group with 3 updates ([#​5112](kubernetes-sigs/external-dns#5112)) [@​dependabot](https://github.com/dependabot) - chore(deps): bump the dev-dependencies group with 4 updates ([#​4988](kubernetes-sigs/external-dns#4988)) [@​dependabot](https://github.com/dependabot) - chore(docs): docs/flags.md generation ([#​4983](kubernetes-sigs/external-dns#4983)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - chore(filter-tags): pre-process filter tags ([#​5063](kubernetes-sigs/external-dns#5063)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - chore(makefile): add helper and document targets ([#​5093](kubernetes-sigs/external-dns#5093)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - chore(makefile): simplify coverage script ([#​5105](kubernetes-sigs/external-dns#5105)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - chore(provider-aws): improve canonicalHostedZone handling ([#​5031](kubernetes-sigs/external-dns#5031)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - chore(release): publish chart v1.15.2 ([#​5094](kubernetes-sigs/external-dns#5094)) [@​stevehipwell](https://github.com/stevehipwell) - chore: update maintainers/reviewers ([#​5020](kubernetes-sigs/external-dns#5020)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - chore: upgrade ExternalDNS to go 1.24 ([#​5106](kubernetes-sigs/external-dns#5106)) [@​mloiseleur](https://github.com/mloiseleur) - kustomize-v0.15.1 ([#​4966](kubernetes-sigs/external-dns#4966)) [@​Raffo](https://github.com/Raffo) - Release Helm chart for `v0.15.1` ([#​5028](kubernetes-sigs/external-dns#5028)) [@​stevehipwell](https://github.com/stevehipwell) - replace all versions to v0.15.1 ([#​4973](kubernetes-sigs/external-dns#4973)) [@​Raffo](https://github.com/Raffo) - test(cloudflare): add scenarios on submitChanges ([#​5054](kubernetes-sigs/external-dns#5054)) [@​AndrewCharlesHay](https://github.com/AndrewCharlesHay) - test(domain-filter): simple filters on domain exclusion ([#​5064](kubernetes-sigs/external-dns#5064)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) - test(provider): tags filter coverage and benchmark ([#​5060](kubernetes-sigs/external-dns#5060)) [@​ivankatliarchuk](https://github.com/ivankatliarchuk) #### New Contributors - [@​juan-vg](https://github.com/juan-vg) made their first contribution in kubernetes-sigs/external-dns#4882 - [@​dmarkhas](https://github.com/dmarkhas) made their first contribution in kubernetes-sigs/external-dns#4961 - [@​buroa](https://github.com/buroa) made their first contribution in kubernetes-sigs/external-dns#4943 - [@​fcrespofastly](https://github.com/fcrespofastly) made their first contribution in kubernetes-sigs/external-dns#4958 - [@​nmaupu](https://github.com/nmaupu) made their first contribution in kubernetes-sigs/external-dns#4932 - [@​dtuck9](https://github.com/dtuck9) made their first contribution in kubernetes-sigs/external-dns#4856 - [@​asymingt](https://github.com/asymingt) made their first contribution in kubernetes-sigs/external-dns#5015 - [@​alexstojda](https://github.com/alexstojda) made their first contribution in kubernetes-sigs/external-dns#4866 - [@​visokoo](https://github.com/visokoo) made their first contribution in kubernetes-sigs/external-dns#4944 - [@​vishuvenu](https://github.com/vishuvenu) made their first contribution in kubernetes-sigs/external-dns#4931 - [@​TomyLobo](https://github.com/TomyLobo) made their first contribution in kubernetes-sigs/external-dns#4893 - [@​strophy](https://github.com/strophy) made their first contribution in kubernetes-sigs/external-dns#5036 - [@​malpou](https://github.com/malpou) made their first contribution in kubernetes-sigs/external-dns#4946 - [@​foyerunix](https://github.com/foyerunix) made their first contribution in kubernetes-sigs/external-dns#4782 - [@​rwunderer](https://github.com/rwunderer) made their first contribution in kubernetes-sigs/external-dns#5065 - [@​Ileriayo](https://github.com/Ileriayo) made their first contribution in kubernetes-sigs/external-dns#5070 - [@​hjoshi123](https://github.com/hjoshi123) made their first contribution in kubernetes-sigs/external-dns#5067 - [@​mkhpalm](https://github.com/mkhpalm) made their first contribution in kubernetes-sigs/external-dns#5046 - [@​woehrl01](https://github.com/woehrl01) made their first contribution in kubernetes-sigs/external-dns#4522 - [@​jtszalay](https://github.com/jtszalay) made their first contribution in kubernetes-sigs/external-dns#4889 - [@​splitice](https://github.com/splitice) made their first contribution in kubernetes-sigs/external-dns#5102 - [@​drcapulet](https://github.com/drcapulet) made their first contribution in kubernetes-sigs/external-dns#5096 - [@​mrozentsvayg](https://github.com/mrozentsvayg) made their first contribution in kubernetes-sigs/external-dns#5087 - [@​frittentheke](https://github.com/frittentheke) made their first contribution in kubernetes-sigs/external-dns#5115 - [@​masterkain](https://github.com/masterkain) made their first contribution in kubernetes-sigs/external-dns#5116 - [@​renanqts](https://github.com/renanqts) made their first contribution in kubernetes-sigs/external-dns#5132 - [@​rlees85](https://github.com/rlees85) made their first contribution in kubernetes-sigs/external-dns#5111 - [@​stefaneg](https://github.com/stefaneg) made their first contribution in kubernetes-sigs/external-dns#5135 - [@​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]>
Description
Associates and manages Cloudflare custom hostnames with
external-dns.alpha.kubernetes.io/cloudflare-custom-hostname
annotations.Checklist