...
1
16
17 package apiserver
18
19 import (
20 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
21 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
22 apiextensionsapiserver "k8s.io/apiextensions-apiserver/pkg/apiserver"
23 apiextensionsoptions "k8s.io/apiextensions-apiserver/pkg/cmd/server/options"
24 "k8s.io/apimachinery/pkg/runtime"
25 "k8s.io/apimachinery/pkg/runtime/schema"
26 "k8s.io/apiserver/pkg/admission"
27 "k8s.io/apiserver/pkg/server"
28 "k8s.io/apiserver/pkg/util/webhook"
29 "k8s.io/client-go/informers"
30
31 controlplaneapiserver "k8s.io/kubernetes/pkg/controlplane/apiserver/options"
32 )
33
34 func CreateAPIExtensionsConfig(
35 kubeAPIServerConfig server.Config,
36 kubeInformers informers.SharedInformerFactory,
37 pluginInitializers []admission.PluginInitializer,
38 commandOptions controlplaneapiserver.CompletedOptions,
39 masterCount int,
40 serviceResolver webhook.ServiceResolver,
41 authResolverWrapper webhook.AuthenticationInfoResolverWrapper,
42 ) (*apiextensionsapiserver.Config, error) {
43
44
45 genericConfig := kubeAPIServerConfig
46 genericConfig.PostStartHooks = map[string]server.PostStartHookConfigEntry{}
47 genericConfig.RESTOptionsGetter = nil
48
49
50
51
52 etcdOptions := *commandOptions.Etcd
53
54 etcdOptions.StorageConfig.Codec = apiextensionsapiserver.Codecs.LegacyCodec(v1beta1.SchemeGroupVersion, v1.SchemeGroupVersion)
55
56 etcdOptions.StorageConfig.EncodeVersioner = runtime.NewMultiGroupVersioner(v1beta1.SchemeGroupVersion, schema.GroupKind{Group: v1beta1.GroupName})
57 etcdOptions.SkipHealthEndpoints = true
58 if err := etcdOptions.ApplyTo(&genericConfig); err != nil {
59 return nil, err
60 }
61
62
63 if err := commandOptions.APIEnablement.ApplyTo(
64 &genericConfig,
65 apiextensionsapiserver.DefaultAPIResourceConfigSource(),
66 apiextensionsapiserver.Scheme); err != nil {
67 return nil, err
68 }
69 apiextensionsConfig := &apiextensionsapiserver.Config{
70 GenericConfig: &server.RecommendedConfig{
71 Config: genericConfig,
72 SharedInformerFactory: kubeInformers,
73 },
74 ExtraConfig: apiextensionsapiserver.ExtraConfig{
75 CRDRESTOptionsGetter: apiextensionsoptions.NewCRDRESTOptionsGetter(etcdOptions, genericConfig.ResourceTransformers, genericConfig.StorageObjectCountTracker),
76 MasterCount: masterCount,
77 AuthResolverWrapper: authResolverWrapper,
78 ServiceResolver: serviceResolver,
79 },
80 }
81
82
83 apiextensionsConfig.GenericConfig.PostStartHooks = map[string]server.PostStartHookConfigEntry{}
84
85 return apiextensionsConfig, nil
86 }
87
View as plain text