From 979368ac7dcc34428d61b2fe192f738841783ef5 Mon Sep 17 00:00:00 2001 From: Haowei Cai Date: Thu, 23 May 2019 11:29:40 -0700 Subject: [PATCH] apiextensions: don't run openapi controller if genericapiserver disables openapi --- .../apiextensions-apiserver/pkg/apiserver/apiserver.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go index 1a1496ec8f6..a0263b408df 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go @@ -212,7 +212,11 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget) return nil }) s.GenericAPIServer.AddPostStartHookOrDie("start-apiextensions-controllers", func(context genericapiserver.PostStartHookContext) error { - if utilfeature.DefaultFeatureGate.Enabled(apiextensionsfeatures.CustomResourcePublishOpenAPI) { + // OpenAPIVersionedService and StaticOpenAPISpec are populated in generic apiserver PrepareRun(). + // Together they serve the /openapi/v2 endpoint on a generic apiserver. A generic apiserver may + // choose to not enable OpenAPI by having null openAPIConfig, and thus OpenAPIVersionedService + // and StaticOpenAPISpec are both null. In that case we don't run the CRD OpenAPI controller. + if utilfeature.DefaultFeatureGate.Enabled(apiextensionsfeatures.CustomResourcePublishOpenAPI) && s.GenericAPIServer.OpenAPIVersionedService != nil && s.GenericAPIServer.StaticOpenAPISpec != nil { go openapiController.Run(s.GenericAPIServer.StaticOpenAPISpec, s.GenericAPIServer.OpenAPIVersionedService, context.StopCh) }