Remove checks of the CloudDualStackNodeIPs feature gate
This commit is contained in:
		@@ -1208,7 +1208,7 @@ func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencie
 | 
				
			|||||||
	// Setup event recorder if required.
 | 
						// Setup event recorder if required.
 | 
				
			||||||
	makeEventRecorder(context.TODO(), kubeDeps, nodeName)
 | 
						makeEventRecorder(context.TODO(), kubeDeps, nodeName)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nodeIPs, err := nodeutil.ParseNodeIPArgument(kubeServer.NodeIP, kubeServer.CloudProvider, utilfeature.DefaultFeatureGate.Enabled(features.CloudDualStackNodeIPs))
 | 
						nodeIPs, err := nodeutil.ParseNodeIPArgument(kubeServer.NodeIP, kubeServer.CloudProvider)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return fmt.Errorf("bad --node-ip %q: %v", kubeServer.NodeIP, err)
 | 
							return fmt.Errorf("bad --node-ip %q: %v", kubeServer.NodeIP, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,6 @@ import (
 | 
				
			|||||||
	"k8s.io/apimachinery/pkg/types"
 | 
						"k8s.io/apimachinery/pkg/types"
 | 
				
			||||||
	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
 | 
						utilruntime "k8s.io/apimachinery/pkg/util/runtime"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
					 | 
				
			||||||
	coreinformers "k8s.io/client-go/informers/core/v1"
 | 
						coreinformers "k8s.io/client-go/informers/core/v1"
 | 
				
			||||||
	clientset "k8s.io/client-go/kubernetes"
 | 
						clientset "k8s.io/client-go/kubernetes"
 | 
				
			||||||
	"k8s.io/client-go/kubernetes/scheme"
 | 
						"k8s.io/client-go/kubernetes/scheme"
 | 
				
			||||||
@@ -44,7 +43,6 @@ import (
 | 
				
			|||||||
	cloudnodeutil "k8s.io/cloud-provider/node/helpers"
 | 
						cloudnodeutil "k8s.io/cloud-provider/node/helpers"
 | 
				
			||||||
	controllersmetrics "k8s.io/component-base/metrics/prometheus/controllers"
 | 
						controllersmetrics "k8s.io/component-base/metrics/prometheus/controllers"
 | 
				
			||||||
	nodeutil "k8s.io/component-helpers/node/util"
 | 
						nodeutil "k8s.io/component-helpers/node/util"
 | 
				
			||||||
	"k8s.io/controller-manager/pkg/features"
 | 
					 | 
				
			||||||
	"k8s.io/klog/v2"
 | 
						"k8s.io/klog/v2"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -748,7 +746,7 @@ func updateNodeAddressesFromNodeIP(node *v1.Node, nodeAddresses []v1.NodeAddress
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	providedNodeIP, exists := node.ObjectMeta.Annotations[cloudproviderapi.AnnotationAlphaProvidedIPAddr]
 | 
						providedNodeIP, exists := node.ObjectMeta.Annotations[cloudproviderapi.AnnotationAlphaProvidedIPAddr]
 | 
				
			||||||
	if exists {
 | 
						if exists {
 | 
				
			||||||
		nodeAddresses, err = cloudnodeutil.GetNodeAddressesFromNodeIP(providedNodeIP, nodeAddresses, utilfeature.DefaultFeatureGate.Enabled(features.CloudDualStackNodeIPs))
 | 
							nodeAddresses, err = cloudnodeutil.GetNodeAddressesFromNodeIP(providedNodeIP, nodeAddresses)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nodeAddresses, err
 | 
						return nodeAddresses, err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -85,7 +85,7 @@ func GetNodeAddressesFromNodeIPLegacy(nodeIP net.IP, cloudNodeAddresses []v1.Nod
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Otherwise the result is the same as for GetNodeAddressesFromNodeIP
 | 
						// Otherwise the result is the same as for GetNodeAddressesFromNodeIP
 | 
				
			||||||
	return GetNodeAddressesFromNodeIP(nodeIP.String(), cloudNodeAddresses, false)
 | 
						return GetNodeAddressesFromNodeIP(nodeIP.String(), cloudNodeAddresses)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetNodeAddressesFromNodeIP filters the provided list of nodeAddresses to match the
 | 
					// GetNodeAddressesFromNodeIP filters the provided list of nodeAddresses to match the
 | 
				
			||||||
@@ -102,8 +102,8 @@ func GetNodeAddressesFromNodeIPLegacy(nodeIP net.IP, cloudNodeAddresses []v1.Nod
 | 
				
			|||||||
// GetNodeAddressesFromNodeIPLegacy, because that case never occurs for external cloud
 | 
					// GetNodeAddressesFromNodeIPLegacy, because that case never occurs for external cloud
 | 
				
			||||||
// providers, because kubelet does not set the `provided-node-ip` annotation in that
 | 
					// providers, because kubelet does not set the `provided-node-ip` annotation in that
 | 
				
			||||||
// case.)
 | 
					// case.)
 | 
				
			||||||
func GetNodeAddressesFromNodeIP(providedNodeIP string, cloudNodeAddresses []v1.NodeAddress, allowDualStack bool) ([]v1.NodeAddress, error) {
 | 
					func GetNodeAddressesFromNodeIP(providedNodeIP string, cloudNodeAddresses []v1.NodeAddress) ([]v1.NodeAddress, error) {
 | 
				
			||||||
	nodeIPs, err := nodeutil.ParseNodeIPAnnotation(providedNodeIP, allowDualStack)
 | 
						nodeIPs, err := nodeutil.ParseNodeIPAnnotation(providedNodeIP)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, fmt.Errorf("failed to parse node IP %q: %v", providedNodeIP, err)
 | 
							return nil, fmt.Errorf("failed to parse node IP %q: %v", providedNodeIP, err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -552,7 +552,7 @@ func TestGetNodeAddressesFromNodeIP(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for _, tt := range cases {
 | 
						for _, tt := range cases {
 | 
				
			||||||
		t.Run(tt.name, func(t *testing.T) {
 | 
							t.Run(tt.name, func(t *testing.T) {
 | 
				
			||||||
			got, err := GetNodeAddressesFromNodeIP(tt.nodeIP, tt.nodeAddresses, true)
 | 
								got, err := GetNodeAddressesFromNodeIP(tt.nodeIP, tt.nodeAddresses)
 | 
				
			||||||
			if (err != nil) != tt.shouldError {
 | 
								if (err != nil) != tt.shouldError {
 | 
				
			||||||
				t.Errorf("GetNodeAddressesFromNodeIP() error = %v, wantErr %v", err, tt.shouldError)
 | 
									t.Errorf("GetNodeAddressesFromNodeIP() error = %v, wantErr %v", err, tt.shouldError)
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,19 +64,18 @@ func parseNodeIP(nodeIP string, allowDual, sloppy bool) ([]net.IP, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// ParseNodeIPArgument parses kubelet's --node-ip argument. If nodeIP contains invalid
 | 
					// ParseNodeIPArgument parses kubelet's --node-ip argument. If nodeIP contains invalid
 | 
				
			||||||
// values, they will be logged and ignored. Dual-stack node IPs are allowed if
 | 
					// values, they will be logged and ignored. Dual-stack node IPs are allowed if
 | 
				
			||||||
// cloudProvider is unset, or if it is `"external"` and allowCloudDualStack is true.
 | 
					// cloudProvider is unset or `"external"`.
 | 
				
			||||||
func ParseNodeIPArgument(nodeIP, cloudProvider string, allowCloudDualStack bool) ([]net.IP, error) {
 | 
					func ParseNodeIPArgument(nodeIP, cloudProvider string) ([]net.IP, error) {
 | 
				
			||||||
	var allowDualStack bool
 | 
						var allowDualStack bool
 | 
				
			||||||
	if (cloudProvider == cloudProviderNone) || (cloudProvider == cloudProviderExternal && allowCloudDualStack) {
 | 
						if cloudProvider == cloudProviderNone || cloudProvider == cloudProviderExternal {
 | 
				
			||||||
		allowDualStack = true
 | 
							allowDualStack = true
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return parseNodeIP(nodeIP, allowDualStack, true)
 | 
						return parseNodeIP(nodeIP, allowDualStack, true)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ParseNodeIPAnnotation parses the `alpha.kubernetes.io/provided-node-ip` annotation,
 | 
					// ParseNodeIPAnnotation parses the `alpha.kubernetes.io/provided-node-ip` annotation,
 | 
				
			||||||
// which can be either a single IP address or (if allowDualStack is true) a
 | 
					// which can be either a single IP address or a comma-separated pair of IP addresses.
 | 
				
			||||||
// comma-separated pair of IP addresses. Unlike with ParseNodeIPArgument, invalid values
 | 
					// Unlike with ParseNodeIPArgument, invalid values are considered an error.
 | 
				
			||||||
// are considered an error.
 | 
					func ParseNodeIPAnnotation(nodeIP string) ([]net.IP, error) {
 | 
				
			||||||
func ParseNodeIPAnnotation(nodeIP string, allowDualStack bool) ([]net.IP, error) {
 | 
						return parseNodeIP(nodeIP, true, false)
 | 
				
			||||||
	return parseNodeIP(nodeIP, allowDualStack, false)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -166,22 +166,18 @@ func TestParseNodeIPArgument(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	configurations := []struct {
 | 
						configurations := []struct {
 | 
				
			||||||
		cloudProvider      string
 | 
							cloudProvider      string
 | 
				
			||||||
		allowCloudDualStack bool
 | 
					 | 
				
			||||||
		dualStackSupported bool
 | 
							dualStackSupported bool
 | 
				
			||||||
	}{
 | 
						}{
 | 
				
			||||||
		{cloudProviderNone, false, true},
 | 
							{cloudProviderNone, true},
 | 
				
			||||||
		{cloudProviderNone, true, true},
 | 
							{cloudProviderExternal, true},
 | 
				
			||||||
		{cloudProviderExternal, false, false},
 | 
							{"gce", false},
 | 
				
			||||||
		{cloudProviderExternal, true, true},
 | 
					 | 
				
			||||||
		{"gce", false, false},
 | 
					 | 
				
			||||||
		{"gce", true, false},
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, tc := range testCases {
 | 
						for _, tc := range testCases {
 | 
				
			||||||
		for _, conf := range configurations {
 | 
							for _, conf := range configurations {
 | 
				
			||||||
			desc := fmt.Sprintf("%s, cloudProvider=%q, allowCloudDualStack=%v", tc.desc, conf.cloudProvider, conf.allowCloudDualStack)
 | 
								desc := fmt.Sprintf("%s, cloudProvider=%q", tc.desc, conf.cloudProvider)
 | 
				
			||||||
			t.Run(desc, func(t *testing.T) {
 | 
								t.Run(desc, func(t *testing.T) {
 | 
				
			||||||
				parsed, err := ParseNodeIPArgument(tc.in, conf.cloudProvider, conf.allowCloudDualStack)
 | 
									parsed, err := ParseNodeIPArgument(tc.in, conf.cloudProvider)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				expectedOut := tc.out
 | 
									expectedOut := tc.out
 | 
				
			||||||
				expectedErr := tc.err
 | 
									expectedErr := tc.err
 | 
				
			||||||
@@ -339,23 +335,12 @@ func TestParseNodeIPAnnotation(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, tc := range testCases {
 | 
						for _, tc := range testCases {
 | 
				
			||||||
		for _, allowDualStack := range []bool{false, true} {
 | 
							t.Run(tc.desc, func(t *testing.T) {
 | 
				
			||||||
			desc := fmt.Sprintf("%s, allowDualStack=%v", tc.desc, allowDualStack)
 | 
								parsed, err := ParseNodeIPAnnotation(tc.in)
 | 
				
			||||||
			t.Run(desc, func(t *testing.T) {
 | 
					 | 
				
			||||||
				parsed, err := ParseNodeIPAnnotation(tc.in, allowDualStack)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			expectedOut := tc.out
 | 
								expectedOut := tc.out
 | 
				
			||||||
			expectedErr := tc.err
 | 
								expectedErr := tc.err
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if !allowDualStack {
 | 
					 | 
				
			||||||
					if len(tc.out) == 2 {
 | 
					 | 
				
			||||||
						expectedOut = nil
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
					if tc.ssErr != "" {
 | 
					 | 
				
			||||||
						expectedErr = tc.ssErr
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			if !reflect.DeepEqual(parsed, expectedOut) {
 | 
								if !reflect.DeepEqual(parsed, expectedOut) {
 | 
				
			||||||
				t.Errorf("expected %#v, got %#v", expectedOut, parsed)
 | 
									t.Errorf("expected %#v, got %#v", expectedOut, parsed)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -370,5 +355,4 @@ func TestParseNodeIPAnnotation(t *testing.T) {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user