Merge pull request #56368 from xiangpengzhao/validate-ipvs-stuff
Automatic merge from submit-queue (batch tested with PRs 57211, 56150, 56368, 56271, 55957). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Validate IPVSConfiguration only when IPVS mode is enabled. **What this PR does / why we need it**: It's strange for users that they should configuration valid values for ipvs params even when they don't use ipvs mode. Users don't need to care about these params in this case. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # **Special notes for your reviewer**: /cc @m1093782566 **Release note**: ```release-note NONE ```
This commit is contained in:
		@@ -36,7 +36,9 @@ func Validate(config *kubeproxyconfig.KubeProxyConfiguration) field.ErrorList {
 | 
			
		||||
	newPath := field.NewPath("KubeProxyConfiguration")
 | 
			
		||||
 | 
			
		||||
	allErrs = append(allErrs, validateKubeProxyIPTablesConfiguration(config.IPTables, newPath.Child("KubeProxyIPTablesConfiguration"))...)
 | 
			
		||||
	if config.Mode == kubeproxyconfig.ProxyModeIPVS {
 | 
			
		||||
		allErrs = append(allErrs, validateKubeProxyIPVSConfiguration(config.IPVS, newPath.Child("KubeProxyIPVSConfiguration"))...)
 | 
			
		||||
	}
 | 
			
		||||
	allErrs = append(allErrs, validateKubeProxyConntrackConfiguration(config.Conntrack, newPath.Child("KubeProxyConntrackConfiguration"))...)
 | 
			
		||||
	allErrs = append(allErrs, validateProxyMode(config.Mode, newPath.Child("Mode"))...)
 | 
			
		||||
	allErrs = append(allErrs, validateClientConnectionConfiguration(config.ClientConnection, newPath.Child("ClientConnection"))...)
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
				SyncPeriod:    metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
 | 
			
		||||
			},
 | 
			
		||||
			Mode: kubeproxyconfig.ProxyModeIPVS,
 | 
			
		||||
			IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
 | 
			
		||||
				SyncPeriod:    metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
				MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
@@ -55,6 +56,26 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
				TCPCloseWaitTimeout:   &metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			BindAddress:        "192.168.59.103",
 | 
			
		||||
			HealthzBindAddress: "0.0.0.0:10256",
 | 
			
		||||
			MetricsBindAddress: "127.0.0.1:10249",
 | 
			
		||||
			ClusterCIDR:        "192.168.59.0/24",
 | 
			
		||||
			UDPIdleTimeout:     metav1.Duration{Duration: 1 * time.Second},
 | 
			
		||||
			ConfigSyncPeriod:   metav1.Duration{Duration: 1 * time.Second},
 | 
			
		||||
			IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
 | 
			
		||||
				MasqueradeAll: true,
 | 
			
		||||
				SyncPeriod:    metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
 | 
			
		||||
			},
 | 
			
		||||
			Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
				Max:        pointer.Int32Ptr(2),
 | 
			
		||||
				MaxPerCore: pointer.Int32Ptr(1),
 | 
			
		||||
				Min:        pointer.Int32Ptr(1),
 | 
			
		||||
				TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				TCPCloseWaitTimeout:   &metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, successCase := range successCases {
 | 
			
		||||
@@ -81,10 +102,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
					Max:        pointer.Int32Ptr(2),
 | 
			
		||||
					MaxPerCore: pointer.Int32Ptr(1),
 | 
			
		||||
@@ -109,10 +126,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
					Max:        pointer.Int32Ptr(2),
 | 
			
		||||
					MaxPerCore: pointer.Int32Ptr(1),
 | 
			
		||||
@@ -137,10 +150,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
					Max:        pointer.Int32Ptr(2),
 | 
			
		||||
					MaxPerCore: pointer.Int32Ptr(1),
 | 
			
		||||
@@ -165,10 +174,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
					Max:        pointer.Int32Ptr(2),
 | 
			
		||||
					MaxPerCore: pointer.Int32Ptr(1),
 | 
			
		||||
@@ -193,10 +198,6 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
					Max:        pointer.Int32Ptr(2),
 | 
			
		||||
					MaxPerCore: pointer.Int32Ptr(1),
 | 
			
		||||
@@ -221,10 +222,31 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
					Max:        pointer.Int32Ptr(2),
 | 
			
		||||
					MaxPerCore: pointer.Int32Ptr(1),
 | 
			
		||||
					Min:        pointer.Int32Ptr(1),
 | 
			
		||||
					TCPEstablishedTimeout: &metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
					TCPCloseWaitTimeout:   &metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			msg: "must be greater than 0",
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			config: kubeproxyconfig.KubeProxyConfiguration{
 | 
			
		||||
				BindAddress:        "192.168.59.103",
 | 
			
		||||
				HealthzBindAddress: "0.0.0.0:10256",
 | 
			
		||||
				MetricsBindAddress: "127.0.0.1:10249",
 | 
			
		||||
				ClusterCIDR:        "192.168.59.0/24",
 | 
			
		||||
				UDPIdleTimeout:     metav1.Duration{Duration: 1 * time.Second},
 | 
			
		||||
				ConfigSyncPeriod:   metav1.Duration{Duration: 1 * time.Second},
 | 
			
		||||
				IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
 | 
			
		||||
					MasqueradeAll: true,
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 5 * time.Second},
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 2 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				// not specifying valid period in IPVS mode.
 | 
			
		||||
				Mode: kubeproxyconfig.ProxyModeIPVS,
 | 
			
		||||
				Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
					Max:        pointer.Int32Ptr(2),
 | 
			
		||||
					MaxPerCore: pointer.Int32Ptr(1),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user