-
Notifications
You must be signed in to change notification settings - Fork 21
Open
Description
When using a Service type LoadBalancer with externalTrafficPolicy: Local, the Scaleway CCM currently uses:
- the per-port
nodePortas the default health check port, and - a TCP health check.
This breaks the intended Kubernetes behavior, because Kubernetes already provides a dedicated dynamic port in:
spec.healthCheckNodePortProposal
Allow the CCM to automatically detect and use spec.healthCheckNodePort instead of relying on:
- the per-port
nodePortfallback or a manually hardcoded annotation(there's no way of asking to healthcheck on some other port as of today)
Possible approaches
- Change the default behavior to always prefer
spec.healthCheckNodePortwhen present - Add an annotation that configures the LB to use
spec.healthCheckNodePortlike:
service.beta.kubernetes.io/scw-loadbalancer-healthcheck-use-service-healthchecknodeport: "true" - Add an annotation to let users specify an hardcoded port (additional feature request at Feature request: Support
service.beta.kubernetes.io/scw-loadbalancer-healthcheck-port#194, pr available at feat(loadbalancer): add health check port annotation #195)- Support a special value that pulls the port from
.spec.healthCheckNodePort(pr available at feat(loadbalancer): add healthCheckNodePort opt-in support #196)
- Support a special value that pulls the port from
- Or expose this through a new healthcheck type like
kubeproxy(eg: feat: Add custom LB health check type usinghealthCheckNodePort#193)
This would align the CCM with native Kubernetes expectations and reduce configuration drift.
References
- https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-policies
- https://kubernetes.io/docs/tutorials/services/source-ip/#source-ip-for-services-with-type-loadbalancer
- https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#externaltrafficpolicy-for-loadbalancer-or-nodeport-services
Metadata
Metadata
Assignees
Labels
No labels