Skip to content
Release Radar

ExternalDNS

Networking

Configures external DNS servers from Kubernetes resources

v0.23.029 days after v0.22.0
View on GitHub

Release history

v0.23.0

CompareGitHub

General information

It's recommended to try this version with --dry-run=true first, see upgrade instructions.

Action required before upgrade

  • :warning: crd Registry now stores DNSRecord objects independantly of source namespace (#6606).
    • Upgrading from v0.22.0: set --crd-registry-namespace accordingly.
  • :warning: With --txt-encrypt-enabled, Go 1.27 changed gzip output (#6675):

Important

  • :information_source: --enable-legacy-annotation-prefix allows reading also external-dns.alpha.kubernetes.io/ annotations during migration started since v0.22.0 (#6703).
  • :information_source: --dry-run is now honored by ns1 (#6693) and alibabacloud (#6699).
  • :information_source: On DNSEndpoint, cloudflare providerSpecific names are now prefix-free (#6731).
    • Annotation-style names (external-dns.alpha.kubernetes.io/cloudflare-*, external-dns.kubernetes.io/cloudflare-*) still work but are deprecated.
  • :information_source: In-tree Gandi provider removed (#6654). Use a previous version or a webhook provider.
  • :information_source: For security & reliability, webhook bodies are capped at 32 MiB
    • configurable with --webhook-provider-max-body-size (#6484).

:warning: Breaking Changes

:rocket: Features

:bug: 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

:memo: Documentation

:package: Docker Image

docker pull registry.k8s.io/external-dns/external-dns:v0.23.0

:package: Others

<details><summary>chore</summary>

</details>

<details><summary>ci</summary>

</details>

<details><summary>deps</summary>

  • 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

</details>

<details><summary>refactor</summary>

</details>

<details><summary>test</summary>

  • [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

</details>

General information

Action required before upgrade

  • :warning: The default annotation prefix is now external-dns.kubernetes.io/ with no fallback (#6424)

    • :rotating_light: This change can delete all your DNS records.
    • :information_source: You can either migrate your annotations or set --annotation-prefix=external-dns.alpha.kubernetes.io/.
    • :arrow_right: It's recommended to try this version with --dry-run=true, see recommended upgrade instructions.
    • :warning: --dry-run is not preventing changes to happen with ns1 & alibaba cloud providers
  • :warning: To avoid any unwanted DNS records deletion from the annotation prefix change, --policy is now required with no default (#6508).

Important

  • :warning: CRD/API upgrades: Gateway API TLSRoute now uses v1, standard channel since Gateway API v1.5.0 (#6367). Ambassador Host now uses getambassador.io/v3alpha1 (#6482). Pi-hole v5 API is removed, v6+ only (#6406).
  • :information_source: 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 with scripts/aws-cleanup-legacy-txt-records.py --alias-cname-cleanup.
  • :information_source: 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).
  • :information_source: New: crd registry as an alternative to TXT (#5372)
  • :information_source: DNAME record support (#6553), and --rfc2136-axfr replacing the deprecated --rfc2136-tsig-axfr (#6598).
  • :information_source: Guide on how to safely upgrade External-DNS

:warning: Breaking Changes

:rocket: Features

:bug: 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

:memo: Documentation

:package: Docker Image

# This pull command only works when it's released
docker pull registry.k8s.io/external-dns/external-dns:v0.22.0

:package: Others

<details><summary>chore</summary>

</details>

<details><summary>ci</summary>

</details>

<details><summary>deps</summary>

  • bump github.com/cloudflare/cloudflare-go from v5 to v7 by @bayazee in #6550
  • bump github.com/projectcontour/contour from 1.33.3 to 1.33.4 by @app/dependabot in #6395
  • bump git

…(truncated)

:warning: Breaking Changes

:rocket: Features

:bug: Bug fixes

:memo: Documentation

:package: Others

  • benchmark(endpoint): endpoint benchmarks by @ivankatliarchuk in #6156
  • chore: add Simply webhook provider to README by @uozalp in #5979
  • chore(aws): document and test behavior for ALB and NLB by @ivankatliarchuk in #6063
  • chore(chart): release for v0.20.0 by @vflaux in #6005
  • chore: cloudbild instance type bump by @ivankatliarchuk in #6340
  • chore(cloudflare): improve tests by @vflaux in #6150
  • chore(cloudflare): migrate customhostname to v5 by @AndrewCharlesHay in #5891
  • chore(cloudflare): move custom hostnames logic to dedicated files by @vflaux in #6114
  • chore(deps): bump github.com/aws/smithy-go from 1.23.2 to 1.24.0 in the dev-dependencies group by @app/dependabot in #5987
  • chore(deps): bump github.com/cloudflare/cloudflare-go from v5 to v6 by @vflaux in #6324
  • chore(deps): bump github.com/digitalocean/godo from 1.168.0 to 1.169.0 in the dev-dependencies group by @app/dependabot in #5956
  • chore(deps): bump github.com/goccy/go-yaml from 1.18.0 to 1.19.0 in the dev-dependencies group by @app/dependabot in #5985
  • chore(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0 by @app/dependabot in #5969
  • chore(deps): bump go-linter version by @ivankatliarchuk in #6036
  • chore(deps): bump google.golang.org/grpc from 1.79.2 to 1.79.3 by @app/dependabot in #6296
  • chore(deps): bump mkdocs by @ivankatliarchuk in #6058
  • chore(deps): bump mkdocs-git-revision-date-localized-plugin from 1.5.0 to 1.5.1 in /docs/scripts in the mkdocs-deps group by @app/dependabot in #6161
  • chore(deps): bump mkdocs-material from 9.7.1 to 9.7.3 in /docs/scripts in the mkdocs-deps group by @app/dependabot in #6237
  • chore(deps): bump pre-commit a

…(truncated)

General information

:rocket: Features

:bug: Bug fixes

:memo: Documentation

:package: Others

  • Build(tool) remove vacuum by @szuecs in #5955
  • chore(ci): fix releaser script by @mloiseleur in #5953
  • chore(ci): speed-up & coveralls by @mloiseleur in #5870
  • chore(cloudflare): migrate DeleteCustomHostname() to new lib by @vflaux in #5880
  • chore(cloudflare): migrate DeleteDNSRecord() to new lib by @vflaux in #5780
  • chore(cloudflare): migrate ListRecords() to new lib by @vflaux in #5778
  • chore(cloudflare): migrate UpdateDNSRecord() to new lib by @vflaux in #5781
  • chore(controller-gen): move tools under go tools by @ivankatliarchuk in #5878
  • chore(deps): bump renovatebot/github-action from 43.0.10 to 43.0.11 in the dev-dependencies group by @app/dependabot in #5823
  • chore(deps): bump renovatebot/github-action from 43.0.11 to 43.0.12 in the dev-dependencies group by @app/dependabot in #5840
  • chore(deps): bump renovatebot/github-action from 43.0.12 to 43.0.13 in the dev-dependencies group by @app/dependabot in #5856
  • chore(deps): bump renovatebot/github-action from 43.0.13 to 43.0.14 in the dev-dependencies group by @app/dependabot in #5874
  • chore(deps): bump renovatebot/github-action from 43.0.14 to 43.0.15 in the dev-dependencies group by @app/dependabot in #5890
  • chore(deps): bump renovatebot/github-action from 43.0.9 to 43.0.10 in the dev-dependencies group by @app/dependabot in #5797
  • chore(deps): bump the dev-dependencies group across 1 directory with 15 updates by @app/dependabot in #5952
  • chore(deps): bump the dev-dependencies group across 1 directory with 36 updates by @app/dependabot in #5943
  • chore(deps): bump the dev-dependencies group across 1 directory with 5 updates by @app/dependabot in #5940
  • chore(deps): bump the dev-dependencies group across 1 directory with 9 updates by @app/dependabot in #5949
  • chore(deps): bump the dev-dependencies group with 2 updates by @app/dependabot in #5895
  • chore(deps): bump the dev-dependencies group with 2 updates by @app/dependabot in #5946
  • chore(deps): bump the dev-dependencies group with 3 updates by @app/dependabot in #5806
  • chore(lint): configure goconst linter by @lexfrei in #5929
  • chore(owners): update reviewers by @mloiseleur in #5925
  • chore(pihole): reduce cyclometic complexity of TestListRecords by @AndrewCharlesHay in #5802
  • chore(release): updates kustomize & docs with v0.19.0 by @mloiseleur in #5792
  • chore: upgrade ExternalDNS to go v1.25 and golangci-lint v2.5 by @mloiseleur in #5869
  • ci(linter): add gochecknoinits by @ivankatliarchuk in #5911
  • ci(linter): add go-critic by @PascalBourdier in #5875
  • doc(tutorials/rfc2136): fix RBAC by @vflaux in #5827
  • refactor(annotations): modernize ProviderSpecificAnnotation by @ivankatliarchuk in #5813
  • refactor(pihole): reduce cyclomatic complexity of TestProvider by @AndrewCharlesHay in #5865
  • refactor(pihole): reduce cyclomatic complexity of TestProviderV6 by @AndrewCharlesHay in #5876
  • refactor(service): reduce cyclomatic complexity of extractHeadlessEndpoints by @AndrewCharlesHay in #5822
  • refactor(source/nat64): optional source & early prefixes parsing by @vflaux in #5810
  • refactor(source/wrappers): move wrappers logic away from execute file by @ivankatliarchuk in #5888
  • test(cloudflare): clear environment variables before setting test values by @u-kai in #5851
  • test(cloudflare): improve coverage of zoneService by @vflaux in #5800
  • test(cloudflare): mock provider for cf change tests by @vflaux in #5852
  • test(cloudflare): modernize zoneDomainFilter test by @vflaux in #5853
  • test(controller): improve code coverage by @TobyTheHutt in #5816
  • test(source): fqdn for source/service/nodeport/srv records by @ivankatliarchuk in #5554
  • test(source/service): add serviceTypeFilter edge case by @ivankatliarchuk in #5872
  • test(source/wrappers): fix race condition by @vflaux in #5841
  • test: update goversion label to 1.25 in metrics test by @AndrewCharlesHay in #5886
  • update test certs used for pdns by @Raffo in #5902

:package: Docker Image

docker pull registry.k8s.io/external-dns/external-dns:v0.20.0

General information

  • :information_source: CLI flags allows to set behavior of previous version on the two breaking changes included in this release, if needed.
  • :information_source: Thanks to @valerian-roche, this version can reduce the average memory usage by ~10 times, see #5596

:warning: Breaking Changes

  • feat(nodes)!: expose external ipv6 by default by @mloiseleur in #5575
  • feat(traefik)!: disable legacy listeners on traefik.containo.us API Group by @mloiseleur in #5565

:rocket: Features

:bug: Bug fixes

:memo: Documentation

:package: Others

  • chore(ci): improve releaser script by @mloiseleur in #5571
  • chore(ci): update labels automation by @mloiseleur in #5580
  • chore(cloudflare): migrate CreateDNSRecord() to new lib by @vflaux in #5779
  • chore(cloudflare): migrate DNSRecord to new lib struct by @vflaux in #5762
  • chore(cloudflare): rename zoneService fields by @vflaux in #5761
  • chore(cloudflare): upgrade library to v5 by @vflaux in #5734
  • chore(cloudflare): use lib v4 for regional services by @vflaux in #5609
  • chore(codebase): code reuse by @ivankatliarchuk in #5607
  • chore(codebase): enable linter nonamedreturns by @ivankatliarchuk in #5594
  • chore(codebase): remove pointer to an interface by @ivankatliarchuk in #5625
  • chore(deps): bump github.com/cloudflare/cloudflare-go/v4 from 4.5.1 to 4.6.0 in the dev-dependencies group by @app/dependabot in #5645
  • chore(deps): bump github.com/digitalocean/godo from 1.155.0 to 1.156.0 in the dev-dependencies group by @app/dependabot in #5623
  • chore(deps): bump github.com/oracle/oci-go-sdk/v65 from 65.94.0 to 65.95.0 in the dev-dependencies group by @app/dependabot in #5597
  • chore(deps): bump google.golang.org/api from 0.239.0 to 0.240.0 in the dev-dependencies group by @app/dependabot in #5605
  • chore(deps): bump renovatebot/github-action from 43.0.1 to 43.0.2 in the dev-dependencies group by @app/dependabot in #5592
  • chore(deps): bump renovatebot/github-action from 43.0.2 to 43.0.3 in the dev-dependencies group by @app/dependabot in #5644
  • chore(deps): bump renovatebot/github-action from 43.0.4 to 43.0.5 in the dev-dependencies group by @app/dependabot in #5691
  • chore(deps): bump the dev-dependencies group across 1 directory with 10 updates by @app/dependabot in #5760
  • chore(deps): bump the dev-dependencies group across 1 directory with 17 updates by @app/dependabot in #5704
  • chore(deps): bump the dev-dependencies group across 1 directory with 17 updates by @app/dependabot in #5726
  • chore(deps): bump the dev-dependencies group across 1 directory with 18 updates by @app/dependabot in #5739
  • chore(deps): bump the dev-dependencies group across 1 directory with 2 updates by @app/dependabot in #5667
  • chore(deps): bump the dev-dependencies group across 1 directory with 2 updates by @app/dependabot in #5732
  • chore(deps): bump the dev-dependencies group across 1 directory with 2 updates by @app/dependabot in #5759
  • chore(deps): bump the dev-dependencies group across 1 directory with 3 updates by @app/dependabot in #5579
  • chore(deps): bump the dev-dependencies group across 1 directory with 5 updates by @app/dependabot in #5690
  • chore(deps): bump the dev-dependencies group across 1 directory with 8 updates by @app/dependabot in #5637
  • chore(deps): bump the dev-dependencies group across 1 directory with 8 updates by @app/dependabot in #5658
  • chore(deps): bump the dev-dependencies group with 10 updates by @app/dependabot in #5668
  • chore(deps): bump the dev-dependencies group with 2 updates by @app/dependabot in #5610
  • chore(deps): bump the dev-dependencies group with 3 updates by @app/dependabot in #5628
  • chore(deps): bump the dev-dependencies group with 4 updates by @app/dependabot in #5593
  • chore(deps): bump the dev-dependencies group with 4 updates by @app/dependabot in #5673
  • chore(deps): bump the dev-dependencies group with 9 updates by @app/dependabot in #5763
  • chore(deps): update golangci-lint version to v2.2.2 by @dongjiang1989 in #5670
  • chore(endpoint): fix typo by @bachorp in #5787
  • chore(github-actions): test execution with low resources by @ivankatliarchuk in #5729
  • chore(github): enchance issue-template for bug-report by @ivankatliarchuk in #5692
  • chore(helm): add rbac unit-tests for istio sources by @ivankatliarchuk in #5752
  • chore(metrics): refactor metrics to use common registry by @mwmix in #5677
  • chore(plan): added tests for cases with asterisks by @ivankatliarchuk in #5640
  • chore(provider/aws): reduce if-nesting for dryRun condition by @ivankatliarchuk in #5688
  • chore: release chart for v0.18.0 by @elafarge in #5633
  • chore(release): updates kustomize & docs with v0.18.0 by @mloiseleur in #5573
  • chore(source/istio): replace kube API calls with caching and ingress informers by @ivankatliarchuk in #5743
  • chore(source/net-filter): improve flow logic and add more tests by @ivankatliarchuk in #5629
  • chore(source): reorganise sources and wrappers by @ivankatliarchuk in #5598
  • chore(source): use types instead of strings by @ivankatliarchuk in #5699
  • chore(store*): add reduce complexity and improve code coverage by @AndrewCharlesHay in #5568
  • refactor(annotations): use common prefix to simplify filtering in informer transformers by @valerian-roche in #5621
  • refactor(cloudflare): use lib v4 for zone services by @AndrewCharlesHay in #5654
  • refactor(provider/cloudflare): use local regionalHostname struct by @vflaux in #5615
  • refactor(source): document and add debug information on wrappers by @ivankatliarchuk in #5687
  • refactor(source/istio): add transformers by @ivankatliarchuk in #5728
  • refactor: use slices.Contains instead of handrolled for loop by @szuecs in #5589
  • test: improve coverage on http and metrics by @mwmix in #5712
  • test(source/istio): add missing edge cases with tests by @ivankatliarchuk in #5715
  • tests(source/crd): increase timeouts when it can randomly fails by @vflaux in #5785

:pa

…(truncated)

General information

:warning: This release requires a RBAC update on endpointslices. It will be included in the next Chart release, see #5493.

:warning: The exposed metrics has been significantly changed. You'll need to update your observability stack accordingly, see #5516

:warning: The CLI flag --txt-new-format-only has been removed. Now it's the only format supported, see #5172

:information_source: This release remove in-tree support for ibmcloud, tencentcloud & ultradns. Users needing those providers can use a previous version of external-dns or create a webhook-based provider.

:information_source: The change on default-targets behavior provide a mitigation strategy, if you need it, see #5316

:warning: Breaking Changes

:rocket: Features

:bug: Bug fixes

:memo: Documentation

:package: Others

  • add IONOS Cloud webhook reference by @smilutinovic-ionos in #5475
  • chore(ci): fix testify linter by @mloiseleur in #5461
  • chore(ci): rework labels in OWNERS by @mloiseleur in #5481
  • chore(cloudflare): move regional services logic to dedicated file by @vflaux in #5329
  • chore(cloudflare): remove unused funcs by @vflaux in #5553
  • chore(code): add pre-commit github action by @ivankatliarchuk in #5414
  • chore(codebase): add cyclop max by @AndrewCharlesHay in #5427
  • chore(codebase): add linters for json/yaml tags by @ivankatliarchuk in #5418
  • chore(codebase): add nilnil return check by @ivankatliarchuk in #5415
  • chore(codebase): enable copyloopvar by @ivankatliarchuk in #5433
  • chore(codebase): enable dupword linter by @ivankatliarchuk in #5437
  • chore(codebase): enable errorlint by @ivankatliarchuk in #5439
  • chore(codebase): enable linter recvcheck by @ivankatliarchuk in #5522
  • chore(codebase): enable testifylint by @ivankatliarchuk in #5441
  • chore(codebase): enable usestdlibvars for Go constants by @ivankatliarchuk in #5438
  • chore(code-quality): added linter errchkjson by @ivankatliarchuk in #5448
  • chore(code-quality): reduce cyclomatic complexity of podSource.Endpoints() by @vflaux in #5470
  • chore(code-quality): reduce cyclomatic complexity of validation.ValidateConfig by @vflaux in #5451
  • chore(crd): move code to apis/v1alpha1 by @mloiseleur in #5446
  • chore(deps): bump json-yaml-validate to v3.3.1 by @mloiseleur in #5563
  • chore(deps): bump renovatebot/github-action from 42.0.5 to 42.0.6 in the dev-dependencies group by @app/dependabot in #5530
  • chore(deps): bump renovatebot/github-action from 42.0.6 to 43.0.0 in the dev-dependencies group by @app/dependabot in #5556
  • chore(deps): bump renovatebot/github-action from 43.0.0 to 43.0.1 in the dev-dependencies group by @app/dependabot in #5557
  • chore(deps): bump the dev-dependencies group across 1 directory with 11 updates by @app/dependabot in #5484
  • chore(deps): bump the dev-dependencies group across 1 directory with 13 updates by @app/dependabot in #5539
  • chore(deps): bump the dev-dependencies group across 1 directory with 14 updates by @app/dependabot in #5408
  • chore(deps): bump the dev-dependencies group across 1 directory with 14 updates by @app/dependabot in #5511
  • chore(deps): bump the dev-dependencies group across 1 directory with 2 updates by @app/dependabot in #5531
  • chore(deps): bump the dev-dependencies group across 1 directory with 2 updates by @app/dependabot in #5566
  • chore(deps): bump the dev-dependencies group across 1 directory with 3 updates by @app/dependabot in #5480
  • chore(deps): bump the dev-dependencies group across 1 directory with 3 updates by @app/dependabot in #5520
  • chore(deps): bump the dev-dependencies group with 10 updates by @app/dependabot in #5519
  • chore(deps): bump the dev-dependencies group with 2 updates by @app/dependabot in #5555
  • chore(deps): bump the dev-dependencies group with 3 updates by @app/dependabot in #5544
  • chore(docs): add mkdocs-macros plugin by @ivankatliarchuk in #5412
  • chore(docs): document the default behavior of --[no-]combine-fqdn-annotation by @shapirus in #5403
  • chore(docs): fix documentation references by @ivankatliarchuk in #5560
  • chore(docs): update aws role requirements with conditions by @ivankatliarchuk in #5353
  • chore(domainfilter): use pointer receivers for DomainFilter by @u-kai in #5546
  • chore(provider/coredns): improve code coverage and reduce complexity by @ivankatliarchuk in #5456
  • chore(release): chart for v0.17.0 by @stevehipwell in #5479
  • chore(release): updates kustomize & docs with v0.17.0 by @mloiseleur in #5396
  • chore(source): code coverage and refactoring of traefik by @ivankatliarchuk in #5380
  • chore(source/crd): improve test coverage, fix deprecations by @ivankatliarchuk in #5489
  • chore(source/crd): optimize endpoint labels without looping over by @ivankatliarchuk in #5492
  • chore(source/ingress): add fqdn specific tests for ingress source by @ivankatliarchuk in #5507
  • chore(source): move cache informer to dedicated folder by @ivankatliarchuk in #5466
  • chore(source): reduce cyclomatic complexity of extractNodePortTargets by @linoleparquet in #5444
  • chore(source/service): add resource label without looping over by @ivankatliarchuk in #5528
  • chore(source/service): restructure code to make service type filters testable by @ivankatliarchuk in #5485
  • chore: update maintainers by @mloiseleur in #5491
  • perf(source): benchmarks on EndpointTargetsFromServices by @ivankatliarchuk in #5536
  • refactor(provider): replace switch with if for record type filtering by @u-kai in #5548
  • revert: fix on gateway-api that ensure to use only latest generation with HTTPRoutes by @mloiseleur in #5490
  • test(awssd): fix a flaky test by @vflaux in #5552
  • test(controller): increase timeout and refactor toggle registry test by @u-kai in #5518
  • test(controller): reduce complexity and improve code coverage by @ivankatliarchuk in #5523
  • test(endpoint): improve coverage from 76% to 95.9% by @upsaurav12 in #5421
  • test(metrics): replace random value with a static value by @u-kai in #5462
  • test(provider/civo): improved test coverage by @upsaurav12 in #5455
  • test(provider/gandi): bumped to 100% coverage by @upsaurav12 in #5454
  • test(source): add fqdn specific tests on service by @ivankatliarchuk in #5529
  • test(source): fix flakyness on pod_test.go by @mloiseleur in #5514
  • test(source): remove flaky log assertions from pod tests by @u-kai in #5517
  • test(testutils/endpoint): improved test coverage for testutils/endpoint by @upsaurav12 in #5425
  • test(tlscon

…(truncated)

Global information

:information_source: On Pi Hole, support for v6 has been added. Pi Hole v5 support is deprecated and will be removed in a future version

:information_source: On OVH, the provider has been heavily rewritten. New ACLs are need. See documentation and PR #5143 for details.

:information_source: On IPv6, the proposal 002 has been implemented, thanks to @hjoshi123

  • :warning: In the next release, the default of this new expose-internal-ipv6 flag will be set to false

:warning: There is a severe known issue with Active Directory (#5240) since v0.16.0. PR to fix it (#5385) is in review

:information_source: The legacy txt-format will be removed in the next minor version (#5172)

  • :warning: There is currently no migration script to clean old style txt records. If you need it, if you think you can do it, PRs are welcome.

:information_source: A new Nomad source may be added to external-dns (#5284)

  • This PR can be merged only after a review and test from real Nomad users

:rocket: Features

:bug: Bug fixes

:memo: Documentation

:package: Others

:package: Docker Image

docker pull registry.k8s.io/external-dns/external-dns:v0.17.0

New Contributors

Full Changelog: https://github.com/kubernetes-sigs/external-dns/compare/v0.16.1...v0.17.0