fix(crd): allow trailing dot in CNAME targets#6218
Merged
k8s-ci-robot merged 4 commits intokubernetes-sigs:masterfrom Feb 26, 2026
Merged
fix(crd): allow trailing dot in CNAME targets#6218k8s-ci-robot merged 4 commits intokubernetes-sigs:masterfrom
k8s-ci-robot merged 4 commits intokubernetes-sigs:masterfrom
Conversation
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Pull Request Test Coverage Report for Build 22307159213Details
💛 - Coveralls |
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Member
Author
|
/approve |
Contributor
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ivankatliarchuk The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
ivankatliarchuk
added a commit
to gofogo/k8s-sigs-external-dns-fork
that referenced
this pull request
Mar 10, 2026
…_total * master: (21 commits) refactor(testutils): extract log test helpers into subpackage to fix (kubernetes-sigs#6236) chore(deps): bump mkdocs-material (kubernetes-sigs#6237) feat(endpoint): reject alias property on unsupported record types (kubernetes-sigs#6188) fix(charts): Skip cluster-scope RBAC on namespaced (kubernetes-sigs#5843) chore(deps): bump the dev-dependencies group across 1 directory with 3 updates (kubernetes-sigs#6226) feat(pdns): add --[no-]prefer-alias flag and alias annotation support (kubernetes-sigs#6129) fix(ci): failed to download the coveralls binary from GitHub releases (kubernetes-sigs#6228) docs: add external-dns-pscloud-webhook to New providers list (kubernetes-sigs#6214) fix(crd): allow trailing dot in CNAME targets (kubernetes-sigs#6218) docs: added deep wiki badge (kubernetes-sigs#6215) feat(crd): Support MX record with trailing dot (kubernetes-sigs#6163) chore(source): standardize sources with merge endpionts and deduplicate targets (kubernetes-sigs#6174) chore(store): Added RESTConfig() to ClientGenerator (kubernetes-sigs#6177) chore(ingress): clarify that both IP and Hostname are collected from LoadBalancer status (kubernetes-sigs#6138) chore(endpoint): added empty checks (kubernetes-sigs#6157) chore(linter): enable unparam (kubernetes-sigs#6160) fix(tlsutils): fix nil error wrapping and wrong env var in TLS config (kubernetes-sigs#6198) chore(endpoint): harden crypto (kubernetes-sigs#6197) feat(fqdn): Deduplicate and sort ExecTemplate output. Add functions (kubernetes-sigs#6173) benchmark(endpoint): endpoint benchmarks (kubernetes-sigs#6156) ...
ivankatliarchuk
added a commit
to gofogo/k8s-sigs-external-dns-fork
that referenced
this pull request
Mar 10, 2026
* master: (23 commits) refactor(testutils): extract log test helpers into subpackage to fix (kubernetes-sigs#6236) chore(deps): bump mkdocs-material (kubernetes-sigs#6237) feat(endpoint): reject alias property on unsupported record types (kubernetes-sigs#6188) fix(charts): Skip cluster-scope RBAC on namespaced (kubernetes-sigs#5843) chore(deps): bump the dev-dependencies group across 1 directory with 3 updates (kubernetes-sigs#6226) feat(pdns): add --[no-]prefer-alias flag and alias annotation support (kubernetes-sigs#6129) fix(ci): failed to download the coveralls binary from GitHub releases (kubernetes-sigs#6228) docs: add external-dns-pscloud-webhook to New providers list (kubernetes-sigs#6214) fix(crd): allow trailing dot in CNAME targets (kubernetes-sigs#6218) docs: added deep wiki badge (kubernetes-sigs#6215) feat(crd): Support MX record with trailing dot (kubernetes-sigs#6163) chore(source): standardize sources with merge endpionts and deduplicate targets (kubernetes-sigs#6174) chore(store): Added RESTConfig() to ClientGenerator (kubernetes-sigs#6177) chore(ingress): clarify that both IP and Hostname are collected from LoadBalancer status (kubernetes-sigs#6138) chore(endpoint): added empty checks (kubernetes-sigs#6157) chore(linter): enable unparam (kubernetes-sigs#6160) fix(tlsutils): fix nil error wrapping and wrong env var in TLS config (kubernetes-sigs#6198) chore(endpoint): harden crypto (kubernetes-sigs#6197) feat(fqdn): Deduplicate and sort ExecTemplate output. Add functions (kubernetes-sigs#6173) benchmark(endpoint): endpoint benchmarks (kubernetes-sigs#6156) ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does it do ?
RFC 1035 §5.1 FQDN targets were wrongly rejected; accept CNAME with or without trailing dot
The CRD source rejected CNAME targets with a trailing dot, but RFC 1035 §5.1 defines the trailing dot as standard absolute FQDN notation in zone file syntax - backend.cluster.local. is as valid as backend.cluster.local. Users familiar with DNS zone files (common in Kubernetes with .cluster.local. search domains) would naturally write FQDNs with a trailing dot and get silently dropped endpoints with a non-actionable warning.
Commit
2fdc7354(~2 years ago), titled "Add unit tests for NAPTR and invalid endpoints". The test was added alongside NAPTR tests as "invalid endpoint CNAME" with expectEndpoints: false - no justification given, it was simply assumed that trailing dots on CNAME targets are invalid, mirroring the same rule applied to A/AAAA records.Initially added change #1107, assumes that all targets must not have trailing dots.
Motivation
Added a case endpoint.RecordTypeCNAME to the target validation switch that skips the trailing-dot check, treating both forms as valid. Updated the existing test that asserted the trailing-dot form was illegal (expectEndpoints: false → true) and added a companion test for the bare (no trailing dot) form alongside it
Relates #6145
More