Repository navigation
feat: port upstream reconciliation efficiency, failure backoff, multicluster naming and image cleanup - #65
Merged
pando85 merged 47 commits intoOct 13, 2026
Conversation
|
⏸️ CI Auto-Fix paused Maximum consecutive fix attempts (3/3) reached for this PR without success. You can:
To configure the maximum attempts, go to Repository Settings > Automation > CI Auto-Fix. |
pando85
marked this pull request as ready for review
October 13, 2026 10:15
|
✅ Fix pushed: All CI issues from commit
Current state:
No additional changes needed. The branch is up to date with origin. |
…tion; retry unassigned LB ingress promptly
…placement and observe deletions
…le handling slice deletion via metadata watch
… and preserved backoff
…g with fixed polling
pando85
deleted the
feat/upstream-operability-and-multicluster-2026-10
branch
October 13, 2026 13:31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
Single integration PR adapting six upstream changes on top of Forkline's existing UID-only ownership, safe capacity handling, and Warning Event throttling:
robotlb/annotations, targets and ports; bypass Hetzner calls on unchanged events; retain periodic drift resyncLocalbehaviorUpstream provenance
Ported or adapted from original upstream commits:
5f018d335edee086f06f2c137805d0eb7503d9b1(release: Version 0.7.1 #72)058bc73f6768fb853ff086dd135be78b7653522c(Fix dashboard #55)dc37dcfdb31dea7a47e40e5916fa1d24b24b63bf(fix(ci): correct action field order in auto-tag workflow #49)c952b745ebddde1f2cf11e2344f2d3e497db0cdd(maintainability #58)5ca9e1738bec5c264f233355af1f2a42b64c0503(refactor(lb): separate typed desired state from cloud execution #68)Original SHAs were not cherry-picked verbatim, because upstream PRs were stacked on older, incompatible controller structures and are in a separate GitHub repository. Each port has a commit referencing the upstream SHA; the existing Forkline commits and ancestry remain intact.
Review follow-up: controller correctness
Addresses the three issues found in the deep review:
LocalServices retain Pod-based placement and ignore readiness/address churn on the same nodes; selectorlessLocalServices continue to follow ready endpoints. A metadata-only watch detects slice deletions and missed deletions on relist.New tests cover the deferred outcome, backoff resets, mapping modes, readiness/address churn and slice deletions.
The Dockerfile now builds with
--locked; CI builds the final release image and checks shared-library linkage androbotlb --help.Safety and compatibility
Localtarget selection is unchanged; Node watches only trigger reconciliation.Validation
Run
cargo fmt,cargo clippy --all-targets -- -D warnings,cargo test --all-targets --locked, Helm unit tests and container build.Final review follow-up (October 13)
status.loadBalancer.ingresswithout any Hetzner API call; a status patch failure invalidates the memo.kubernetes.io/service-namein the existing metadata-only EndpointSlice watcher, including relabels discovered during relists. Wake reconciliation for both old and new owners through one existing global signal, and invalidate stale slice snapshots.LoadBalancerProvisioningTimeout, emit the existing throttled Kubernetes Warning Event and failure metric, but continue polling every 15 seconds without exponential backoff. Clear the deadline after successful provisioning or Service removal.