Skip to content
Snippets Groups Projects
Commit 5ed45cbf authored by kaiyou's avatar kaiyou
Browse files

Expose CRDs through the discovery API

parent 6255edbc
No related branches found
No related tags found
No related merge requests found
Pipeline #27104 passed
......@@ -8,6 +8,7 @@ import (
"os"
"time"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
extensions "k8s.io/apiextensions-apiserver/pkg/apiserver"
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
......@@ -344,13 +345,29 @@ var kubeApiserver = &Unit{
apiConfig.GenericConfig.RESTOptionsGetter = &RestOptionsFactory{StorageFactory: storageFactory}
openapiFactory := openapi.GetOpenAPIDefinitionsWithoutDisabledFeatures(generatedopenapi.GetOpenAPIDefinitions)
apiConfig.GenericConfig.OpenAPIConfig = server.DefaultOpenAPIConfig(openapiFactory, openapinamer.NewDefinitionNamer(legacyscheme.Scheme, extensions.Scheme))
apiConfig.GenericConfig.OpenAPIConfig = server.DefaultOpenAPIConfig(openapiFactory, openapinamer.NewDefinitionNamer(legacyscheme.Scheme, extensions.Scheme))
apiConfig.GenericConfig.OpenAPIV3Config = server.DefaultOpenAPIV3Config(openapiFactory, openapinamer.NewDefinitionNamer(legacyscheme.Scheme, extensions.Scheme))
apiConfig.ExtraConfig.ClusterAuthenticationInfo.ClientCA = config.SecureServing.ClientCA
apiServer, err := apiConfig.Complete().New(extensionServer.GenericAPIServer)
if err != nil {
return fmt.Errorf("could not initialize generic apiserver: %w", err)
}
// Explicitely register api extensions group for discovery, otherwise it will never be exposed
// anywhere. Currently the aggregator (which hepto does not instantiate) has a hardcoded list of
// all apigroups for setting up discovery properly through delegates, this situation has been going
// on since kubernetes 1.7 and requires massive refactoring.
// TODO: this still does not explain how CRD apigroups are discovered, might require some more
// investigation
extensionsVersion := meta.GroupVersionForDiscovery{
GroupVersion: "apiextensions.k8s.io/v1",
Version: "v1",
}
apiServer.GenericAPIServer.DiscoveryGroupManager.AddGroup(meta.APIGroup{
Name: apiextensions.GroupName,
Versions: []meta.GroupVersionForDiscovery{extensionsVersion},
PreferredVersion: extensionsVersion,
})
// Finally start the apiserver
server := apiServer.GenericAPIServer.PrepareRun()
go clients.Start(ctx)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment