Skip to content

Commit ec77598

Browse files
committed
Update kubeproxy config validation to support list of comma
separated pod CIDRs. Dual-stack feature must be enabled for the validation to be done.
1 parent 3e3addf commit ec77598

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed

cmd/kubeadm/app/componentconfigs/validation_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
196196
},
197197
},
198198
},
199-
msg: "must be a valid CIDR block (e.g. 10.100.0.0/16)",
199+
msg: "must be a valid CIDR block (e.g. 10.100.0.0/16 or FD02::0:0:0/96)",
200200
expectErr: true,
201201
},
202202
{

pkg/proxy/apis/config/validation/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ go_library(
1212
importpath = "k8s.io/kubernetes/pkg/proxy/apis/config/validation",
1313
deps = [
1414
"//pkg/apis/core/validation:go_default_library",
15+
"//pkg/features:go_default_library",
1516
"//pkg/proxy/apis/config:go_default_library",
1617
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
1718
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",

pkg/proxy/apis/config/validation/validation.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"k8s.io/apimachinery/pkg/util/validation/field"
2929
componentbaseconfig "k8s.io/component-base/config"
3030
apivalidation "k8s.io/kubernetes/pkg/apis/core/validation"
31+
kubefeatures "k8s.io/kubernetes/pkg/features"
3132
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
3233
)
3334

@@ -67,8 +68,17 @@ func Validate(config *kubeproxyconfig.KubeProxyConfiguration) field.ErrorList {
6768
allErrs = append(allErrs, validateHostPort(config.MetricsBindAddress, newPath.Child("MetricsBindAddress"))...)
6869

6970
if config.ClusterCIDR != "" {
70-
if _, _, err := net.ParseCIDR(config.ClusterCIDR); err != nil {
71-
allErrs = append(allErrs, field.Invalid(newPath.Child("ClusterCIDR"), config.ClusterCIDR, "must be a valid CIDR block (e.g. 10.100.0.0/16)"))
71+
if config.FeatureGates[string(kubefeatures.IPv6DualStack)] {
72+
cidrs := strings.Split(config.ClusterCIDR, ",")
73+
for _, cidr := range cidrs {
74+
if _, _, err := net.ParseCIDR(cidr); err != nil {
75+
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)"))
76+
}
77+
}
78+
} else {
79+
if _, _, err := net.ParseCIDR(config.ClusterCIDR); err != nil {
80+
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)"))
81+
}
7282
}
7383
}
7484

pkg/proxy/apis/config/validation/validation_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ func TestValidateKubeProxyConfiguration(t *testing.T) {
202202
TCPCloseWaitTimeout: &metav1.Duration{Duration: 5 * time.Second},
203203
},
204204
},
205-
msg: "must be a valid CIDR block (e.g. 10.100.0.0/16)",
205+
msg: "must be a valid CIDR block (e.g. 10.100.0.0/16 or FD02::0:0:0/96)",
206206
},
207207
{
208208
config: kubeproxyconfig.KubeProxyConfiguration{

0 commit comments

Comments
 (0)