diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index c97972b9008..550870e9425 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -1021,7 +1021,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS genericfeatures.OpenAPIEnums: {Default: true, PreRelease: featuregate.Beta}, genericfeatures.CustomResourceValidationExpressions: {Default: false, PreRelease: featuregate.Alpha}, genericfeatures.OpenAPIV3: {Default: true, PreRelease: featuregate.Beta}, - genericfeatures.ServerSideFieldValidation: {Default: true, PreRelease: featuregate.Beta}, + genericfeatures.ServerSideFieldValidation: {Default: false, PreRelease: featuregate.Alpha}, // features that enable backwards compatibility but are scheduled to be removed // ... HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha}, diff --git a/staging/src/k8s.io/apiserver/pkg/features/kube_features.go b/staging/src/k8s.io/apiserver/pkg/features/kube_features.go index 985fcdca5b6..01820d127af 100644 --- a/staging/src/k8s.io/apiserver/pkg/features/kube_features.go +++ b/staging/src/k8s.io/apiserver/pkg/features/kube_features.go @@ -175,7 +175,6 @@ const ( // owner: @kevindelgado // kep: http://kep.k8s.io/2885 // alpha: v1.23 - // beta: v1.24 // // Enables server-side field validation. ServerSideFieldValidation featuregate.Feature = "ServerSideFieldValidation" @@ -207,5 +206,5 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS OpenAPIEnums: {Default: true, PreRelease: featuregate.Beta}, CustomResourceValidationExpressions: {Default: false, PreRelease: featuregate.Alpha}, OpenAPIV3: {Default: true, PreRelease: featuregate.Beta}, - ServerSideFieldValidation: {Default: true, PreRelease: featuregate.Beta}, + ServerSideFieldValidation: {Default: false, PreRelease: featuregate.Alpha}, } diff --git a/test/e2e/kubectl/kubectl.go b/test/e2e/kubectl/kubectl.go index 2678a3da0cc..70de9f8724e 100644 --- a/test/e2e/kubectl/kubectl.go +++ b/test/e2e/kubectl/kubectl.go @@ -1048,7 +1048,7 @@ metadata: } }) - ginkgo.It("should create/apply an invalid/valid CR with arbitrary-extra properties for CRD with partially-specified validation schema", func() { + ginkgo.It("should create/apply a valid CR with arbitrary-extra properties for CRD with partially-specified validation schema", func() { ginkgo.By("prepare CRD with partially-specified validation schema") crd, err := crd.CreateTestCRD(f, func(crd *apiextensionsv1.CustomResourceDefinition) { props := &apiextensionsv1.JSONSchemaProps{} @@ -1074,15 +1074,6 @@ metadata: meta := fmt.Sprintf(metaPattern, crd.Crd.Spec.Names.Kind, crd.Crd.Spec.Group, crd.Crd.Spec.Versions[0].Name, "test-cr") - // XPreserveUnknownFields is defined on the root of the schema so unknown fields within the spec - // are still considered invalid - invalidArbitraryCR := fmt.Sprintf(`{%s,"spec":{"bars":[{"name":"test-bar"}],"extraProperty":"arbitrary-value"}}`, meta) - err = createApplyCustomResource(invalidArbitraryCR, f.Namespace.Name, "test-cr", crd) - framework.ExpectError(err, "creating custom resource") - if !strings.Contains(err.Error(), `unknown field "spec.extraProperty"`) { - framework.Failf("incorrect error from createApplyCustomResource: %v", err) - } - // unknown fields on the root are considered valid validArbitraryCR := fmt.Sprintf(`{%s,"spec":{"bars":[{"name":"test-bar"}]},"extraProperty":"arbitrary-value"}`, meta) err = createApplyCustomResource(validArbitraryCR, f.Namespace.Name, "test-cr", crd)