mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Update kubeproxy config validation to support list of comma
separated pod CIDRs. Dual-stack feature must be enabled for the validation to be done.
This commit is contained in:
		@@ -196,7 +196,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			msg:       "must be a valid CIDR block (e.g. 10.100.0.0/16)",
 | 
			
		||||
			msg:       "must be a valid CIDR block (e.g. 10.100.0.0/16 or FD02::0:0:0/96)",
 | 
			
		||||
			expectErr: true,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@ go_library(
 | 
			
		||||
    importpath = "k8s.io/kubernetes/pkg/proxy/apis/config/validation",
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/apis/core/validation:go_default_library",
 | 
			
		||||
        "//pkg/features:go_default_library",
 | 
			
		||||
        "//pkg/proxy/apis/config:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,7 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/validation/field"
 | 
			
		||||
	componentbaseconfig "k8s.io/component-base/config"
 | 
			
		||||
	apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
 | 
			
		||||
	kubefeatures "k8s.io/kubernetes/pkg/features"
 | 
			
		||||
	kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -67,8 +68,17 @@ func Validate(config *kubeproxyconfig.KubeProxyConfiguration) field.ErrorList {
 | 
			
		||||
	allErrs = append(allErrs, validateHostPort(config.MetricsBindAddress, newPath.Child("MetricsBindAddress"))...)
 | 
			
		||||
 | 
			
		||||
	if config.ClusterCIDR != "" {
 | 
			
		||||
		if _, _, err := net.ParseCIDR(config.ClusterCIDR); err != nil {
 | 
			
		||||
			allErrs = append(allErrs, field.Invalid(newPath.Child("ClusterCIDR"), config.ClusterCIDR, "must be a valid CIDR block (e.g. 10.100.0.0/16)"))
 | 
			
		||||
		if config.FeatureGates[string(kubefeatures.IPv6DualStack)] {
 | 
			
		||||
			cidrs := strings.Split(config.ClusterCIDR, ",")
 | 
			
		||||
			for _, cidr := range cidrs {
 | 
			
		||||
				if _, _, err := net.ParseCIDR(cidr); err != nil {
 | 
			
		||||
					allErrs = append(allErrs, field.Invalid(newPath.Child("ClusterCIDR"), cidr, "must be a valid CIDR block (e.g. 10.100.0.0/16 or FD02::0:0:0/96)"))
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			if _, _, err := net.ParseCIDR(config.ClusterCIDR); err != nil {
 | 
			
		||||
				allErrs = append(allErrs, field.Invalid(newPath.Child("ClusterCIDR"), config.ClusterCIDR, "must be a valid CIDR block (e.g. 10.100.0.0/16 or FD02::0:0:0/96)"))
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -202,7 +202,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
					TCPCloseWaitTimeout:   &metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			msg: "must be a valid CIDR block (e.g. 10.100.0.0/16)",
 | 
			
		||||
			msg: "must be a valid CIDR block (e.g. 10.100.0.0/16 or FD02::0:0:0/96)",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			config: kubeproxyconfig.KubeProxyConfiguration{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user