Repository navigation
Open
Labels
area/ciliumIssues or PRs related to Cilium (agent, operator, Gateway API, network policy, LB-IPAM)Issues or PRs related to Cilium (agent, operator, Gateway API, network policy, LB-IPAM)area/networkingIssues or PRs related to networking (ingress, gateway, vpn, metallb, kube-ovn)Issues or PRs related to networking (ingress, gateway, vpn, metallb, kube-ovn)kind/featureCategorizes issue or PR as related to a new featureCategorizes issue or PR as related to a new featurelifecycle/frozenIndicates that an issue or PR should not be auto-closed due to stalenessIndicates that an issue or PR should not be auto-closed due to stalenesspriority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to completeImportant over the long term, but may not be staffed and/or may need multiple releases to completetriage/acceptedIndicates an issue is ready to be actively worked onIndicates an issue is ready to be actively worked on
Description
Context
KEP-5707 deprecates Service.spec.externalIPs. Timeline:
- v1.36 —
AllowServiceExternalIPsfeature gate introduced with a warning on use. - v1.40 — feature gate defaults to off.
- v1.43 — field removal.
#2468 moved ingress-nginx onto a CiliumLoadBalancerIPPool-backed mode gated by publishing.exposure=loadBalancer, but packages/apps/vpn/templates/service.yaml still writes externalIPs directly. The vpn app will break once the feature gate flips.
Work
Port the #2468 pattern to the vpn chart:
- Add a
loadBalancerexposure mode to the vpn Service, rendered as a Service of typeLoadBalancerplus aCiliumLoadBalancerIPPoolscoped to the vpn Service viaserviceSelector. - Keep
externalIPsas the default for backwards compat; flip the default in a later release once the rest of the platform migration is done. - Fail render if loadBalancer mode is selected with no external IP list (same guard as feat(ingress): add loadBalancer exposure mode via CiliumLoadBalancerIPPool #2468).
Scope
Fairly mechanical — the pattern is fully worked out in #2468 and was recently ported to packages/extra/gateway/templates/cilium-lb-pool.yaml as part of #2470. Needs unit tests and a bats smoke to assert the Service stays functional after the flip.
Reacted by dosubot
Metadata
Metadata
Assignees
Labels
area/ciliumIssues or PRs related to Cilium (agent, operator, Gateway API, network policy, LB-IPAM)Issues or PRs related to Cilium (agent, operator, Gateway API, network policy, LB-IPAM)area/networkingIssues or PRs related to networking (ingress, gateway, vpn, metallb, kube-ovn)Issues or PRs related to networking (ingress, gateway, vpn, metallb, kube-ovn)kind/featureCategorizes issue or PR as related to a new featureCategorizes issue or PR as related to a new featurelifecycle/frozenIndicates that an issue or PR should not be auto-closed due to stalenessIndicates that an issue or PR should not be auto-closed due to stalenesspriority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to completeImportant over the long term, but may not be staffed and/or may need multiple releases to completetriage/acceptedIndicates an issue is ready to be actively worked onIndicates an issue is ready to be actively worked on
Activity
dosubot commentedon Jul 24, 2026
Hi, Aleksei Sviridkin (@lexfrei). I'm Dosu, and I'm helping the cozystack team manage their backlog and am marking this issue as stale.
Issue Summary
Service.spec.externalIPsdirectly.loadBalancerexposure mode, similar to the ingress-nginx/CiliumLoadBalancerIPPool approach, while keepingexternalIPsas the default for now.Next Steps
Thanks for your understanding and contribution.