[breaking] [deprecation] Remove Cilium BGP load balancer support - #602
[breaking] [deprecation] Remove Cilium BGP load balancer support#602moshevayner wants to merge 2 commits into
Conversation
Signed-off-by: Moshe Vayner <moshe@vayner.me>
| func createTestService() *v1.Service { | ||
| return &v1.Service{ | ||
| ObjectMeta: metav1.ObjectMeta{ | ||
| Name: randString(), | ||
| Namespace: "test-ns", | ||
| UID: "foobar123", | ||
| }, | ||
| Spec: v1.ServiceSpec{ | ||
| Ports: []v1.ServicePort{ | ||
| {Name: randString(), Protocol: "TCP", Port: 80, NodePort: 30000}, | ||
| {Name: randString(), Protocol: "TCP", Port: 8080, NodePort: 30001}, | ||
| }, | ||
| }, | ||
| } | ||
| } | ||
|
|
There was a problem hiding this comment.
This helper previously existed in cilium_loadbalancers_test.go but is used by other tests as well, so I moved it into this file.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #602 +/- ##
==========================================
+ Coverage 73.76% 75.21% +1.45%
==========================================
Files 19 18 -1
Lines 3045 2679 -366
==========================================
- Hits 2246 2015 -231
+ Misses 538 453 -85
+ Partials 261 211 -50 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
| {{- if .Values.sharedIPLoadBalancing }} | ||
| {{- with .Values.sharedIPLoadBalancing.bgpNodeSelector }} | ||
| - --bgp-node-selector={{ . }} | ||
| {{- end }} | ||
| {{- with .Values.sharedIPLoadBalancing.ipHolderSuffix }} | ||
| - --ip-holder-suffix={{ . }} | ||
| {{- end}} | ||
| - --load-balancer-type={{ required "A valid .Values.sharedIPLoadBalancing.loadBalancerType is required for shared IP load-balancing" .Values.sharedIPLoadBalancing.loadBalancerType }} | ||
| {{- end }} |
There was a problem hiding this comment.
Wonder if should keep these flags but log them as deprecated? Thoughts?
There was a problem hiding this comment.
This way it doesn't break existing deployment
There was a problem hiding this comment.
Pull request overview
This PR removes the Cilium BGP shared-IP LoadBalancer implementation from the Linode Cloud Controller Manager, leaving NodeBalancers as the only supported LoadBalancer backend while keeping the --load-balancer-type=nodebalancer flag for deployment compatibility.
Changes:
- Removes Cilium BGP runtime code, flags/options, Helm wiring/RBAC, and e2e assets related to BGP testing.
- Updates CCM load balancer implementation to be NodeBalancer-only and prunes Cilium-related module dependencies.
- Updates documentation/examples to reflect NodeBalancers as the supported LoadBalancer implementation.
Reviewed changes
Copilot reviewed 26 out of 27 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates feature description to reflect NodeBalancer-only load balancing. |
| mise.toml | Removes the e2e-test-bgp task. |
| Makefile | Removes the e2e-test-bgp target and associated setup/test invocation. |
| main.go | Removes BGP-related flags and narrows --load-balancer-type help text to NodeBalancer. |
| go.sum | Removes Cilium and related transitive dependency checksums. |
| go.mod | Drops github.com/cilium/cilium and related indirect deps; retains only what’s still needed. |
| e2e/setup/cilium-setup.sh | Deletes Cilium BGP e2e setup script (no longer used). |
| e2e/bgp-test/lb-cilium-bgp/create-pod-service.yaml | Deletes Cilium BGP e2e manifest. |
| e2e/bgp-test/lb-cilium-bgp/chainsaw-test.yaml | Deletes Cilium BGP chainsaw e2e test. |
| docs/getting-started/overview.md | Removes mention of BGP-based IP sharing from overview. |
| docs/getting-started/helm-installation.md | Removes Helm values example for shared-IP/BGP configuration. |
| docs/examples/README.md | Removes “Shared IP Load-Balancing” from examples index. |
| docs/examples/advanced.md | Removes the shared-IP/BGP advanced example. |
| docs/configuration/README.md | Removes BGP-related bullets from configuration overview. |
| docs/configuration/loadbalancer.md | Documents NodeBalancer-only support and removes BGP section/references. |
| docs/configuration/environment.md | Removes BGP env/flag documentation; updates flag table entry for --load-balancer-type. |
| deploy/chart/values.yaml | Removes commented shared-IP/BGP values stanza. |
| deploy/chart/templates/daemonset.yaml | Removes shared-IP/BGP args injection logic from the DaemonSet template. |
| deploy/chart/templates/clusterrole-rbac.yaml | Removes conditional RBAC rules for Cilium CRDs. |
| cloud/linode/service_controller_test.go | Updates tests to construct loadbalancers without Cilium/BGP fields. |
| cloud/linode/options/options.go | Removes BGP-specific options fields from the global Options struct. |
| cloud/linode/loadbalancers.go | Removes all Cilium/BGP load balancer logic; simplifies loadbalancers struct accordingly. |
| cloud/linode/loadbalancers_test.go | Removes Cilium client field usage in tests and aligns struct construction. |
| cloud/linode/cloud.go | Removes Cilium LB type support from supported types and drops IP-holder suffix validation. |
| cloud/linode/cloud_test.go | Removes IP-holder suffix length test (no longer applicable). |
| cloud/linode/cilium_loadbalancers.go | Deletes the Cilium BGP implementation file. |
| cloud/linode/cilium_loadbalancers_test.go | Deletes the Cilium BGP unit test suite. |
Signed-off-by: Moshe Vayner <moshe@vayner.me>
058b2b9 to
5c8a183
Compare
Summary
Removes Cilium BGP load-balancer support from the CCM.
--load-balancer-type=nodebalancerfor existing deployment compatibility.Deprecation / Breaking Change
--load-balancer-type=cilium-bgpis no longer supported. It will be accepted as a command line option, but will be a no-op moving forward and treated asnodebalanceras the default option.Clusters using Cilium BGP shared-IP load balancing must migrate to NodeBalancers, including Premium NodeBalancers where higher capacity is required.
Validation
mise run codegengo test ./...helm lint deploy/charthelm template ccm deploy/chartSigned-off-by: Moshe Vayner moshe@vayner.me
General:
Pull Request Guidelines: