From 5ce7528f3e0037d31dd577e9a9f1abe4d1e79866 Mon Sep 17 00:00:00 2001 From: Haowei Cai Date: Mon, 13 May 2019 10:58:43 -0700 Subject: [PATCH 1/3] promote Publish CRD OpenAPI to beta --- pkg/features/kube_features.go | 2 +- .../apiextensions-apiserver/pkg/features/kube_features.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 12e3fba4941..0bf79e5ddd7 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -532,7 +532,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS apiextensionsfeatures.CustomResourceValidation: {Default: true, PreRelease: featuregate.Beta}, apiextensionsfeatures.CustomResourceSubresources: {Default: true, PreRelease: featuregate.Beta}, apiextensionsfeatures.CustomResourceWebhookConversion: {Default: false, PreRelease: featuregate.Alpha}, - apiextensionsfeatures.CustomResourcePublishOpenAPI: {Default: false, PreRelease: featuregate.Alpha}, + apiextensionsfeatures.CustomResourcePublishOpenAPI: {Default: true, PreRelease: featuregate.Beta}, // features that enable backwards compatibility but are scheduled to be removed // ... diff --git a/staging/src/k8s.io/apiextensions-apiserver/pkg/features/kube_features.go b/staging/src/k8s.io/apiextensions-apiserver/pkg/features/kube_features.go index a83f27e5efb..72ff90993ca 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/pkg/features/kube_features.go +++ b/staging/src/k8s.io/apiextensions-apiserver/pkg/features/kube_features.go @@ -66,5 +66,5 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS CustomResourceValidation: {Default: true, PreRelease: featuregate.Beta}, CustomResourceSubresources: {Default: true, PreRelease: featuregate.Beta}, CustomResourceWebhookConversion: {Default: false, PreRelease: featuregate.Alpha}, - CustomResourcePublishOpenAPI: {Default: false, PreRelease: featuregate.Alpha}, + CustomResourcePublishOpenAPI: {Default: true, PreRelease: featuregate.Beta}, } From eb35525d4a9556bcd12f15950fdae3428c7bc1cd Mon Sep 17 00:00:00 2001 From: Haowei Cai Date: Mon, 13 May 2019 12:51:15 -0700 Subject: [PATCH 2/3] stop enabling gate in tests --- test/e2e/apimachinery/crd_publish_openapi.go | 2 +- test/integration/master/crd_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/apimachinery/crd_publish_openapi.go b/test/e2e/apimachinery/crd_publish_openapi.go index b3dc0e39e86..be77274940f 100644 --- a/test/e2e/apimachinery/crd_publish_openapi.go +++ b/test/e2e/apimachinery/crd_publish_openapi.go @@ -49,7 +49,7 @@ var ( metaPattern = `"kind":"%s","apiVersion":"%s/%s","metadata":{"name":"%s"}` ) -var _ = SIGDescribe("CustomResourcePublishOpenAPI [Feature:CustomResourcePublishOpenAPI]", func() { +var _ = SIGDescribe("CustomResourcePublishOpenAPI", func() { f := framework.NewDefaultFramework("crd-publish-openapi") ginkgo.BeforeEach(func() { diff --git a/test/integration/master/crd_test.go b/test/integration/master/crd_test.go index 2ed3784d125..6feab7869da 100644 --- a/test/integration/master/crd_test.go +++ b/test/integration/master/crd_test.go @@ -135,7 +135,7 @@ func TestCRD(t *testing.T) { } func TestCRDOpenAPI(t *testing.T) { - result := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--feature-gates=CustomResourcePublishOpenAPI=true"}, framework.SharedEtcd()) + result := kubeapiservertesting.StartTestServerOrDie(t, nil, nil, framework.SharedEtcd()) defer result.TearDownFn() kubeclient, err := kubernetes.NewForConfig(result.ClientConfig) if err != nil { From 979368ac7dcc34428d61b2fe192f738841783ef5 Mon Sep 17 00:00:00 2001 From: Haowei Cai Date: Thu, 23 May 2019 11:29:40 -0700 Subject: [PATCH 3/3] 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) }