diff --git a/services/apiserver.go b/services/apiserver.go
index fa282ec63584012db64b37706545022a3df55c57..9d5f85ef4b8c7e319a5b8080e41b008192143c8f 100644
--- a/services/apiserver.go
+++ b/services/apiserver.go
@@ -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)