* 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>
* chore(source): remove cloudfoundry support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* chore(source): remove cloudfoundry support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* chore(source): remove cloudfoundry support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* chore(source): remove cloudfoundry support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* chore(source): remove cloudfoundry support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* chore(source): remove cloudfoundry support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* chore(source): remove cloudfoundry support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* chore(source): remove cloudfoundry support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
---------
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Co-authored-by: vflaux <38909103+vflaux@users.noreply.github.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* docs(source): autogenerate docs from sources attached to annotations
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>
* docs(proposal): Gateway API annotation placement clarity proposal
Addresses #5901
Related: #4056
Propose comprehensive solutions for Gateway API annotation placement confusion,
including both short-term documentation improvements and long-term annotation
inheritance strategy.
Documentation improvements are proposed separately in PR #5918 for quick merge.
Co-Authored-By: Claude <noreply@anthropic.com>
* docs(proposal): update Solution 2 to reflect reference implementation
- Change status from draft to provisional
- Add reference to PR #5998
- Update pseudocode: target annotation is now inheritable and overridable
- Update example to show intranet/public target override use case
- Add benefit: solves User Story 2 (per-Route target overrides)
- Update recommendation to include near-term merging of Solution 2
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
---------
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Co-authored-by: Claude <noreply@anthropic.com>
* feat(registry/txt): enable support for SRV and NAPTR
This enables support for SRV and NAPTR in the TXT registry.
* doc(crd): add example DNSEndpoint for SRV and NAPTR
* feat(coredns): use managed-by to separate records
Signed-off-by: Jan Jansen <jan.jansen@gdata.de>
* feat(coredns): use txt-owner-id to strictly separated external-dns instances
Signed-off-by: Jan Jansen <jan.jansen@gdata.de>
* fix tests
Signed-off-by: Jan Jansen <jan.jansen@gdata.de>
* fix reviewer comments
Signed-off-by: Jan Jansen <jan.jansen@gdata.de>
* answer review comments
* fix deletion behavior and remove extra function
* fix markdown
* fix tests again
---------
Signed-off-by: Jan Jansen <jan.jansen@gdata.de>
* 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>
Addresses #5901
Related: #4056
Add clear documentation on annotation placement for Gateway API sources
to prevent confusion about which annotations go on Gateway vs Route resources.
Changes:
- Add Gateway API Annotation Placement section to annotations.md
- Add Annotations section with examples to gateway-api.md
- Include Cloudflare and AWS provider examples
- Document common mistakes
Per review feedback, compressed annotations.md section to minimal size:
- Removed annotation placement matrix table
- Removed YAML examples
- Kept concise 2-line summary
- Kept link to comprehensive documentation
Co-authored-by: Claude <noreply@anthropic.com>
* docs: clarify hostname annotation behavior
* docs: specify how hostname annotation behavior can be configured
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
---------
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* Reintroduce base config for txt owner migration
# Conflicts:
# controller/execute.go
# registry/txt.go
# Conflicts:
# pkg/apis/externaldns/types.go
* Added label update logic and fixed existing tests
* Fixed existing declaration in tests, re introduced tests for new flag, regened flags.md from make
* Fixed tests logic and target expression evaluation, fixed update of label in the TXT registry process
* Set Old owner id var down the plan to calculate changes correctly
* Lint fixes
* (wip) Code cleaning and test coverage
* Simplified label overwriting on migration and implem tests for coverage
* Fix tests
* Update txt registry doc
* Fix rebase issues in txt test
* Update docs/registry/txt.md
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* Update docs/registry/txt.md
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* Update docs/registry/txt.md
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* Fix label overriding in TXT record generation when migration is enabled
* Make linter happy
* Regen flags, fix types tests after types updates
* Removed boolean flag that enabled migration, evaluate only against old owner flag instead
---------
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* fix(aws): warn on TXT AccessDenied due to ABAC
ExternalDNS writes TXT ownership records. ABAC missing TXT can cause 403
AccessDenied from Route 53.
* Update AWS ABAC docs to include TXT in record types
* Log entries when AccessDenied occurs and batch contains TXT
* Added unit tests for AccessDenied detection, TXT detection and logging
Refs: #5773
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* fix(aws): Drop prescriptive IAM warning
* Return the first Route 53 error from `submitChanges` so operators see
the original AWS message
* Remove IAM-guessing branch while keeping split-and-retry submission
* Tidy error test and fall back to `provider.NewSoftErrorf` when no AWS
error was captured
* Add tests for error return on failures upon zone submission
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* fix(aws): Remove TXT-specific error handling
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* fix(aws): Remove Route53 final error message
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* fix(aws): Remove unused import of `error`
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
---------
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* feat(cli): add Cobra binder and backend switch
* add FlagBinder with Kingpin and Cobra implementations
* support --cli-backend and EXTERNAL_DNS_CLI (default: kingpin)
* add tests for binders and CLI switch
Refs: #5379
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* feat(cli): centralize flag registration and add Cobra parity
Started moving CLI flag registration into a common binder function,
avoiding duplication between Kingpin and Cobra.
Refs: #5820
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* feat(cli): enforce Cobra parity with Kingpin
* Add `regexpValue` and `RegexpVar` to Cobra binder with
`setRegexpDefault`
* Enforce `--provider` presence and validate against `providerNames
* require at least one `--source` and validate against new
`allowedSources`
* Expand tests for Kingpin and Cobra
Refs: #5379
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* feat(cli): Commit go-lint edits
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* feat(cli): add kingpin vs cobra binder parity
* Test parity assertion across binders
* Test Cobra-specific incapabilities (`--no-<flag>` and env vars)
* Deduplicate regexp flag handling
Refs: #5379
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* feat(cli): Rebuild flags documentation
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
---------
Signed-off-by: Tobias Harnickell <tobias.harnickell@bedag.ch>
* 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
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* feat(source): add min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source): add min-ttl support
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
* feat(source/min-ttl): added min-ttl support
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* feat(source): add min-ttl support
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>
* scoping the AWS IAM policy to explicitely defined AWS Route53 zones
* Apply suggestions from code review
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* Update aws.md
* Update docs/tutorials/aws.md
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
* Update aws.md
breaking up lines to make it pass markdown linting
---------
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
Only grant endpointslices permissions when using service source and remove
outdated endpoints RBAC from provider tutorials.
Add rbac tests for the chart.