·
2 commits
to master
since this release
Immutable
release. Only release title and notes can be modified.
General information
Action required before upgrade
-
⚠️ The default annotation prefix is nowexternal-dns.kubernetes.io/with no fallback (#6424)- 🚨 This change can delete your DNS records.
- ℹ️ You can either migrate your annotations or set
--annotation-prefix=external-dns.alpha.kubernetes.io/. - ➡️ It's recommended to try this version with
--dry-run=true&--policy=create-only.
-
⚠️ To avoid any unwanted DNS records deletion from the annotation prefix change,--policyis now required with no default (#6508).
Important
⚠️ CRD/API upgrades: Gateway APITLSRoutenow usesv1, standard channel since Gateway API v1.5.0 (#6367). AmbassadorHostnow usesgetambassador.io/v3alpha1(#6482). Pi-hole v5 API is removed, v6+ only (#6406).- ℹ️ On AWS, ownership TXT records for A ALIAS now use the
a-prefix (#6523). Migration is automatic and ownership is preserved- Leftover
cname-records can be cleaned withscripts/aws-cleanup-legacy-txt-records.py --alias-cname-cleanup.
- Leftover
- ℹ️ This release removes in-tree support for Akamai, Plural & Transip (#6485).
- Users needing those providers can use a previous version of ExternalDNS or a webhook-based provider. Gandi is marked for removal (#6634).
- ℹ️ New:
crdregistry as an alternative to TXT (#5372) - ℹ️ DNAME record support (#6553), and
--rfc2136-axfrreplacing the deprecated--rfc2136-tsig-axfr(#6598).
⚠️ Breaking Changes
- [annotations] switch default annotations prefix to GA by @mloiseleur in #6424
- [config] require explicit --policy flag by @mloiseleur in #6508
- [provider/pihole] drop Pi-hole v5 API support by @ivankatliarchuk in #6406
- [registry/txt] use a- prefix for AWS A ALIAS ownership TXT records by @mloiseleur in #6523
- remove unmaintained providers (akamai, plural, transip) by @mloiseleur in #6485
- [source/gateway-api] migrate TLSRoute to v1 by @ecray in #6367
🚀 Features
- add DNAME record type support by @clwluvw in #6553
- add isSource template function to scope --fqdn-template by source by @ivankatliarchuk in #6625
- [aws] add aws-hosted-zone-id annotation to pin records to a specific zone by @namnt2307 in #6559
- [aws] support alias=A and alias=AAAA to create single record type by @u-kai in #5997
- [endpoint] support multiple RefObjects per endpoint and per event by @ivankatliarchuk in #6495
- [registry] new CRD option by @mloiseleur in #5372
- [rfc2136] add --rfc2136-axfr, deprecate --rfc2136-tsig-axfr by @mloiseleur in #6598
- [source] add --fqdn-* flag support to f5-virtualserver and f5-transportserver sources by @ivankatliarchuk in #6470
- [source] add --fqdn-* flag support to gloo-proxy source by @ivankatliarchuk in #6475
- [source] add --fqdn-* flag support to traefik-proxy source by @ivankatliarchuk in #6468
- [source] add label filter support to contour, f5, kong, skipper, traefik sources by @ivankatliarchuk in #6538
- [source/ambassador] migrate Host CRD to emissary-ingress v3alpha1 by @mloiseleur in #6482
- [source] apply controller annotation filter at indexer level by @ivankatliarchuk in #6426
- [source] attach RefObject to all remaining sources by @mloiseleur in #6492
- [source/fake] extend fake source to emit all supported record types by @ivankatliarchuk in #6308
- [source] migrate contour, f5, kong, traefik sources to indexer-based filtering by @ivankatliarchuk in #6542
- [source] migrate ingress and node sources to Indexers pattern by @ivankatliarchuk in #6445
- [source] set transformer on all informers by @vflaux in #6451
- [source/template] add fqdn-target-template to pod/service/node and consolidate duplicate template helpers by @ivankatliarchuk in #6497
- [template] support repeatable --fqdn-template, --target-template, --fqdn-target-template flags by @ivankatliarchuk in #6429
- [test/crd] support CRD integration tests by @ivankatliarchuk in #6412
🐛 Bug fixes
- [alibabacloud] fix TXT record value comparison during record updates by @jiangzm in #6487
- [aws] incorrect behavior for non-aliasable record types by @u-kai in #6017
- [awssd] use namespace-aware parsing for dotted service names by @am-ltk in #6365
- [aws] unescape wildcard alias target on read by @ulascansenturk in #6471
- [cloudflare] send SRV records as structured data by @tpaulus in #6560
- [coredns] return AAAA for IPv6 targets by @mloiseleur in #6489
- [coredns] unexpected delete when owner is activated by @farodin91 in #6206
- [coredns] write PTR records without random prefix to etcd by @dongjiang1989 in #6478
- create/update event generation for webhook provider by @tommasopozzetti in #6361
- [dnsimple] read back all supported record types and fix record lookup by type by @Churi12 in #6517
- [dynamodb] avoid nil region option panic by @vissieza in #6417
- [events] encapsulate ObjectReference fields by @ivankatliarchuk in #6423
- [mapper] prevent index out of bounds in ToEndpointName with multi-dot suffix by @carterpewpew in #6433
- pin smartystreets/assertions. mark gandi provider for removal by @ivankatliarchuk in #6634
- preserve equals signs in endpoint label values by @immanuwell in #6443
- [provider/cloudflare] trim surrounding whitespace from API token by @gecube in #6533
- [provider] normalize alias=A/AAAA to alias=true after AdjustEndpoints by @u-kai in #6454
- [provider/rfc2136] use independent counters for AXFR and update nameserver rotation by @pujitha24 in #6591
- [service] switch Endpoints() to indexer-based filtering by @ivankatliarchuk in #6344
- [source/crd] allow SRV targets with trailing dot in DNSEndpoint by @SAY-5 in #6383
- [source/fake.go] make fakeSource endpoint generation deterministic by @vflaux in #6411
- [source] parse gloo-proxy aggregateListener virtual hosts by @pujitha24 in #6628
- [source] preserve Skipper custom token file by @PragalvaXFREZ in #6583
- [source] SingletonClientGenerator once-init errors by @carterpewpew in #6398
- [source] use correct key when checking for existing alias in postProcessor by @u-kai in #6388
- support ownership recognition of txt records by @HartmannVolker in #6435
📝 Documentation
- add Tencent Cloud webhook provider by @QianChenglong in #6432
- [ai] add instructions for agents by @mloiseleur in #6453
- [aws] correct hosted zone annotation prefix by @immanuwell in #6569
- [ci] validate docs build on PRs targeting master by @ivankatliarchuk in #6351
- clarify release tag vs kustomize manifest lag by @VedantMadane in #6626
- [crd] clarify annotation-filter behavior for DNSEndpoint by @immanuwell in #6530
- [faq] explain how to migrate a hostname between sources by @mloiseleur in #6490
- fix deps, build & links warning by @mloiseleur in #6350
- [proposal] libdns provider adapter by @mloiseleur in #6509
- [readme] remove retired go report card badge by @scholar7r in #6549
- [README] restructure provider and source listings by @mloiseleur in #6499
- [readme] update Unifi webhook URL by @onedr0p in #6534
- [rfc2136] fix duplicated word in tutorial by @s3onghyun in #6504
- [traefik] clarify explicit target requirement by @immanuwell in #6502
- [tutorials/aws] document AWS SDK credential provider chain by @alekc in #6444
- [tutorials/aws] fix grammatical error by @Jawwad78 in #6384
- [tutorials/ovh] Add single-link credential creation by @fhoekstra in #6397
- [webhook] add namecheap webhook provider by @evandeaubl in #6631
- [webhook] add NAVER Cloud Platform webhook provider by @inerplat in #6575
- [webhook] add Porkbun webhook provider to registry by @mattgmoser in #6409
- [webhook] add reference to netbird external-dns provider by @kgrotel in #6460
📦 Docker Image
# This pull command only works when it's released
docker pull registry.k8s.io/external-dns/external-dns:v0.22.0📦 Others
- add fuzz tests for parsing and normalization functions by @Raffo in #6525
- bump dependencies for update by @Raffo in #6643
- bump k8s deps to v0.36.0 and remove deprecated scheme.Builder by @ivankatliarchuk in #6407
- bump to go version 1.26.6 by @Raffo in #6635
- [ci] [docs] use latest as alias by @mloiseleur in #6352
- [ci] [e2e] use rollout status for etcd instead of kubectl wait by @u-kai in #6474
- [ci] [github] pin github action by @ivankatliarchuk in #6428
- [ci] replace GrantBirki/json-yaml-validate action with jq by @Raffo in #6318
- [ci] replace pre-commit with a SHA-pinned file-hygiene script by @Raffo in #6374
- [cobra] cleanup up leftover Cobra code by @vflaux in #6448
- [deps] bump github.com/cloudflare/cloudflare-go from v5 to v7 by @bayazee in #6550
- [deps] bump github.com/projectcontour/contour from 1.33.3 to 1.33.4 by @app/dependabot in #6395
- [deps] bump gitpython from 3.1.50 to 3.1.52 in /docs/scripts by @app/dependabot in #6576
- [deps] bump gitpython from 3.1.52 to 3.1.54 in /docs/scripts by @app/dependabot in #6585
- [deps] bump gitpython from 3.1.54 to 3.1.57 in /docs/scripts by @app/dependabot in #6613
- [deps] bump gitpython from 3.1.57 to 3.1.58 in /docs/scripts by @app/dependabot in #6621
- [deps] bump mkdocs-git-revision-date-localized-plugin from 1.5.1 to 1.5.2 in /docs/scripts in the mkdocs-deps group by @app/dependabot in #6464
- [deps] bump mkdocs-git-revision-date-localized-plugin from 1.5.2 to 1.5.3 in /docs/scripts in the mkdocs-deps group by @app/dependabot in #6532
- [deps] bump mkdocs-material from 9.7.6 to 9.7.7 in /docs/scripts in the mkdocs-deps group across 1 directory by @app/dependabot in #6601
- [deps] bump pymdown-extensions from 10.21.3 to 11.0 in /docs/scripts by @app/dependabot in #6584
- [deps] bump pymdown-extensions from 11.0 to 11.0.1 in /docs/scripts by @app/dependabot in #6622
- [deps] bump the dev-dependencies group across 1 directory with 20 updates by @app/dependabot in #6410
- [deps] bump the dev-dependencies group with 10 updates by @app/dependabot in #6441
- [deps] bump the dev-dependencies group with 12 updates by @app/dependabot in #6459
- [deps] bump the dev-dependencies group with 22 updates by @app/dependabot in #6488
- [deps] bump the dev-dependencies group with 3 updates by @app/dependabot in #6420
- [deps] bump the dev-dependencies group with 4 updates by @app/dependabot in #6362
- [deps] bump the dev-dependencies group with 4 updates by @app/dependabot in #6403
- [deps] bump the dev-dependencies group with 5 updates by @app/dependabot in #6463
- [deps] bump the dev-dependencies group with 6 updates by @app/dependabot in #6452
- [deps] bump the dev-dependencies group with 9 updates by @app/dependabot in #6531
- [deps] bump the dev-dependencies group with 9 updates by @app/dependabot in #6602
- [deps] bump the mkdocs-deps group in /docs/scripts with 2 updates by @app/dependabot in #6404
- [deps] [go] bump go from 1.26.1 -> 1.26.5 by @ivankatliarchuk in #6568
- fix grpc vuln by upgrading lib by @Raffo in #6614
- fix typos across codebase by @Raffo in #6385
- fix x/text vulnerability by upgrading by @Raffo in #6615
- follow the OpenSSF recommendations for github permissions by @Raffo in #6378
- [refactor] [alibabacloud/test] optimize alidns unit tests by @jiangzm in #6506
- [refactor] [controller] controller.Run to return error by @ivankatliarchuk in #6345
- [refactor] [controller] replace custom SIGTERM handler with NotifyContext by @vflaux in #5821
- [refactor] [endpoint] add WithAliasProperty and replace alias string literals by @u-kai in #6455
- [refactor] [endpoint] export ProviderSpecificAlias and consolidate usage by @u-kai in #6342
- [refactor] [endpoint] move MergeEndpoints from source to endpoint package by @ivankatliarchuk in #6413
- [refactor] [events] use typed queue and revisit event controller by @ivankatliarchuk in #6346
- [refactor] [exoscale] migrate provider to egoscale v3 and apex DNS record handling by @natalie-o-perret in #6371
- [refactor] [pdns] replace unmaintained ffledgling/pdns-go with joeig/go-powerdns/v3 by @mloiseleur in #6486
- [refactor] [registry/crd] build REST config from shared client package by @mloiseleur in #6514
- [refactor] [source/gloo] migrate to indexers, add annotation/label/controller filters by @ivankatliarchuk in #6515
- [refactor] [source] migrate AnnotationFilter from string to labels.Selector by @ivankatliarchuk in #6526
- [refactor] use Set structs instead of map[]struct{} by @vflaux in #6360
- [release] updates kustomize & docs with v0.21.0 by @mloiseleur in #6349
- [release] updates kustomize & docs with v0.22.0 by @mloiseleur in #6645
- [security] [github] added openssf github action by @ivankatliarchuk in #6245
- [test] [crd] assert the generated CRDs are installable by @mloiseleur in #6619
- [test] [e2e] retry downloads to survive transient network errors by @u-kai in #6603
- [test] [gandi] extend coverage with mock adapters by @amarkdotdev in #6518
- [test] [ingress] fix endpoint count and improve assertion output by @ivankatliarchuk in #6194
- [test] [integration/crd] add SRV record scenario covering RFC 2782 trailing dot by @ivankatliarchuk in #6422
- [test] [pkg/rfc2317] cover bare IPv6 and invalid-mask edge cases by @SAY-5 in #6437
- [test] [registry/crd] expand unit test coverage by @FirasYousfi in #6522
- [test] [source] assert RefObject via ValidateEndpoints opt-in by @mloiseleur in #6493
- [test] [source] fix flaky unstructured source test by @mloiseleur in #6483
- [test] [source] improve skipper routegroup coverage by @PragalvaXFREZ in #6580
- [test] [source/ingress] two ingresses with same host, different IPs by @ivankatliarchuk in #6496
- update CI workflows to pin pip packages and go packages by @Raffo in #6498
- update maintainers by @mloiseleur in #6421
- update reviewers by @mloiseleur in #6427
- update security contacts by @Raffo in #6425