[feat] Add IPv6 public backends for NodeBalancers#545
Draft
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #545 +/- ##
==========================================
+ Coverage 73.43% 73.62% +0.19%
==========================================
Files 19 19
Lines 2906 2927 +21
==========================================
+ Hits 2134 2155 +21
Misses 523 523
Partials 249 249 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Contributor
There was a problem hiding this comment.
Pull request overview
Adds opt-in support for programming Linode NodeBalancer backends with node public IPv6 addresses, controlled via a new global controller flag and a per-Service annotation, with accompanying Helm, docs, and e2e/unit test updates.
Changes:
- Introduces
--enable-ipv6-for-nodebalancer-backendsandservice.beta.kubernetes.io/linode-loadbalancer-enable-ipv6-backends. - Updates NodeBalancer backend node resolution + address formatting to support IPv6 backends (including when VPC-backed NodeBalancers are enabled).
- Adds documentation, Helm values/template wiring, and new unit/e2e coverage for IPv6 backend behavior.
Reviewed changes
Copilot reviewed 14 out of 16 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
main.go |
Registers the new global flag for enabling IPv6 NodeBalancer backends. |
cloud/linode/options/options.go |
Adds controller option field for IPv6 backend enablement. |
cloud/annotations/annotations.go |
Adds the new Service annotation constant for IPv6 backend selection. |
cloud/linode/loadbalancers.go |
Implements IPv6 backend selection/formatting and preserves VPC config while reconciling backends. |
cloud/linode/loadbalancers_test.go |
Adds unit tests for backend IP selection, VPC preservation, and IPv6-safe host:port formatting. |
deploy/chart/templates/daemonset.yaml |
Wires Helm value to the new controller flag argument. |
deploy/chart/values.yaml |
Documents the new Helm value and its operational behavior. |
docs/configuration/loadbalancer.md |
Documents IPv6 backend behavior, prerequisites, and examples. |
docs/configuration/environment.md |
Documents the new controller flag in the environment/flags reference. |
docs/configuration/annotations.md |
Documents the new Service annotation in the annotations reference. |
e2e/test/lb-with-ipv6-backends/create-pods-services.yaml |
Adds a dual-stack LB Service + backend deployment for IPv6-backend e2e coverage. |
e2e/test/lb-with-ipv6-backends/chainsaw-test.yaml |
Adds Chainsaw scenario asserting IPv6 backend addresses and verifying connectivity. |
Makefile |
Pins/uses clusterctl explicitly and updates CAP* versions and manifest generation for dual-stack e2e. |
devbox.json |
Pins clusterctl version for the devbox environment. |
devbox.lock |
Updates devbox lock to the pinned clusterctl version. |
.gitignore |
Ignores locally generated cluster manifests and kubeconfigs. |
…date related tests
eljohnson92
reviewed
Mar 19, 2026
| // EnsureLoadBalancer ensures that the cluster is running a load balancer for | ||
| // service. | ||
| // | ||
| // EnsureLoadBalancer will not modify service or nodes. |
Contributor
There was a problem hiding this comment.
I think this is still true for the spec of these resources
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.
Summary
Behavior
--enable-ipv6-for-nodebalancer-backendsas a global controller flagservice.beta.kubernetes.io/linode-loadbalancer-enable-ipv6-backendsas a per-service overrideCode Changes
cloud/annotations/annotations.gocloud/linode/options/options.goand register the flag inmain.gocloud/linode/loadbalancers.goto:deploy/chart/templates/daemonset.yamlanddeploy/chart/values.yamldocs/configuration/loadbalancer.md,docs/configuration/environment.md, anddocs/configuration/annotations.md.gitignoreTests
Unit
cloud/linode/loadbalancers_test.gowith coverage for:E2E
e2e/test/lb-with-ipv6-backends/LoadBalancerservice annotated withlinode-loadbalancer-enable-ipv6-backends: "true"Verification
go test ./cloud/linode/...make test