144 Commits

Author SHA1 Message Date
Ivan Ka
eb40149b99
test: improve code coverage (#6321)
* test: improve code coverage

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

* test: improve code coverage

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-29 23:46:12 +05:30
vflaux
c745bb044a
chore(go): upgrade to go1.26 (#6314)
* chore(go): upgrade to go1.26

* chore: use the new new() capability

* chore(lint): update golanci-lint

* chore(endpoint): add EndpointKey.String() test
2026-03-29 23:12:12 +05:30
Ivan Ka
d217706973
refactor(fqdn): encapsulate FQDN template logic into TemplateEngine (#6292)
* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(source): extract FQDN template logic into fqdn.TemplateEngine

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

* refactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

* refactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

* efactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

* refactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

* refactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

* refactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

* refactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

* refactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

* refactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

* refactor(fqdn): encapsulate FQDN template logic into TemplateEngine

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-23 19:40:19 +05:30
Ivan Ka
2c8b57eea4
refactor(test): deduplicate endpoint assertion helpers across source (#6299)
* refactor(test): deduplicate endpoint assertion helpers across source and integration tests

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

* refactor(test): deduplicate endpoint assertion helpers across source

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
2026-03-22 00:56:13 +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
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
7c909a015c
chore(source): standardize source fields with sources.Config (#6073)
* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

* chore(source): standardize sources with config

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-16 14:41:40 +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
e21f1389fb
linter(usetesting): enable usetesting (#6266)
* linter(usetesting): enable usetesting

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

* linter(usetesting): enable usetesting

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

* linter(usetesting): enable usetesting

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

* linter(usetesting): enable usetesting

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

* linter(usetesting): enable usetesting

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

* linter(usetesting): enable usetesting

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-03-14 22:07: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
a929ad6cc6
chore(linter): enable unparam (#6160)
* chore(linter): enable unparam

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

* chore(linter): enable unparam

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

* chore(linter): enable unparam

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

* chore(linter): enable unparam

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

* chore(linter): enable unparam

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

* chore(linter): enable unparam

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

* chore(linter): enable unparam

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

* chore(linter): enable unparam

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

* chore(linter): enable unparam

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-02-20 15:15:39 +05:30
Ivan Ka
f0db4c2587
fix(annotations): initialize annotation keys at declaration time (#6159)
* fix(annotations): allow resetting annotation prefix to default value

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

* fix(annotations): allow resetting annotation prefix to default value

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

* fix(annotations): allow resetting annotation prefix to default value

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2026-02-01 04:38:25 +05:30
Ivan Ka
b304dfe37d
chore(linter): unused params and functions linter (#6142)
* chore(linter): enable unused

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

* chore(linter): enable unusedparam

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

* chore(linter): enable unusedparam

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

* chore(linter): enable unusedparam

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

* chore(linter): enable unusedparam

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

* chore(linter): enable unusedparam

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

* chore(linter): enable unusedparam

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

* chore(linter): enable unusedparam

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

* chore(linter): enable unusedparam

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

* chore(linter): enable unusedparam

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-01-31 23:20:24 +05:30
Ivan Ka
a23f2d5a9a
chore(lint): configure modernize linter (#6035)
* chore(lint): configure modernize linter

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

* chore(lint): configure modernize linter

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

* chore(lint): modernize linter

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

* chore(lint): configure modernize linter

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-12-27 22:04:33 +05:30
Ivan Ka
690259f3a9
feat(service): ignore unschedulable (#6002)
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-12-14 06:29:43 -08:00
Christian Rohmann
fde978f2d8
fix: append dot to the target of SRV records as required by RFC 2782 (#5534)
According to RFC2782 [1], SRV records are to be fully-qualified,
ending with a final dot. Most providers are liberal, but e.g. OpenStack
Designate expects targets to end with a dot ([2])

[1] https://datatracker.ietf.org/doc/html/rfc2782
[2] a891d81974/designate/objects/fields.py (L235-L236)

Signed-off-by: Christian Rohmann <christian.rohmann@inovex.de>
2025-11-20 23:28:33 -08:00
Ivan Ka
1ce3d4e705
fix(service): rollback nodeinformer for addevent handler (#5941)
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-11-08 04:16:52 -08:00
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
Ivan Ka
1f9edcb7fc
test(source/service): add serviceTypeFilter edge case (#5872)
* chore(source/service): serviceTypeFilter edge case tests

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

* chore(source/service): serviceTypeFilter edge case tests

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-09-30 01:26:19 -07:00
Andrew Hay
6cf328f037
refactor(service): reduce cyclomatic complexity of extractHeadlessEndpoints (#5822)
* feat: reduce cyclomatic complexity of service_test

* style: indention added

* style: tab

* refactor: address PR feedback, improve tests, and reduce complexity

* fix(service): address PR feedback and fix linting

* Revert "fix(service): address PR feedback and fix linting"

This reverts commit 4cba488dc741ee1d946b105da952c09893c289c4.

* refactor: address all PR feedback - improve method naming, add test coverage, fix parameter ordering

* refactor: address latest PR feedback - convert to method, use testutils, add test coverage

* test: add coverage for pod hostname scenario

Addresses 4th to last PR comment about missing test coverage for
the case where pod.Spec.Hostname is set, which creates additional
headless domains (pod-specific hostname + base hostname)

* style: remove extra line

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

* style: remove extra line

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

---------

Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
2025-09-23 00:04:16 -07:00
Ivan Ka
4de8bd6fde
fix(endpoint): deduplicate targets (#5805)
* fix(deduplicate): deduplicate targets

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

* fix(deduplicate): deduplicate targets

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

* fix(deduplicate): deduplicate targets

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

* fix(deduplicate): deduplicate targets

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

* fix(deduplicate): deduplicate targets

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

* fix(deduplicate): deduplicate targets

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

* fix(deduplicate): deduplicate targets

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-09-08 05:01:31 -07:00
Valerian Roche
111df9f1fb
feat(source): use transformers in pod informers to reduce memory footprint (#5596)
* feat: use transformers in pod informers to reduce memory footprint

Add a transformer to the pods informer of the pod and service sources.

Refs: #5595

Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>

* Do not use transformer when fqdnTemplate is set

* Update source/pod_test.go

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

---------

Signed-off-by: Valerian Roche <valerian.roche@datadoghq.com>
Co-authored-by: Michel Loiseleur <97035654+mloiseleur@users.noreply.github.com>
2025-08-09 01:51:44 -07:00
Ivan Ka
1b9d7cddc0
fix(source/service): disable pod and endpointSlices informers when they are not needed (#5646)
* fix(source/service): disable pod and endpointSlicesInformer when not required

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

* fix(source/service): disable pod and endpointSlicesInformer when not required

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

* fix(source/service): disable pod and endpointSlices informers when they are not needed

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

* fix(source/service): disable pod and endpointSlices informers when they are not needed

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

---------

Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-07-30 01:54:28 -07:00
Jonas Badstübner
30cbbc0e75
refactor: handle internal IPv6 addresses on nodeport services consistently with --expose-internal-ipv6 flag (#5652) 2025-07-18 10:16:32 -07:00
Ivan Ka
1bfb970ace
fix(source/service): disable node informer when not required (#5613)
* fix(source/service): disable node informer when service type filter is activated

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

fix(source/service): disable node informer when service type filter is activated

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

fix(source/service): disable node informer when service type filter is activated

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

fix(source/service): disable node informer when service type filter is activated

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

* fix(source/service): disable node informer when service type filter is activated

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

* fix(source/service): disable node informer when service type filter is activated

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>
2025-07-11 10:15:28 -07:00
Ivan Ka
9045e45bc3
fix(source/service): make sure only unique targets pushed to registry (#5614)
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-07-07 23:05:27 -07:00
vflaux
ef6e0e5e1e
feat(source): use EndpointSlices instead of Endpoints for Service (#5493)
* feat(source): use EndpointSlice for Service source

* feat(source): use indexer for EndpointSlice listing
2025-06-19 03:06:52 -07:00
Ivan Ka
7aca4dc6a3
chore(source/service): add resource label without looping over (#5528)
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
2025-06-15 14:28:58 -07:00
Ivan Ka
0d1108f5d7
chore(source/service): restructure code to make service type filters testable (#5485)
* chore(source/service): restructure code with filters are testable

* chore(source/service): restructure code with filters are testable

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

* chore(source/service): restructure code with filters are testable

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>
2025-06-01 12:00:13 -07:00
ivan katliarchuk
11fd3a87aa
chore(codebase): enable copyloopvar 2025-05-20 09:37:39 +01:00
Kevin Valk
e379fe172e
refactor: handle internal IPv6 addresses consistently with --expose-internal-ipv6 flag throughout all sources 2025-05-14 17:15:47 +02:00
ivan katliarchuk
9f427e5622
chore(source): code cleanup 2025-04-16 13:50:04 +01:00
Dan Markhasin
87464189b3 Enable reconcile on endpoint events 2025-02-02 23:42:50 +02:00
Michel Loiseleur
5561d916b1 refactor test following review 2025-01-19 12:16:41 +01:00
Michel Loiseleur
cc546820dc chore(ci): fix failing test, upgrade to go 1.23.5 and linter to v1.63 2025-01-17 21:05:08 +01:00
Diana Tuck
7e10c80323
Do not merge CNAME targets into one endpoint per RFC-1034 2024-11-07 11:23:50 -08:00
Michel Loiseleur
cbd281f81b fix: use current local dns resolution 2024-04-19 17:35:27 +02:00
Michel Loiseleur
9ff2223625 chore(ci): fix failing test 2024-04-19 16:57:14 +02:00
Eric Bailey
3fac88bd64 fix(service): omit nil endpoints and prefer endpointsForHostname()
Also add a test with an invalid hostname.
2024-03-04 17:38:29 +01:00
Nandor Galambosi
04e92c5556 Testcase for dualstack externalIPs added 2023-11-09 21:48:36 +01:00
Nandor Galambosi
d7b0dfd781 service source uses externalIPs in ExternalName type if available 2023-10-29 10:58:46 +01:00
John Gardiner Myers
7044fdf040 Use ServiceIP for ClusterIP Services with internal-hostname annotation 2023-09-16 17:33:30 -07:00
Timofey Titovets
2a1f7a4de7 fix(source_test.go): add missing pod status tests 2023-08-29 19:16:51 +02:00
Timofey Titovets
f696c514db fix: nodePort #2704 - publish ready endpoints
fix: lowercase local functions
chore: reuse nodes, cut logs
2023-08-29 19:16:51 +02:00
Kubernetes Prow Robot
fd501ddd7c
Merge pull request #3600 from johngmyers/ipv6-headless
Support AAAA records from headless services
2023-05-19 06:44:30 -07:00
Gabriel Martinez
599590c141
add AAAA tests 2023-05-11 12:05:54 +01:00
Gabriel Martinez
9bbebf6c07
Merge remote-tracking branch 'remote/master' into target_annotation_for_service 2023-05-11 11:53:20 +01:00
John Gardiner Myers
47a0f74f61 Add test for IPv6 ExternalName service 2023-05-10 13:23:53 -07:00
John Gardiner Myers
41c705e471 Support AAAA records from headless services 2023-05-10 13:23:51 -07:00
John Gardiner Myers
683663e9c2 IPv6 internal node IPs are usable externally 2023-05-07 12:00:28 -07:00