diff --git a/pkg/api/testing/defaulting_test.go b/pkg/api/testing/defaulting_test.go index 66b5a88e905..ffd9882cc35 100644 --- a/pkg/api/testing/defaulting_test.go +++ b/pkg/api/testing/defaulting_test.go @@ -149,6 +149,8 @@ func TestDefaulting(t *testing.T) { {Group: "networking.k8s.io", Version: "v1", Kind: "NetworkPolicyList"}: {}, {Group: "networking.k8s.io", Version: "v1beta1", Kind: "Ingress"}: {}, {Group: "networking.k8s.io", Version: "v1beta1", Kind: "IngressList"}: {}, + {Group: "networking.k8s.io", Version: "v1", Kind: "IngressClass"}: {}, + {Group: "networking.k8s.io", Version: "v1", Kind: "IngressClassList"}: {}, {Group: "storage.k8s.io", Version: "v1beta1", Kind: "StorageClass"}: {}, {Group: "storage.k8s.io", Version: "v1beta1", Kind: "StorageClassList"}: {}, {Group: "storage.k8s.io", Version: "v1beta1", Kind: "CSIDriver"}: {}, diff --git a/pkg/apis/networking/fuzzer/fuzzer.go b/pkg/apis/networking/fuzzer/fuzzer.go index a9f2f552990..7284773a782 100644 --- a/pkg/apis/networking/fuzzer/fuzzer.go +++ b/pkg/apis/networking/fuzzer/fuzzer.go @@ -20,6 +20,7 @@ import ( fuzz "github.com/google/gofuzz" runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/kubernetes/pkg/apis/networking" + utilpointer "k8s.io/utils/pointer" ) // Funcs returns the fuzzer functions for the networking api group. @@ -64,5 +65,14 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} { } } }, + func(p *networking.IngressClass, c fuzz.Continue) { + c.FuzzNoCustom(p) // fuzz self without calling this function again + // default Parameters to Cluster + if p.Spec.Parameters == nil || p.Spec.Parameters.Scope == nil { + p.Spec.Parameters = &networking.IngressClassParametersReference{ + Scope: utilpointer.StringPtr(networking.IngressClassParametersReferenceScopeCluster), + } + } + }, } } diff --git a/pkg/apis/networking/validation/validation_test.go b/pkg/apis/networking/validation/validation_test.go index 046a10ea3ba..d941324af08 100644 --- a/pkg/apis/networking/validation/validation_test.go +++ b/pkg/apis/networking/validation/validation_test.go @@ -1884,9 +1884,11 @@ func TestValidateIngressClassUpdate(t *testing.T) { Spec: networking.IngressClassSpec{ Controller: "foo.co/bar", Parameters: &networking.IngressClassParametersReference{ - APIGroup: utilpointer.StringPtr("v1"), - Kind: "ConfigMap", - Name: "foo", + APIGroup: utilpointer.StringPtr("v1"), + Scope: utilpointer.StringPtr("Namespace"), + Kind: "ConfigMap", + Name: "foo", + Namespace: utilpointer.StringPtr("bar"), }, }, }, diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 74bd8e6878b..3c990e15372 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -659,6 +659,7 @@ const ( // owner: @hbagdi // kep: http://kep.k8s.io/2365 // alpha: v1.21 + // beta: v1.22 // // Enable Scope and Namespace fields on IngressClassParametersReference. IngressClassNamespacedParams featuregate.Feature = "IngressClassNamespacedParams" @@ -830,7 +831,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS PodAffinityNamespaceSelector: {Default: true, PreRelease: featuregate.Beta}, ServiceLoadBalancerClass: {Default: true, PreRelease: featuregate.Beta}, LogarithmicScaleDown: {Default: false, PreRelease: featuregate.Alpha}, - IngressClassNamespacedParams: {Default: false, PreRelease: featuregate.Alpha}, + IngressClassNamespacedParams: {Default: true, PreRelease: featuregate.Beta}, ServiceInternalTrafficPolicy: {Default: false, PreRelease: featuregate.Alpha}, SuspendJob: {Default: true, PreRelease: featuregate.Beta}, KubeletPodResourcesGetAllocatable: {Default: false, PreRelease: featuregate.Alpha},