mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
Merge pull request #100341 from kevindelgado/apiservices-stacktrace
Add ability to skip OpenAPI handler installation
This commit is contained in:
commit
019080fc4d
@ -67,6 +67,9 @@ func createAggregatorConfig(
|
|||||||
genericConfig := kubeAPIServerConfig
|
genericConfig := kubeAPIServerConfig
|
||||||
genericConfig.PostStartHooks = map[string]genericapiserver.PostStartHookConfigEntry{}
|
genericConfig.PostStartHooks = map[string]genericapiserver.PostStartHookConfigEntry{}
|
||||||
genericConfig.RESTOptionsGetter = nil
|
genericConfig.RESTOptionsGetter = nil
|
||||||
|
// prevent generic API server from installing the OpenAPI handler. Aggregator server
|
||||||
|
// has its own customized OpenAPI handler.
|
||||||
|
genericConfig.SkipOpenAPIInstallation = true
|
||||||
|
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.StorageVersionAPI) &&
|
if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.StorageVersionAPI) &&
|
||||||
utilfeature.DefaultFeatureGate.Enabled(genericfeatures.APIServerIdentity) {
|
utilfeature.DefaultFeatureGate.Enabled(genericfeatures.APIServerIdentity) {
|
||||||
|
@ -165,6 +165,8 @@ type Config struct {
|
|||||||
Serializer runtime.NegotiatedSerializer
|
Serializer runtime.NegotiatedSerializer
|
||||||
// OpenAPIConfig will be used in generating OpenAPI spec. This is nil by default. Use DefaultOpenAPIConfig for "working" defaults.
|
// OpenAPIConfig will be used in generating OpenAPI spec. This is nil by default. Use DefaultOpenAPIConfig for "working" defaults.
|
||||||
OpenAPIConfig *openapicommon.Config
|
OpenAPIConfig *openapicommon.Config
|
||||||
|
// SkipOpenAPIInstallation avoids installing the OpenAPI handler if set to true.
|
||||||
|
SkipOpenAPIInstallation bool
|
||||||
|
|
||||||
// RESTOptionsGetter is used to construct RESTStorage types via the generic registry.
|
// RESTOptionsGetter is used to construct RESTStorage types via the generic registry.
|
||||||
RESTOptionsGetter genericregistry.RESTOptionsGetter
|
RESTOptionsGetter genericregistry.RESTOptionsGetter
|
||||||
@ -571,7 +573,8 @@ func (c completedConfig) New(name string, delegationTarget DelegationTarget) (*G
|
|||||||
|
|
||||||
listedPathProvider: apiServerHandler,
|
listedPathProvider: apiServerHandler,
|
||||||
|
|
||||||
openAPIConfig: c.OpenAPIConfig,
|
openAPIConfig: c.OpenAPIConfig,
|
||||||
|
skipOpenAPIInstallation: c.SkipOpenAPIInstallation,
|
||||||
|
|
||||||
postStartHooks: map[string]postStartHookEntry{},
|
postStartHooks: map[string]postStartHookEntry{},
|
||||||
preShutdownHooks: map[string]preShutdownHookEntry{},
|
preShutdownHooks: map[string]preShutdownHookEntry{},
|
||||||
|
@ -133,8 +133,14 @@ type GenericAPIServer struct {
|
|||||||
// Enable swagger and/or OpenAPI if these configs are non-nil.
|
// Enable swagger and/or OpenAPI if these configs are non-nil.
|
||||||
openAPIConfig *openapicommon.Config
|
openAPIConfig *openapicommon.Config
|
||||||
|
|
||||||
|
// SkipOpenAPIInstallation indicates not to install the OpenAPI handler
|
||||||
|
// during PrepareRun.
|
||||||
|
// Set this to true when the specific API Server has its own OpenAPI handler
|
||||||
|
// (e.g. kube-aggregator)
|
||||||
|
skipOpenAPIInstallation bool
|
||||||
|
|
||||||
// OpenAPIVersionedService controls the /openapi/v2 endpoint, and can be used to update the served spec.
|
// OpenAPIVersionedService controls the /openapi/v2 endpoint, and can be used to update the served spec.
|
||||||
// It is set during PrepareRun.
|
// It is set during PrepareRun if `openAPIConfig` is non-nil unless `skipOpenAPIInstallation` is true.
|
||||||
OpenAPIVersionedService *handler.OpenAPIService
|
OpenAPIVersionedService *handler.OpenAPIService
|
||||||
|
|
||||||
// StaticOpenAPISpec is the spec derived from the restful container endpoints.
|
// StaticOpenAPISpec is the spec derived from the restful container endpoints.
|
||||||
@ -289,7 +295,7 @@ type preparedGenericAPIServer struct {
|
|||||||
func (s *GenericAPIServer) PrepareRun() preparedGenericAPIServer {
|
func (s *GenericAPIServer) PrepareRun() preparedGenericAPIServer {
|
||||||
s.delegationTarget.PrepareRun()
|
s.delegationTarget.PrepareRun()
|
||||||
|
|
||||||
if s.openAPIConfig != nil {
|
if s.openAPIConfig != nil && !s.skipOpenAPIInstallation {
|
||||||
s.OpenAPIVersionedService, s.StaticOpenAPISpec = routes.OpenAPI{
|
s.OpenAPIVersionedService, s.StaticOpenAPISpec = routes.OpenAPI{
|
||||||
Config: s.openAPIConfig,
|
Config: s.openAPIConfig,
|
||||||
}.Install(s.Handler.GoRestfulContainer, s.Handler.NonGoRestfulMux)
|
}.Install(s.Handler.GoRestfulContainer, s.Handler.NonGoRestfulMux)
|
||||||
|
@ -142,6 +142,9 @@ func (o AggregatorOptions) RunAggregator(stopCh <-chan struct{}) error {
|
|||||||
)
|
)
|
||||||
serverConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(openapi.GetOpenAPIDefinitions, openapinamer.NewDefinitionNamer(aggregatorscheme.Scheme))
|
serverConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(openapi.GetOpenAPIDefinitions, openapinamer.NewDefinitionNamer(aggregatorscheme.Scheme))
|
||||||
serverConfig.OpenAPIConfig.Info.Title = "kube-aggregator"
|
serverConfig.OpenAPIConfig.Info.Title = "kube-aggregator"
|
||||||
|
// prevent generic API server from installing the OpenAPI handler. Aggregator server
|
||||||
|
// has its own customized OpenAPI handler.
|
||||||
|
serverConfig.SkipOpenAPIInstallation = true
|
||||||
|
|
||||||
serviceResolver := apiserver.NewClusterIPServiceResolver(serverConfig.SharedInformerFactory.Core().V1().Services().Lister())
|
serviceResolver := apiserver.NewClusterIPServiceResolver(serverConfig.SharedInformerFactory.Core().V1().Services().Lister())
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user