General information
It's recommended to try this version with --dry-run=true first, see upgrade instructions.
Action required before upgrade
- ⚠️
crdRegistry now storesDNSRecordobjects independantly of source namespace (#6606).- Upgrading from v0.22.0: set
--crd-registry-namespaceaccordingly.
- Upgrading from v0.22.0: set
- ⚠️ With
--txt-encrypt-enabled, Go 1.27 changed gzip output (#6675):- ℹ️ External DNS has been updated to avoid mismatch (#6680)
- ℹ️ Encryption recommendations have been detailed
Important
- ℹ️
--enable-legacy-annotation-prefixallows reading alsoexternal-dns.alpha.kubernetes.io/annotations during migration started since v0.22.0 (#6703). - ℹ️
--dry-runis now honored by ns1 (#6693) and alibabacloud (#6699). - ℹ️ On
DNSEndpoint, cloudflareproviderSpecificnames are now prefix-free (#6731).- Annotation-style names (
external-dns.alpha.kubernetes.io/cloudflare-*,external-dns.kubernetes.io/cloudflare-*) still work but are deprecated.
- Annotation-style names (
- ℹ️ In-tree Gandi provider removed (#6654). Use a previous version or a webhook provider.
- ℹ️ For security & reliability, webhook bodies are capped at 32 MiB
- configurable with
--webhook-provider-max-body-size(#6484).
- configurable with
⚠️ Breaking Changes
- [registry] add --crd-registry-namespace by @mloiseleur in #6606
- remove unmaintained provider gandi by @ivankatliarchuk in #6654
- [webhook] bound request and response body sizes by @mloiseleur in #6484
🚀 Features
- [cloudflare] support TLSA records by @oscrx in #6616
- [docker] FIPS 140-3 image build target and docs by @ivankatliarchuk in #6657
- [source] migrate gateway sources to indexer-based filtering by @ivankatliarchuk in #6545
🐛 Bug fixes
- [alibabacloud] deduplicate hosted zones before fetching records by @pujitha24 in #6711
- [alibabacloud] respect dry-run for record updates and deletes by @vflaux in #6699
- [annotations] add --enable-legacy-annotation-prefix migration flag by @pnz1990 in #6703
- [cloudflare] normalize provider-specific property names at ingestion by @mloiseleur in #6731
- [cloudflare] pin cloudflare-go v7.7.0 by @mloiseleur in #6660
- [ns1] respect --dry-run flag by @yohboy in #6693
- [oci] set useragent, record call limit by @tfountain in #6597
- [pdns] add request timeout and context cancellation for PowerDNS API calls by @zanarellidev in #6694
- [registry] delete TXT records with their stored value by @mloiseleur in #6680
- [rfc2136] do not swallow AXFR envelope errors by @lhp-nemlig in #6652
- [source] collect annotation hostnames before FQDN template by @zanarellidev in #6644
- [source/crd] apply the annotation filter outside the cache transform by @mloiseleur in #6730
- [source] evaluate FQDN templates on typed objects like unstructured by @zanarellidev in #6611
- [source] return errors for invalid label/annotation filters in NewSourceConfig by @ivankatliarchuk in #6610
- [source] skip endpoints with DNS labels over 63 chars in node and pod sources by @immanuwell in #6653
📝 Documentation
- add the Akamai Edge DNS webhook provider to the registry by @PixiBixi in #6685
- [contributing] add comment style and error-handling guidance by @ivankatliarchuk in #6717
- document TXT encryption risks and recommendations by @ivankatliarchuk in #6678
- [faq] scope the access annotation to the Service source by @oscrx in #6624
- fix typo in AWS IRSA tutorial by @mrchatam in #6726
- [flags] correct --default-targets scope in help text by @mloiseleur in #6659
- update staging image link in release notes by @Raffo in #6648
- [webhook] add Infoblox UDDI provider by @rorychatterton in #6737
📦 Docker Image
docker pull registry.k8s.io/external-dns/external-dns:v0.23.0📦 Others
chore
- [lint] extract repeated strings to constants for goconst by @ivankatliarchuk in #6696
- [release] updates kustomize & docs with v0.22.0 by @mloiseleur in #6645
ci
- [release] make the generated changelog readable by @mloiseleur in #6647
- [source] drop embedded field type in pod test literal by @mloiseleur in #6692
deps
- bump github.com/stretchr/testify from 1.12.0 to 1.12.1 in the dev-dependencies group by @app/dependabot in #6649
- bump mkdocs-git-revision-date-localized-plugin from 1.5.3 to 1.5.4 in /docs/scripts in the mkdocs-deps group by @app/dependabot in #6667
- bump the dev-dependencies group with 14 updates by @app/dependabot in #6664
- bump the dev-dependencies group with 14 updates by @app/dependabot in #6738
- bump the dev-dependencies group with 17 updates by @app/dependabot in #6720
- bump the dev-dependencies group with 21 updates by @app/dependabot in #6700
- bump the dev-dependencies group with 3 updates by @app/dependabot in #6668
- bump the dev-dependencies group with 3 updates by @app/dependabot in #6690
- bump the dev-dependencies group with 4 updates by @app/dependabot in #6669
- migrate to Go 1.27.0 by @ivankatliarchuk in #6675
refactor
- [provider] drop AWS SDK dependency from ZoneTypeFilter by @KR-Ravindra in #6707
- [rfc2317] reduce CIDR conversion complexity by @loglapa in #6687
test
- [controller] poll for the first reconcile in TestRun instead of a fixed sleep by @nikolauspschuetz in #6630
- [provider/aws] cover repeated reconcile loops over the alias path by @thc1006 in #6640