9 Commits

Author SHA1 Message Date
Aleksei Sviridkin
5a55b09f48
feat(annotations): add custom annotation prefix support for split horizon DNS (#5889)
* feat(annotations): add custom annotation prefix support for split horizon DNS

Add --annotation-prefix flag to allow customizing the annotation prefix
used by external-dns. This enables split horizon DNS scenarios where
multiple instances process different sets of annotations from the same
Kubernetes resources.

Changes:
- Add AnnotationPrefix field to Config with validation
- Convert annotation constants to variables that can be reconfigured
- Add SetAnnotationPrefix() function to rebuild annotation keys
- Integrate annotation prefix setting in controller startup
- Update Helm chart with annotationPrefix value
- Add comprehensive split horizon DNS documentation
- Update FAQ with annotation prefix examples

This maintains full backward compatibility - the default prefix remains
"external-dns.alpha.kubernetes.io/".

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

* docs(advanced): fix markdown formatting in split-horizon guide

Add blank lines before code blocks to improve markdown rendering
and comply with markdownlint rules.

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

* docs(advanced): fix markdown formatting in split-horizon guide

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

* docs(charts): regenerate Helm chart documentation

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

* test: add AnnotationPrefix field to test configs

Add missing AnnotationPrefix field to minimalConfig and overriddenConfig
test configurations to match the new default value set in NewConfig().

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

* test(charts): update error pattern in json-schema test

Update expected error message pattern to match current Helm validation
output format.

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

* refactor(annotations): remove init() for explicit initialization

- Remove init() function from annotations package
- Add explicit SetAnnotationPrefix() call in controller/execute.go
- Remove annotation key aliases from source/source.go
- Replace all alias usages with annotations.* references (348 changes in 28 files)
- Add TestMain to existing test files (service_test.go, cloudflare_test.go)

This change makes annotation initialization explicit and predictable,
avoiding hidden global state initialization at import time.

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

* docs: update changelog and mkdocs to include annotationPrefix and split horizon DNS

Signed-off-by: Aleksei Sviridkin <f@lex.la>

* docs(split-horizon): fix linting

Signed-off-by: Aleksei Sviridkin <f@lex.la>

* refactor(annotations): replace hardcoded annotation prefix with constant

Replace all hardcoded "external-dns.alpha.kubernetes.io/" strings
with annotations.DefaultAnnotationPrefix constant to establish
a single source of truth.

Changes:
- Add DefaultAnnotationPrefix constant in source/annotations/annotations.go
- Replace hardcoded string in controller/execute.go with constant reference
- Replace hardcoded strings in pkg/apis/externaldns/types.go (2 occurrences)
- Add helm unit tests for annotationPrefix value

This eliminates string duplication and makes future changes easier.

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

---------

Signed-off-by: Aleksei Sviridkin <f@lex.la>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-08 03:56:52 -08:00
Shkar T. Noori
275715d1cc
feat(source/f5-virtual-server): add host aliases support for Virtual … (#5745)
* feat(source/f5-virtual-server): add host aliases support for Virtual Server source

* fix: markdown lint

* fix: markdown lint

* refactor(source/f5_virtualserver): remove if check for array length, already taken care of by the iterator
2025-09-10 03:33:58 -07:00
Ivan Ka
36e3e53190
perf(source): benchmarks on EndpointTargetsFromServices (#5536)
* chore(benchmarking): added benchmarks to EndpointTargetsFromServices

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

* chore(benchmarking): added benchmarks to EndpointTargetsFromServices

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

* chore(benchmarking): added benchmarks to EndpointTargetsFromServices

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

* chore(benchmarking): added benchmarks to EndpointTargetsFromServices

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-06-19 15:31:00 -07:00
Mikael Johansson
6a04135cae
fix(f5): validate virtualservers and transportservers based on IP only (#5532) 2025-06-18 00:12:51 -07:00
dependabot[bot]
bcaf259533
chore(deps): bump the dev-dependencies group across 1 directory with 11 updates (#5484)
* chore(deps): bump the dev-dependencies group across 1 directory with 11 updates

Bumps the dev-dependencies group with 11 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/F5Networks/k8s-bigip-ctlr/v2](https://github.com/F5Networks/k8s-bigip-ctlr) | `2.19.1` | `2.20.0` |
| [github.com/civo/civogo](https://github.com/civo/civogo) | `0.5.1` | `0.5.3` |
| [github.com/digitalocean/godo](https://github.com/digitalocean/godo) | `1.148.0` | `1.150.0` |
| [github.com/go-logr/logr](https://github.com/go-logr/logr) | `1.4.2` | `1.4.3` |
| [github.com/goccy/go-yaml](https://github.com/goccy/go-yaml) | `1.17.1` | `1.18.0` |
| [github.com/linode/linodego](https://github.com/linode/linodego) | `1.50.0` | `1.52.0` |
| [github.com/oracle/oci-go-sdk/v65](https://github.com/oracle/oci-go-sdk) | `65.91.0` | `65.92.0` |
| [google.golang.org/api](https://github.com/googleapis/google-api-go-client) | `0.233.0` | `0.235.0` |
| [istio.io/api](https://github.com/istio/api) | `1.26.0` | `1.26.1` |
| [istio.io/client-go](https://github.com/istio/client-go) | `1.26.0` | `1.26.1` |
| [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) | `0.20.4` | `0.21.0` |



Updates `github.com/F5Networks/k8s-bigip-ctlr/v2` from 2.19.1 to 2.20.0
- [Release notes](https://github.com/F5Networks/k8s-bigip-ctlr/releases)
- [Changelog](https://github.com/F5Networks/k8s-bigip-ctlr/blob/master/docs/RELEASE-NOTES.rst)
- [Commits](https://github.com/F5Networks/k8s-bigip-ctlr/compare/v2.19.1...v2.20.0)

Updates `github.com/civo/civogo` from 0.5.1 to 0.5.3
- [Release notes](https://github.com/civo/civogo/releases)
- [Changelog](https://github.com/civo/civogo/blob/master/changelog.yml)
- [Commits](https://github.com/civo/civogo/compare/v0.5.1...v0.5.3)

Updates `github.com/digitalocean/godo` from 1.148.0 to 1.150.0
- [Release notes](https://github.com/digitalocean/godo/releases)
- [Changelog](https://github.com/digitalocean/godo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalocean/godo/compare/v1.148.0...v1.150.0)

Updates `github.com/go-logr/logr` from 1.4.2 to 1.4.3
- [Release notes](https://github.com/go-logr/logr/releases)
- [Changelog](https://github.com/go-logr/logr/blob/master/CHANGELOG.md)
- [Commits](https://github.com/go-logr/logr/compare/v1.4.2...v1.4.3)

Updates `github.com/goccy/go-yaml` from 1.17.1 to 1.18.0
- [Release notes](https://github.com/goccy/go-yaml/releases)
- [Changelog](https://github.com/goccy/go-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/goccy/go-yaml/compare/v1.17.1...v1.18.0)

Updates `github.com/linode/linodego` from 1.50.0 to 1.52.0
- [Release notes](https://github.com/linode/linodego/releases)
- [Commits](https://github.com/linode/linodego/compare/v1.50.0...v1.52.0)

Updates `github.com/oracle/oci-go-sdk/v65` from 65.91.0 to 65.92.0
- [Release notes](https://github.com/oracle/oci-go-sdk/releases)
- [Changelog](https://github.com/oracle/oci-go-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oracle/oci-go-sdk/compare/v65.91.0...v65.92.0)

Updates `google.golang.org/api` from 0.233.0 to 0.235.0
- [Release notes](https://github.com/googleapis/google-api-go-client/releases)
- [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md)
- [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.233.0...v0.235.0)

Updates `istio.io/api` from 1.26.0 to 1.26.1
- [Commits](https://github.com/istio/api/compare/1.26.0...1.26.1)

Updates `istio.io/client-go` from 1.26.0 to 1.26.1
- [Commits](https://github.com/istio/client-go/compare/1.26.0...1.26.1)

Updates `sigs.k8s.io/controller-runtime` from 0.20.4 to 0.21.0
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](https://github.com/kubernetes-sigs/controller-runtime/compare/v0.20.4...v0.21.0)

---
updated-dependencies:
- dependency-name: github.com/F5Networks/k8s-bigip-ctlr/v2
  dependency-version: 2.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: github.com/civo/civogo
  dependency-version: 0.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: github.com/digitalocean/godo
  dependency-version: 1.150.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: github.com/go-logr/logr
  dependency-version: 1.4.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: github.com/goccy/go-yaml
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: github.com/linode/linodego
  dependency-version: 1.52.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: github.com/oracle/oci-go-sdk/v65
  dependency-version: 65.92.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: google.golang.org/api
  dependency-version: 0.235.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
- dependency-name: istio.io/api
  dependency-version: 1.26.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: istio.io/client-go
  dependency-version: 1.26.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix tests

Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Raffaele Di Fazio <difazio.raffaele@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Raffaele Di Fazio <difazio.raffaele@gmail.com>
2025-06-03 12:42:39 -07:00
Ivan Ka
bdb51b2d96
chore(codebase): enable testifylint (#5441)
* chore(codebase): enable testifylint

* chore(codebase): enable testifylint

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

* chore(codebase): enable testifylint

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-05-21 03:46:34 -07:00
Mikael Johansson
9368a24a75
fix(f5-virtualserver): skip endpoint creation when VirtualServer is not ready (#4996)
* Skip endpoint creation if VirtualServer is not considered ready

Signed-off-by: Mikael Johansson <mik.json@gmail.com>

* Change to warning instead

Signed-off-by: Mikael Johansson <mik.json@gmail.com>

* Earlier return

---------

Signed-off-by: Mikael Johansson <mik.json@gmail.com>
2025-01-13 07:56:33 -08:00
John Gardiner Myers
4a32aaec01 Implement target annotation for more sources 2023-09-27 23:16:14 -07:00
Mikael Johansson
9a76be0202 Add F5 VirtualServer source 2023-03-14 10:23:56 +01:00