1200 Commits

Author SHA1 Message Date
Ivan Ka
1ef8ccf768
docs(ci): validate docs build on PRs targeting master (#6351)
* ci: validate docs build on PRs targeting master

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* ci: validate docs build on PRs targeting master

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* ci: validate docs build on PRs targeting master

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* ci: validate docs build on PRs targeting master

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* ci: validate docs build on PRs targeting master

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* ci: validate docs build on PRs targeting master

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* ci: validate docs build on PRs targeting master

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-04-06 20:29:33 +05:30
Michel Loiseleur
e1817f2cdc
docs: fix deps, build & links warning (#6350)
* docs: fix deps, build & links warning

* fix ci

* add doc for local build
2026-04-06 18:45:29 +05:30
Michel Loiseleur
c832a23a73
chore(release): updates kustomize & docs with v0.21.0 (#6349)
Signed-off-by: Michel Loiseleur <michel.loiseleur@traefik.io>
2026-04-06 18:21:30 +05:30
System-Arch
066a11e215
feat(source/gateway-api)!: migrate Gateway and HTTPRoute to v1 (#6291)
* source/gateway-api: Migrate Gateway and HTTPRoute from v1beta1 to v1

This migrates the Kubernetes API interactions for Gateway and HTTPRoute
objects from v1beta1 to v1.

The v1beta1 revert was originally made in PR #4610 (July 2024) because
GKE clusters were not yet serving v1 CRDs. That is no longer the case:
v1 Gateway and HTTPRoute have been available since Gateway API v1.0.0
(October 2023) and all major managed Kubernetes providers now serve them.

This change does NOT modify TLSRoute, TCPRoute, or UDPRoute, which
remain at v1alpha2. TLSRoute's migration to v1 depends on Gateway API
v1.5.0+ and is tracked separately in #6247.

* Updated Gateway API "Supported API Versions" section.

* Document minimum supported Gateway API CRD version

Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>

* Merge branch 'master' into gateway-api-v1

* Revised "Supported API Versions" Gateway API doc.

Incorporated review suggestions from @mloiseleur

* Removed extraneous empty links in import blocks

---------

Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
2026-04-06 17:47:30 +05:30
Isaac Wilson
e33ab8d46b
feat(gateway): add gateway-api listenerset support (#6254)
* Add listenerset support

Signed-off-by: jukie <10012479+Jukie@users.noreply.github.com>
Signed-off-by: jukie <isaac.wilson514@gmail.com>

* Add cross-namespace test

Signed-off-by: jukie <isaac.wilson514@gmail.com>

* lint

Signed-off-by: jukie <10012479+jukie@users.noreply.github.com>

* lint

Signed-off-by: jukie <10012479+jukie@users.noreply.github.com>

* Add flag to gate listenerset informer

Signed-off-by: jukie <10012479+jukie@users.noreply.github.com>

* generate docs

Signed-off-by: jukie <10012479+jukie@users.noreply.github.com>

* Include default behavior

Signed-off-by: jukie <10012479+jukie@users.noreply.github.com>

* Support listenerset target annotation

Signed-off-by: jukie <10012479+jukie@users.noreply.github.com>

* docs

Signed-off-by: jukie <10012479+jukie@users.noreply.github.com>

* feedback

Signed-off-by: jukie <10012479+Jukie@users.noreply.github.com>

* Update source/gateway_listenerset_test.go

Co-authored-by: Ivan Ka <5395690+ivankatliarchuk@users.noreply.github.com>

* Fix gateway labelFilter

Signed-off-by: jukie <10012479+Jukie@users.noreply.github.com>

* lint

Signed-off-by: jukie <10012479+Jukie@users.noreply.github.com>

* test case

Signed-off-by: jukie <10012479+Jukie@users.noreply.github.com>

* feedback

Signed-off-by: jukie <10012479+Jukie@users.noreply.github.com>

* lint

Signed-off-by: jukie <10012479+Jukie@users.noreply.github.com>

---------

Signed-off-by: jukie <10012479+Jukie@users.noreply.github.com>
Signed-off-by: jukie <isaac.wilson514@gmail.com>
Signed-off-by: jukie <10012479+jukie@users.noreply.github.com>
Co-authored-by: Ivan Ka <5395690+ivankatliarchuk@users.noreply.github.com>
2026-04-02 17:23:04 +05:30
Basil Pozdeev
e3d8983ed4
feat(azure): dns metadata (tags) support (#5984)
* feat: Add Azure DNS metadata (tags) support

* fix: address PR review comments for Azure metadata support

* test: add Azure metadata annotation test cases and fix prefix initialization

* Replace azure-metadata-* annotations with azure-tags

* refactor: move Azure tags parsing to provider package

Move provider-specific Azure tags annotation parsing from
source/annotations to provider/azure, following the same
pattern as Cloudflare tags handling.

* fix: use GetProviderSpecificProperty and handle duplicate tags

* fix: align with upstream Go 1.26 migration and short-form property names
2026-04-02 13:11:04 +05:30
dependabot[bot]
5211020450
chore(deps): bump the mkdocs-deps group in /docs/scripts with 3 updates (#6331)
Bumps the mkdocs-deps group in /docs/scripts with 3 updates: [mkdocs-material](https://github.com/squidfunk/mkdocs-material), [mkdocs-literate-nav](https://github.com/oprypin/mkdocs-literate-nav) and [mkdocs-same-dir](https://github.com/oprypin/mkdocs-same-dir).


Updates `mkdocs-material` from 9.7.5 to 9.7.6
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.5...9.7.6)

Updates `mkdocs-literate-nav` from 0.6.2 to 0.6.3
- [Release notes](https://github.com/oprypin/mkdocs-literate-nav/releases)
- [Commits](https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3)

Updates `mkdocs-same-dir` from 0.1.3 to 0.1.4
- [Release notes](https://github.com/oprypin/mkdocs-same-dir/releases)
- [Commits](https://github.com/oprypin/mkdocs-same-dir/compare/v0.1.3...v0.1.4)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mkdocs-deps
- dependency-name: mkdocs-literate-nav
  dependency-version: 0.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mkdocs-deps
- dependency-name: mkdocs-same-dir
  dependency-version: 0.1.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mkdocs-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-01 13:52:22 +05:30
Seena Fallah
736a2d58ae
feat!: generalize PTR record support from rfc2136 to all providers (#6232)
* feat(metrics): add source wrapper metrics for invalid and deduplicated endpoints

Add GaugeVecMetric.Reset() to clear stale label combinations between cycles.

Introduce invalidEndpoints and deduplicatedEndpoints gauge vectors in the
source wrappers package, partitioned by record_type and source_type. The
dedup source wrapper now tracks rejected (invalid) and de-duplicated
endpoints per collection cycle.

Update the metrics documentation and bump the known metrics count.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

* feat(source): add PTR source wrapper for automatic reverse DNS

Implement ptrSource, a source wrapper that generates PTR endpoints from
A/AAAA records. The wrapper supports:

- Global default via WithCreatePTR (maps to --create-ptr flag)
- Per-endpoint override via record-type provider-specific property
- Grouping multiple hostnames sharing an IP into a single PTR endpoint
- Skipping wildcard DNS names

Add WithPTRSupported and WithCreatePTR options to the wrapper Config
and wire the PTR wrapper into the WrapSources chain when PTR is in
managed-record-types.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

* feat(config): add --create-ptr flag and deprecate --rfc2136-create-ptr

Add the generic --create-ptr boolean flag to Config, enabling automatic
PTR record creation for any provider. Add IsPTRSupported() helper that
checks whether PTR is included in --managed-record-types.

Add validation: --create-ptr (or legacy --rfc2136-create-ptr) now
requires PTR in --managed-record-types, preventing misconfiguration.

Mark --rfc2136-create-ptr as deprecated in the flag description.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

* refactor(rfc2136): remove inline PTR logic in favor of PTR source wrapper

Remove the createPTR field, AddReverseRecord, RemoveReverseRecord, and
GenerateReverseRecord methods from the rfc2136 provider. PTR record
generation is now handled generically by the PTR source wrapper before
records reach the provider.

Update the PTR creation test to supply pre-generated PTR endpoints
(simulating what the source wrapper produces) instead of relying on
the provider to create them internally.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

* feat(controller): wire PTR source wrapper into buildSource

Pass the top-level Config to buildSource so it can read IsPTRSupported()
and the CreatePTR / RFC2136CreatePTR flags. When PTR is in
managed-record-types, the PTR source wrapper is installed in the
wrapper chain with the combined create-ptr default.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

* chore(pdns): remove stale comment and fix whitespace

Remove an outdated comment about a single-target-per-tuple assumption
that no longer applies.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

* docs: add PTR records documentation and update existing guides

Add docs/advanced/ptr-records.md covering the --create-ptr flag,
per-resource annotation overrides, prerequisites, and usage examples.

Update:
- annotations.md: document record-type annotation
- flags.md: add --create-ptr, mark --rfc2136-create-ptr as deprecated
- tutorials/rfc2136.md: point to generic --create-ptr flag
- contributing/source-wrappers.md: add PTR wrapper to the chain
- mkdocs.yml: add PTR Records navigation entry

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

* feat(rfc2136)!: remove rfc2136-create-ptr in favor of create-ptr

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

---------

Signed-off-by: Seena Fallah <seenafallah@gmail.com>
2026-03-30 13:36:16 +05:30
Ivan Ka
f1d771815f
feat(client): add --kube-api-qps and --kube-api-burst flags for Kubernetes client rate limiting (#6322)
* feat(client): add --kube-api-qps and --kube-api-burst flags for Kubernetes client rate limiting

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(client): add --kube-api-qps and --kube-api-burst flags for Kubernetes client rate limiting

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(client): add --kube-api-qps and --kube-api-burst flags for Kubernetes client rate limiting

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(client): add --kube-api-qps and --kube-api-burst flags for Kubernetes client rate limiting

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(client): add --kube-api-qps and --kube-api-burst flags for Kubernetes client rate limiting

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(client): add --kube-api-qps and --kube-api-burst flags for Kubernetes client rate limiting

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(client): add --kube-api-qps and --kube-api-burst flags for Kubernetes client rate limiting

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-30 02:40:12 +05:30
Ivan Ka
56e00e6667
perf(source/istio): replace API calls with indexed informer cache for gateway and virtualservice sources (#6303)
* perf(source/istio): replace API calls with indexed informer cache for gateway and virtualservice sources

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* perf(source/istio): replace API calls with indexed informer cache for gateway and virtualservice sources

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-28 14:04:13 +05:30
Ivan Ka
2c46340270
docs(aws): tutorial with kind and localstack (#6048)
* docs(aws): tutorial with kind and localstack

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* remove dependencies

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(aws): tutorial with kind and localstack

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(aws): tutorial with kind and localstack

Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>

* docs(aws): tutorial with kind and localstack

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(aws): tutorial with kind and localstack

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(aws): tutorial with kind and localstack

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(aws): tutorial with kind and localstack

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
2026-03-24 14:12:15 +05:30
Ivan Ka
8533f19606
docs(metrics): add Labels column to metrics documentation table (#6306)
* docs(metrics): add Labels column to metrics documentation table

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(metrics): add Labels column to metrics documentation table

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(metrics): add Labels column to metrics documentation table

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-24 05:04:17 +05:30
Seena Fallah
ba0baebade
docs: add BIND9 on Kubernetes with Kind tutorial for rfc2136 provider (#6295)
* docs: add BIND9 on Kubernetes with Kind tutorial for rfc2136 provider

Add a step-by-step guide for deploying BIND9 and ExternalDNS inside
a local Kind cluster, covering forward (A) and reverse (PTR) DNS
zones with TSIG authentication.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

* docs: apply suggestions for bind9 tutorial

Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>

---------

Signed-off-by: Seena Fallah <seenafallah@gmail.com>
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
2026-03-22 16:16:13 +05:30
Ivan Ka
177a4db07b
feat(source/istio)!: migrate gateway and virtualservice sources to networking.istio.io/v1 (#6302)
* feat(source/istio): migrate gateway and virtualservice sources to networking.istio.io/v1

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source/istio): migrate gateway and virtualservice sources to networking.istio.io/v1

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source/istio): migrate gateway and virtualservice sources to networking.istio.io/v1

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source/istio): migrate gateway and virtualservice sources to networking.istio.io/v1

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source/istio): migrate gateway and virtualservice sources to networking.istio.io/v1

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source/istio): migrate gateway and virtualservice sources to networking.istio.io/v1

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-22 00:44:14 +05:30
Ivan Ka
475cb2dd8b
feat(informers): reduce informer cache memory footprint via object transformers (#6240)
* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transfomers

Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>

* feat(informers): reduce informer cache memory footprint via object transfomers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(informers): reduce informer cache memory footprint via object transformers

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
2026-03-21 20:26:13 +05:30
Ivan Ka
1c9913bbdb
chore(deps): tools bump and process in contributor docs (#6118)
* chore(deps): tools bump

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(deps): tools bump

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(deps): tools bump

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(deps): tools bump

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(deps): tools bump

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(deps): tools bump

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(deps): tools bump

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-20 22:20:14 +05:30
Ivan Ka
19263ee9f0
fix(webhook): connection pool leaks, stuck goroutines on server hang, and retry correctness (#6279)
* fix(webhook): connection leaks, goroutine leaks, and retry correctness

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(webhook): connection leaks, goroutine leaks, and retry correctness

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(webhook): connection leaks, goroutine leaks, and retry correctness

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(webhook): connection leaks, goroutine leaks, and retry correctness

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(webhook): connection leaks, goroutine leaks, and retry correctness

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(webhook): connection leaks, goroutine leaks, and retry correctness

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(webhook): connection leaks, goroutine leaks, and retry correctness

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(webhook): connection leaks, goroutine leaks, and retry correctness

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(webhook): connection leaks, goroutine leaks, and retry correctness

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-20 16:04:14 +05:30
Ivan Ka
083b6e9a12
docs(sources): surface provider-specific annotations support in documentation (#6231)
* docs(sources): surface provider-specific annotations support it in source documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(sources): surface provider-specific annotations support it in source documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(sources): surface provider-specific annotations support it in source documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(sources): surface provider-specific annotations support it in source documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(sources): surface provider-specific annotations support it in source documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(sources): surface provider-specific annotations support it in source documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(sources): surface provider-specific annotations support in documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(sources): surface provider-specific annotations support in documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(sources): surface provider-specific annotations support in documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(sources): surface provider-specific annotations support in documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-19 19:04:31 +05:30
Ivan Ka
de04f349d7
docs: add operational best practices guide (#6287)
* docs: add operational best practices guide

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs: add operational best practices guide

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs: add operational best practices guide

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs: add operational best practices guide

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs: add operational best practices guide

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-19 16:18:31 +05:30
Ivan Ka
ede1c09086
feat(metrics): added skipped_records_owner_mismatch_per_sync to track ownership conflicts (#6121)
* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_total

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track ownership conflicts

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track ownership conflicts

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track ownership conflicts

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(metrics): added skipped_records_owner_mismatch_per_sync to track ownership conflicts

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-18 20:32:33 +05:30
Ivan Ka
13e58d52b0
fix(docs): flags (#6288)
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-17 20:25:40 +05:30
Oleksandr Simonov
18c451cf87
chore(digitalocean)!: remove in-tree provider (#6283) 2026-03-17 14:11:39 +05:30
Ivan Ka
604b79de4a
docs(fqdn-template): clarify fields and add examples (#6098)
* docs(fqdn): update fqdn documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(fqdn): update fqdn documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(fqdn): update fqdn documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(fqdn): update fqdn documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(fqdn): update fqdn documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(fqdn): update fqdn documentation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-17 03:07:38 +05:30
Ivan Ka
867fe74145
docs(regexfilter): pitfalls in domain-filter zone partitioning (#6255)
* test(pdns): regex pitfalls in domain-filter zone partitioning

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* test(pdns): regex pitfalls in domain-filter zone partitioning

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* test(pdns): regex pitfalls in domain-filter zone partitioning

I'll enable https://github.com/ldez/usetesting

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* test(pdns): regex pitfalls in domain-filter zone partitioning

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* test(pdns): regex pitfalls in domain-filter zone partitioning

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* test(pdns): regex pitfalls in domain-filter zone partitioning

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* test(pdns): regex pitfalls in domain-filter zone partitioning

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* test(pdns): regex pitfalls in domain-filter zone partitioning

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(regexfilter): pitfalls in domain-filter zone partitioning

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* docs(regexfilter): pitfalls in domain-filter zone partitioning

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
2026-03-17 02:37:36 +05:30
Ivan Ka
8bea2e4127
chore(deps): bump pre-commit and fix markdown docs (#6241)
* deps(pre-commit): bump pre-commit

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* deps(pre-commit): bump pre-commit, fix linter markdown issues

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* deps(pre-commit): bump pre-commit, fix linter markdown issues

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* deps(pre-commit): bump pre-commit, fix linter markdown violations

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* deps(pre-commit): bump pre-commit, fix linter markdown violations

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* deps(pre-commit): bump pre-commit, fix linter markdown violations

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* deps(pre-commit): bump pre-commit, fix linter markdown violations

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* deps(pre-commit): bump pre-commit, fix linter markdown violations

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-17 02:07:39 +05:30
Ivan Ka
3f42ce9716
chore(tests): Add YAML-driven integration test framework for sources (#6158)
* chore(tests): added cross source tests

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(tests): added cross source tests

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(tests): added cross source tests

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(tests): added cross source tests

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(tests): Add YAML-driven integration test framework for sources

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(tests): Add YAML-driven integration test framework for sources

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(tests): Add YAML-driven integration test framework for sources

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* chore(tests): Add YAML-driven integration test framework for sources

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(tests): Add YAML-driven integration test framework for sources

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
2026-03-16 15:19:38 +05:30
Ivan Ka
6cb3fba6b1
chore(set-identifier): expand annotation docs and add test coverage for dedup and merge behaviour (#6230)
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-16 13:55:38 +05:30
Ivan Ka
e1f848446d
feat(event): emit events for ingress,svc,pod,node,crd (#6099)
* refactore(kubeclient): consolidate duplicate code to ensure consistent client creation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* refactore(kubeclient): consolidate duplicate code to ensure consistent client creation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* refactore(kubeclient): consolidate duplicate code to ensure consistent client creation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* refactore(kubeclient): consolidate duplicate code to ensure consistent client creation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* refactore(kubeclient): consolidate duplicate code to ensure consistent client creation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* refactore(kubeclient): consolidate duplicate code to ensure consistent client creation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* refactore(kubeclient): consolidate duplicate code to ensure consistent client creation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* refactore(kubeclient): consolidate duplicate code to ensure consistent client creation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* refactore(kubeclient): consolidate duplicate code to ensure consistent client creation

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* refactore(source): move SuitableType to endpiont package

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): add support for svc,ingress,pod,node,crd

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* feat(event): add support for svc,ingress,pod,node,crd

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
2026-03-16 04:03:36 +05:30
Ivan Ka
45b4aa2d83
fix(source): filter provider-specific properties to configured provider (#6220)
* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* Apply suggestions from code review

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* fix(source): filter provider-specific properties to configured provider

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
2026-03-16 00:01:36 +05:30
Ivan Ka
6186987d33
docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors (#6249)
* docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(contributor): GetDomainFilter contract and ZoneCache blueprint for provider contributors

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-15 04:25:42 +05:30
David Kröll
fb323d9c91
docs: add anexia docs page (#6252) 2026-03-14 22:27:35 +05:30
dependabot[bot]
7d7d81e086
chore(deps): bump the mkdocs-deps group in /docs/scripts with 2 updates (#6273)
Bumps the mkdocs-deps group in /docs/scripts with 2 updates: [mkdocs-material](https://github.com/squidfunk/mkdocs-material) and [mike](https://github.com/jimporter/mike).


Updates `mkdocs-material` from 9.7.3 to 9.7.5
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.3...9.7.5)

Updates `mike` from 2.1.3 to 2.1.4
- [Release notes](https://github.com/jimporter/mike/releases)
- [Changelog](https://github.com/jimporter/mike/blob/master/CHANGES.md)
- [Commits](https://github.com/jimporter/mike/compare/v2.1.3...v2.1.4)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mkdocs-deps
- dependency-name: mike
  dependency-version: 2.1.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mkdocs-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-14 22:17:35 +05:30
Ivan Ka
f0067bef1d
fix(service): classify nodes by best pod state in externalTrafficPolicy=Local (#6271)
* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(service): classify nodes by best pod state in externalTrafficPolicy=Local

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-14 21:55:35 +05:30
Ivan Ka
5f81c5bc97
docs: add bug report guide and improve issue template (#6272)
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-14 21:43:35 +05:30
Charles Anderson
ca58d993af
feat(cloudflare): support batch API for DNS record changes (#6208)
* feat(cloudflare): add --batch-change-size and --batch-change-interval flags

Adds two new global CLI flags for controlling batch DNS change behaviour:
- --batch-change-size (default 200): maximum number of DNS operations per batch
- --batch-change-interval (default 1s): pause between consecutive batch chunks

Wires the flags through Config into the Cloudflare provider's DNSRecordsConfig.

* feat(cloudflare): implement batch DNS records API with automatic fallback

Uses Cloudflare's Batch DNS Records API to submit all creates, updates, and
deletes for a zone in a single transactional API call per chunk, significantly
reducing the total number of requests made against the Cloudflare API.

- Batch size and interval are controlled via --batch-change-size / --batch-change-interval
- Record types unsupported by the batch PUT endpoint (e.g. SRV, CAA) are
  submitted individually via the standard API
- If a batch chunk is rejected by Cloudflare, ExternalDNS automatically retries
  each record change in that chunk individually so no changes are silently lost
- Adds cloudflare_batch.go with the core batching logic and full test coverage

* feat(cloudflare): soft retry for 'unexpected EOF' (issue 3798)

* feat(cloudflare): soft retry for 'unexpected EOF' (issue 3798)

* feat(cloudflare): debug logs for intentional invididual-updates

* feat(cloudflare): improved code coverage

* feat(cloudflare): handle json.Encoder error in test helper
2026-03-12 22:21:36 +05:30
Xiuming Chen
5bfab70cd2
docs: correct pod internal-hostname behavior in hostNetwork mode (#6256)
* docs: correct pod internal-hostname behavior in hostNetwork mode

* test(pod): add internal-hostname regressions for host-network and non-host-network

* docs: add internal-hostname annotation use cases
2026-03-12 13:09:35 +05:30
Ivan Ka
c35ed0b82a
feat(source): add unstructured source (#6172)
* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* feat(source): add unstructured source

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* Update docs/sources/unstructured.md

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(source): add unstructured source

* feat(source): add unstructured source

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
2026-03-12 05:23:33 +05:30
dependabot[bot]
35c59365b5
chore(deps): bump mkdocs-material (#6237)
Bumps the mkdocs-deps group in /docs/scripts with 1 update: [mkdocs-material](https://github.com/squidfunk/mkdocs-material).


Updates `mkdocs-material` from 9.7.1 to 9.7.3
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.7.1...9.7.3)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-version: 9.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mkdocs-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-01 14:36:12 +05:30
Kai Udo
a4e167973c
feat(endpoint): reject alias property on unsupported record types (#6188)
* feat(endpoint): reject alias property on unsupported record types

Signed-off-by: u-kai <76635578+u-kai@users.noreply.github.com>

* refactor(endpoint): rename supportAlias to supportsAlias and extract alias constant

Signed-off-by: u-kai <76635578+u-kai@users.noreply.github.com>

* test(endpoint): add alias warning log assertion cases

Signed-off-by: u-kai <76635578+u-kai@users.noreply.github.com>

* test(wrappers): add alias cases to dedup validation and warn tests

Signed-off-by: u-kai <76635578+u-kai@users.noreply.github.com>

* refactor(endpoint): use providerSpecificAlias constant in tests

Signed-off-by: u-kai <76635578+u-kai@users.noreply.github.com>

* docs(annotations): note alias annotation is limited to A, AAAA, and CNAME

Signed-off-by: u-kai <76635578+u-kai@users.noreply.github.com>

---------

Signed-off-by: u-kai <76635578+u-kai@users.noreply.github.com>
2026-02-28 23:41:30 +05:30
Vyacheslav Klimov
f4c758665b
feat(pdns): add --[no-]prefer-alias flag and alias annotation support (#6129)
* feat: add support for expand alias in pdns provider

* feat: codereview

* feat: rewrite docs

* feat: gofmt

* feat: rewrite using postprocessor

* feat: gofmt

* feat: update docs

* fix: prefer-alias respects existing annotations

* feat: update formatting verbs

* fix: fix return values and call sites after convertRRSetToEndpoints signature change

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: remove unused error return from convertRRSetToEndpoints

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-26 17:38:27 +05:30
Ivan Ka
947c25daf6
fix(crd): allow trailing dot in CNAME targets (#6218)
* fix(crd): allow trailing dot in CNAME targets

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(crd): allow trailing dot in CNAME targets

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(crd): allow trailing dot in CNAME targets

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(crd): allow trailing dot in CNAME targets

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-02-26 12:44:23 +05:30
Volker Hartmann
b9aba54e8f
feat(crd): Support MX record with trailing dot (#6163)
* Support MX record with trailing dot

* refactor(crd): Replace nested if statements with switch case; add test for target without trailing dot
2026-02-23 01:16:58 +05:30
dependabot[bot]
d38daef2a6
chore(deps): bump mkdocs-git-revision-date-localized-plugin (#6161)
Bumps the mkdocs-deps group in /docs/scripts with 1 update: [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin).


Updates `mkdocs-git-revision-date-localized-plugin` from 1.5.0 to 1.5.1
- [Release notes](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/releases)
- [Commits](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin/compare/v1.5.0...v1.5.1)

---
updated-dependencies:
- dependency-name: mkdocs-git-revision-date-localized-plugin
  dependency-version: 1.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mkdocs-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-01 14:06:24 +05:30
Zvi Cahana
d40b200e79
docs(fqdn): use correct arguments order in FQDN Templating custom functions (#6144)
* Fix args ordering in FQDN Templating guide

* Add test cases for FQDN templates executions

* Fix unit test to use the correct template function
2026-01-30 14:49:44 +05:30
Ivan Ka
a174cc03d4
docs(source): autogenerate docs for events (#6119)
* docs(source): autogenerate docs for events

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(source): autogenerate docs for events

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(source): autogenerate docs for events

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(source): autogenerate docs for events

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(source): autogenerate docs for events

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(source): autogenerate docs for events

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(source): autogenerate docs for events

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* docs(source): autogenerate docs for events

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-01-21 16:37:28 +05:30
Ivan Ka
12ad9f94d8
feat(event): standardize event messages and add resource kind lookup for events (#6101)
* feat(event): standardize event messages and add Kind lookup

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): standardize event messages and add Kind lookup

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): standardize event messages and add Kind lookup

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): standardize event messages and add Kind lookup

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* feat(event): standardize event messages and add Kind lookup

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-01-16 05:11:11 +05:30
Andy Hay
3dd839a33e
chore(cloudflare): migrate customhostname to v5 (#5891)
* chore(cloudflare): migrate customhostname to v5

* style: use range instead of loop

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* style: remove extra space

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* style: spelling

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* test(cloudflare): restore missing tests dropped during merge

* style: use t.Context() and t.Parallel() in restored tests

* refactor(cloudflare): split submitCustomHostnameChanges to reduce complexity

* style: apply gofmt to restored tests

* test: restore valid tests from master and append custom ones

* fix(cloudflare): migrate tests to v5 SDK error types and fix PerPage handling

- Replace all cloudflarev0.Error usages with cloudflare.Error in tests
- Remove unused cloudflarev0 import
- Fix getDNSRecordsMap to use PerPage configuration
- Add early return in convertCloudflareError for structured v5 errors
- Update TestConvertCloudflareError to handle v5 error types safely
- Remove ErrorCodes field from error structs (not in v5 SDK)

Signed-off-by: Andrew Hay <andrew.hay@benchmarkanalytics.com>

* style(cloudflare): apply gofmt formatting

Signed-off-by: Andrew Hay <andrew.hay@benchmarkanalytics.com>

* Update provider/cloudflare/cloudflare_test.go

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* test: add to test

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* fix: change context

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* style: use short variable declaration operator instead of var

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* refactor(cloudflare): address PR review feedback

- Remove SDK migration status section from cloudflare.md (per vflaux and ivankatliarchuk)
- Add newCloudflareError() helper for proper v5 SDK error testing
- Move ExampleDomain, TestGroupByNameAndTypeWithCustomHostnames_MX, and
  TestProviderPropertiesIdempotency back to original locations to minimize diff

* test: add customhostname test

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* refactor: make CustomHostname types package-internal

* style: fix gofmt formatting

* Update .gitignore

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

---------

Signed-off-by: Andrew Hay <andrew.hay@benchmarkanalytics.com>
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
2026-01-15 01:59:37 +05:30
bogdankrasko
fd70df92ab
feat(source): gateway api hostname source annotation (#5959)
* feat: Add gateway api source annotation

* fix: Fix unit tests

* Update docs/annotations/annotations.md

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

* fix: validate gateway-hostname-source and warn on invalid

* fix: Fix formating

---------

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
2026-01-11 23:36:03 +05:30
Jan Jansen
63296f5234
feat(coredns): rename ownerId and ownedBy to owner (#6032)
Signed-off-by: Jan Jansen <jan.jansen@gdata.de>
2026-01-11 01:17:56 +05:30
Ivan Ka
f6b14aabae
chore(aws): document and test behavior for ALB and NLB (#6063)
* chore(ingress): added tests to cover behaviour for AWS ALB and NLB

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(domain-exclusion): domain exclusion filter fix

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(ingress): added tests to cover behaviour for AWS ALB and NLB

* fix(domain-exclusion): domain exclusion filter fix

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(domain-exclusion): domain exclusion filter fix

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(domain-exclusion): domain exclusion filter fix

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* fix(domain-exclusion): domain exclusion filter fix

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>

* chore(ingress): added tests to cover behaviour for AWS ALB and NLB

Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
2026-01-08 13:31:40 +05:30