Fix NLB IP version selection to respect service ipFamilies
#519
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
Fixes #518
When
ipFamilyPolicyisPreferDualStack, thegetLbListenerBackendSetIpVersionfunction was incorrectly returning[IPv4, IPv6]based solely on subnet capabilities, ignoring the service'sipFamiliesfield.This caused NLB creation to fail with the error:
Root Cause
The bug occurs when:
ipFamilyPolicy: PreferDualStackipFamilies: [IPv4](cluster doesn't support dual-stack, or explicitly set)The old code would create IPv6 listeners (based on subnet capabilities) but only IPv4 backend sets (based on
ipFamilies), causing a mismatch.Fix
The
ipFamiliesfield is the authoritative specification of what IP families a service uses. TheipFamilyPolicyonly influences howipFamiliesgets populated when not explicitly set.This fix ensures the CCM respects
ipFamiliesby only including IP versions that are both:ipFamiliesTesting
Changes
pkg/cloudprovider/providers/oci/load_balancer.go: ModifiedPreferDualStackcase to iterate overipFamiliesand only include IP versions supported by subnetpkg/cloudprovider/providers/oci/load_balancer_test.go: Updated test expectations forPreferDualStackwithipFamilies: [IPv4]