lukaszraczylo
dfe08b35d1
fix(controller): stop self-triggered reconcile loops
...
C2: updateLastSyncStatus wrote the sync-status annotation on every
successful reconcile. Because the source's watch predicate is the
'enabled' label (server-side filter), that Update fires a watch event
that re-enters Reconcile. With reconciled/error counts varying across
cycles, the value differs each time, so the API server bumps RV and
the loop never quiesces. Now skips the Update when the value matches
the existing annotation.
C3: NamespaceReconciler's happy-path returned RequeueAfter=3s
unconditionally. Every namespace in the cluster re-reconciled every
3 seconds forever, generating constant List calls per source kind.
Now returns ctrl.Result{}; cache-staleness windows are handled by
the manager's resync period and source freshness verification.
2026-05-02 22:39:09 +01:00
lukaszraczylo
99c0eccd53
fix: default verify-source-freshness=true; honor opt-out for glob
...
H1: --verify-source-freshness used to default to false, so any source
update whose annotation was still in the informer cache (5-20s lag)
would resolve the wrong target list. cleanupOrphanedMirrors then ran
against the stale list and missed orphans (manifested in e2e as
'Orphaned mirror in kubemirror-e2e-app-1 not deleted within timeout'
after target-namespaces was changed). Defaulting to true fixes the
race; the trade-off is one extra API read per stale-cache reconcile.
M2: ResolveTargetNamespaces glob branch checked filter.IsAllowed but
not the opt-out map, so a namespace labeled allow-mirrors=false would
still receive a mirror through patterns like 'app-*'. The 'all' branch
already had the guard; the glob branch now does too. Direct namespace
listings still bypass opt-out by design (explicit author intent).
2026-05-02 22:36:50 +01:00
lukaszraczylo
4277c8ac39
fix(controller): guard mirror deletion + enforce secret blacklist
...
C1: deleteAllMirrors used to issue a blind Delete on every namespace
matching the source name+GVK, which would destroy unrelated resources
(e.g. a 'default' SA, 'ca-bundle' ConfigMap) sharing the source name.
Now reads each candidate, verifies managed-by label and source-reference
annotation, and only deletes confirmed mirrors.
M1: BlacklistedSecretTypes was declared but never enforced. Enabling
mirroring on a service-account-token / bootstrap-token / helm release
Secret would mirror credentials cluster-wide. Now refused at Reconcile.
M3: deleteAllMirrors swallowed per-namespace errors and returned nil,
so callers removed the finalizer even on partial failure (orphans).
Errors are now joined and returned.
2026-05-02 22:35:40 +01:00
lukaszraczylo
b555d84d32
ci: bump go-version constraint to >=1.26
...
k8s.io/api v0.36.0 requires Go 1.26.0; autoupdate has been failing
since 2026-04-23 because setup-go's cached 1.25.9 fell behind.
2026-05-02 22:03:19 +01:00
lukaszraczylo and GitHub
30ffc823d9
Update go.mod and go.sum ( #32 )
2026-04-19 05:09:27 +01:00
lukaszraczylo and GitHub
c3450e2af2
Update go.mod and go.sum ( #31 )
2026-04-17 05:09:22 +01:00
lukaszraczylo and GitHub
d0857e4f4a
Update go.mod and go.sum ( #30 )
2026-04-16 05:10:11 +01:00
lukaszraczylo and GitHub
36c9e859af
Update go.mod and go.sum ( #29 )
2026-04-15 05:07:38 +01:00
lukaszraczylo and GitHub
05aacddeab
Update go.mod and go.sum ( #28 )
2026-04-10 05:08:23 +01:00
lukaszraczylo and GitHub
a9838e9156
Update go.mod and go.sum ( #27 )
2026-04-09 05:02:31 +01:00
lukaszraczylo and GitHub
317143c458
Update go.mod and go.sum ( #26 )
2026-03-31 05:04:13 +01:00
lukaszraczylo and GitHub
42358a3743
Update go.mod and go.sum ( #25 )
2026-03-20 03:54:18 +00:00
lukaszraczylo and GitHub
f2ecc5d56a
Update go.mod and go.sum ( #24 )
2026-03-19 03:57:48 +00:00
lukaszraczylo and GitHub
30de592c0c
Update go.mod and go.sum ( #23 )
2026-03-18 03:57:33 +00:00
lukaszraczylo and GitHub
ea405f44a2
Update go.mod and go.sum ( #22 )
2026-03-12 03:52:50 +00:00
lukaszraczylo and GitHub
f62bec57f5
Update go.mod and go.sum ( #21 )
2026-03-09 03:53:52 +00:00
lukaszraczylo and GitHub
c9cf81e4fd
Update go.mod and go.sum ( #20 )
2026-03-07 03:46:46 +00:00
lukaszraczylo and GitHub
7c8a12958d
Update go.mod and go.sum ( #19 )
2026-03-06 03:52:51 +00:00
lukaszraczylo and GitHub
0bac0f4645
Update go.mod and go.sum ( #18 )
2026-03-05 03:52:56 +00:00
lukaszraczylo and GitHub
afe6602ddd
Update go.mod and go.sum ( #17 )
2026-03-03 03:53:14 +00:00
lukaszraczylo and GitHub
91a1d05a92
Update go.mod and go.sum ( #16 )
2026-03-01 03:59:02 +00:00
lukaszraczylo and GitHub
3c7f25bc16
Update go.mod and go.sum ( #15 )
2026-02-28 03:44:26 +00:00
lukaszraczylo and GitHub
1a40783e36
Update go.mod and go.sum ( #14 )
2026-02-26 03:54:10 +00:00
lukaszraczylo and GitHub
56809700fb
Update go.mod and go.sum ( #13 )
2026-02-11 04:03:15 +00:00
lukaszraczylo and GitHub
5db9fa8653
Update go.mod and go.sum ( #12 )
2026-02-10 04:04:06 +00:00
lukaszraczylo and GitHub
1e4af7df0c
Update go.mod and go.sum ( #11 )
2026-02-09 03:59:24 +00:00
lukaszraczylo and GitHub
668a84b070
Update go.mod and go.sum ( #10 )
2026-02-07 03:51:55 +00:00
lukaszraczylo and GitHub
9dea7a1022
Update go.mod and go.sum ( #9 )
2026-01-28 03:40:46 +00:00
lukaszraczylo and GitHub
ba95e09f5c
Update go.mod and go.sum ( #8 )
2026-01-27 03:42:08 +00:00
lukaszraczylo and GitHub
53afeb8560
Update go.mod and go.sum ( #7 )
2026-01-20 03:39:57 +00:00
lukaszraczylo and GitHub
096dca47d1
improvements jan2025 ( #6 )
...
* feat(controller): add lazy watcher, improve resource usage and add pattern validation
- [x] Add cache sync health check for readiness probe verification
- [x] Create namespace lister with API reader support for fresh label queries
- [x] Add pattern validation with warning logs for invalid glob patterns
- [x] Implement lazy watcher initialization mode to scan for active resources
- [x] Add requeue delay to namespace reconciler for cache settlement
- [x] Replace custom containsString with slices.Contains from stdlib
- [x] Add structured logging context to reconcilers (kind, group, version)
- [x] Improve error variable naming for clarity in nested conditions
- [x] Add nil-safe label access in namespace reconciler setup
- [x] Add APIReader to namespace and source reconcilers for fresh data
- [x] Improve type assertions with proper error handling in mirror operations
- [x] Reorder struct fields for consistency and readability
- [x] Add comprehensive pattern validation tests and validation API
* feat(controller): add lazy watcher, improve resource usage and add pattern validation
- [x] Add circuit breaker for reconciliation failure tracking and prevention
- [x] Implement granular registration state tracking (not-registered, source-only, fully-registered)
- [x] Add lazy controller initialization for active resource types only
- [x] Consolidate namespace listing into single API call for efficiency
- [x] Add mirror creation verification to catch webhook rejections
- [x] Implement high-cardinality resource detection and warnings
- [x] Add source deletion check in mirror reconciler to prevent races
- [x] Preserve transformation annotations on errors in mirror reconciliation
- [x] Expand constants documentation with labels vs annotations design rationale
- [x] Add comprehensive test coverage for circuit breaker and registration states
- [x] Add mutation-safety tests for hash computation
* fixup! feat(controller): add lazy watcher, improve resource usage and add pattern validation
2026-01-14 13:07:11 +00:00
lukaszraczylo and GitHub
4f8e2783cf
Update go.mod and go.sum ( #5 )
2026-01-13 03:38:38 +00:00
lukaszraczylo and GitHub
0f74af4a07
Update go.mod and go.sum ( #4 )
2026-01-10 03:37:16 +00:00
lukaszraczylo and GitHub
a89fcd5726
Update go.mod and go.sum ( #3 )
2026-01-09 03:39:08 +00:00
lukaszraczylo and GitHub
a2aff5671e
Update go.mod and go.sum ( #2 )
2026-01-07 03:39:51 +00:00
lukaszraczylo and GitHub
1cda7c46be
Update go.mod and go.sum ( #1 )
2026-01-06 03:38:29 +00:00
lukaszraczylo
19e72e136a
Add lazy watcher, improving resource usage; update website.
2025-12-27 01:28:46 +00:00
lukaszraczylo
e560e183ec
fixup! Add missing traefik crd to the e2e test setup.
2025-12-26 18:09:12 +00:00
lukaszraczylo
7f1c490938
Add missing traefik crd to the e2e test setup.
2025-12-26 17:54:54 +00:00
lukaszraczylo
1d49573fd1
Fix the last tests
2025-12-26 17:44:57 +00:00
lukaszraczylo
2f5faddf04
Fix transformer handling logic and improve content hashing
2025-12-26 17:39:33 +00:00
lukaszraczylo
c8ebfe376b
Reliabity improvements.
2025-12-26 17:30:13 +00:00
lukaszraczylo
ceff0ed67f
CRD discovery, log noise reduction, e2e tests
2025-12-26 15:25:25 +00:00
lukaszraczylo
e822eb3e17
Compliment the reconciliation on annotation change with tests.
2025-12-26 01:42:16 +00:00
lukaszraczylo
c6bdc1f559
Remove targets if annotations on source have changed.
2025-12-26 01:35:46 +00:00
lukaszraczylo
54f4f9306c
fixup! fix: Mirrored resources managed by other operators.
2025-12-26 01:04:46 +00:00
lukaszraczylo
2dd34bf39e
fix: Mirrored resources managed by other operators.
2025-12-26 01:02:55 +00:00
lukaszraczylo
cdae3f7fd7
fixup! fixup! fixup! Utilise shared workflows.
2025-12-26 00:05:45 +00:00
lukaszraczylo
22572aed75
fixup! fixup! Utilise shared workflows.
2025-12-25 23:42:15 +00:00
lukaszraczylo
ca0cff3be3
fixup! Utilise shared workflows.
2025-12-25 23:20:03 +00:00
lukaszraczylo
7d2c113308
Utilise shared workflows.
2025-12-25 23:15:28 +00:00
lukaszraczylo
3e872dfdeb
Preparation for release.
2025-12-25 23:11:32 +00:00
lukaszraczylo
8adb52608f
initial commit
2025-12-25 22:10:57 +00:00