From fd132665a8a4751f358b19e87081474eae2b3397 Mon Sep 17 00:00:00 2001 From: Jiahui Feng Date: Thu, 26 Oct 2023 10:26:03 -0700 Subject: [PATCH] extend VAP status controller for extensions type checking. --- .../app/validatingadmissionpolicystatus.go | 9 +++++++-- .../validatingadmissionpolicystatus/controller_test.go | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cmd/kube-controller-manager/app/validatingadmissionpolicystatus.go b/cmd/kube-controller-manager/app/validatingadmissionpolicystatus.go index 9f4c78c52ba..2fd14589f5f 100644 --- a/cmd/kube-controller-manager/app/validatingadmissionpolicystatus.go +++ b/cmd/kube-controller-manager/app/validatingadmissionpolicystatus.go @@ -19,10 +19,11 @@ package app import ( "context" + apiextensionsscheme "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/scheme" pluginvalidatingadmissionpolicy "k8s.io/apiserver/pkg/admission/plugin/validatingadmissionpolicy" "k8s.io/apiserver/pkg/cel/openapi/resolver" genericfeatures "k8s.io/apiserver/pkg/features" - "k8s.io/client-go/kubernetes/scheme" + k8sscheme "k8s.io/client-go/kubernetes/scheme" "k8s.io/component-base/featuregate" "k8s.io/controller-manager/controller" "k8s.io/kubernetes/cmd/kube-controller-manager/names" @@ -42,8 +43,12 @@ func newValidatingAdmissionPolicyStatusControllerDescriptor() *ControllerDescrip func startValidatingAdmissionPolicyStatusController(ctx context.Context, controllerContext ControllerContext, controllerName string) (controller.Interface, bool, error) { // KCM won't start the controller without the feature gate set. + + schemaResolver := resolver.NewDefinitionsSchemaResolver(openapi.GetOpenAPIDefinitions, k8sscheme.Scheme, apiextensionsscheme.Scheme). + Combine(&resolver.ClientDiscoveryResolver{Discovery: controllerContext.ClientBuilder.DiscoveryClientOrDie(names.ValidatingAdmissionPolicyStatusController)}) + typeChecker := &pluginvalidatingadmissionpolicy.TypeChecker{ - SchemaResolver: resolver.NewDefinitionsSchemaResolver(scheme.Scheme, openapi.GetOpenAPIDefinitions), + SchemaResolver: schemaResolver, RestMapper: controllerContext.RESTMapper, } c, err := validatingadmissionpolicystatus.NewController( diff --git a/pkg/controller/validatingadmissionpolicystatus/controller_test.go b/pkg/controller/validatingadmissionpolicystatus/controller_test.go index 6eb684e74c6..74af1be10a7 100644 --- a/pkg/controller/validatingadmissionpolicystatus/controller_test.go +++ b/pkg/controller/validatingadmissionpolicystatus/controller_test.go @@ -103,7 +103,7 @@ func TestTypeChecking(t *testing.T) { client := fake.NewSimpleClientset(policy) informerFactory := informers.NewSharedInformerFactory(client, 0) typeChecker := &validatingadmissionpolicy.TypeChecker{ - SchemaResolver: resolver.NewDefinitionsSchemaResolver(scheme.Scheme, openapi.GetOpenAPIDefinitions), + SchemaResolver: resolver.NewDefinitionsSchemaResolver(openapi.GetOpenAPIDefinitions, scheme.Scheme), RestMapper: testrestmapper.TestOnlyStaticRESTMapper(scheme.Scheme), } controller, err := NewController(