mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-09 12:07:47 +00:00
expose apiregistration.k8s.io into OpenAPIV3
This commit is contained in:
parent
b3d94ae74f
commit
ad2b4368e2
@ -440,6 +440,8 @@ func (s *APIAggregator) PrepareRun() (preparedAPIAggregator, error) {
|
|||||||
openAPIV3Aggregator, err := openapiv3aggregator.BuildAndRegisterAggregator(
|
openAPIV3Aggregator, err := openapiv3aggregator.BuildAndRegisterAggregator(
|
||||||
specDownloaderV3,
|
specDownloaderV3,
|
||||||
s.GenericAPIServer.NextDelegate(),
|
s.GenericAPIServer.NextDelegate(),
|
||||||
|
s.GenericAPIServer.Handler.GoRestfulContainer,
|
||||||
|
s.openAPIConfig,
|
||||||
s.GenericAPIServer.Handler.NonGoRestfulMux)
|
s.GenericAPIServer.Handler.NonGoRestfulMux)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return preparedAPIAggregator{}, err
|
return preparedAPIAggregator{}, err
|
||||||
|
@ -25,9 +25,13 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/emicklei/go-restful/v3"
|
||||||
|
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apiserver/pkg/endpoints/metrics"
|
"k8s.io/apiserver/pkg/endpoints/metrics"
|
||||||
"k8s.io/apiserver/pkg/server"
|
"k8s.io/apiserver/pkg/server"
|
||||||
"k8s.io/apiserver/pkg/server/mux"
|
"k8s.io/apiserver/pkg/server/mux"
|
||||||
|
"k8s.io/apiserver/pkg/server/routes"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
v1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
|
v1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
|
||||||
"k8s.io/kube-openapi/pkg/common"
|
"k8s.io/kube-openapi/pkg/common"
|
||||||
@ -73,12 +77,29 @@ func (s *specProxier) GetAPIServiceNames() []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// BuildAndRegisterAggregator registered OpenAPI aggregator handler. This function is not thread safe as it only being called on startup.
|
// BuildAndRegisterAggregator registered OpenAPI aggregator handler. This function is not thread safe as it only being called on startup.
|
||||||
func BuildAndRegisterAggregator(downloader Downloader, delegationTarget server.DelegationTarget, pathHandler common.PathHandlerByGroupVersion) (SpecProxier, error) {
|
func BuildAndRegisterAggregator(downloader Downloader, delegationTarget server.DelegationTarget, aggregatorService *restful.Container, openAPIConfig *common.Config, pathHandler common.PathHandlerByGroupVersion) (SpecProxier, error) {
|
||||||
s := &specProxier{
|
s := &specProxier{
|
||||||
apiServiceInfo: map[string]*openAPIV3APIServiceInfo{},
|
apiServiceInfo: map[string]*openAPIV3APIServiceInfo{},
|
||||||
downloader: downloader,
|
downloader: downloader,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if aggregatorService != nil && openAPIConfig != nil {
|
||||||
|
// Make native types exposed by aggregator available to the aggregated
|
||||||
|
// OpenAPI (normal handle is disabled by skipOpenAPIInstallation option)
|
||||||
|
aggregatorLocalServiceName := "k8s_internal_local_kube_aggregator_types"
|
||||||
|
v3Mux := mux.NewPathRecorderMux(aggregatorLocalServiceName)
|
||||||
|
_ = routes.OpenAPI{
|
||||||
|
Config: openAPIConfig,
|
||||||
|
}.InstallV3(aggregatorService, v3Mux)
|
||||||
|
|
||||||
|
s.AddUpdateAPIService(v3Mux, &v1.APIService{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: aggregatorLocalServiceName,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
s.UpdateAPIServiceSpec(aggregatorLocalServiceName)
|
||||||
|
}
|
||||||
|
|
||||||
i := 1
|
i := 1
|
||||||
for delegate := delegationTarget; delegate != nil; delegate = delegate.NextDelegate() {
|
for delegate := delegationTarget; delegate != nil; delegate = delegate.NextDelegate() {
|
||||||
handler := delegate.UnprotectedHandler()
|
handler := delegate.UnprotectedHandler()
|
||||||
|
@ -89,7 +89,7 @@ func TestV2APIService(t *testing.T) {
|
|||||||
downloader := Downloader{}
|
downloader := Downloader{}
|
||||||
pathHandler := mux.NewPathRecorderMux("aggregator_test")
|
pathHandler := mux.NewPathRecorderMux("aggregator_test")
|
||||||
var serveHandler http.Handler = pathHandler
|
var serveHandler http.Handler = pathHandler
|
||||||
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), pathHandler)
|
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), nil, nil, pathHandler)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
@ -133,7 +133,7 @@ func TestV3APIService(t *testing.T) {
|
|||||||
|
|
||||||
pathHandler := mux.NewPathRecorderMux("aggregator_test")
|
pathHandler := mux.NewPathRecorderMux("aggregator_test")
|
||||||
var serveHandler http.Handler = pathHandler
|
var serveHandler http.Handler = pathHandler
|
||||||
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), pathHandler)
|
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), nil, nil, pathHandler)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
@ -178,7 +178,7 @@ func TestOpenAPIRequestMetrics(t *testing.T) {
|
|||||||
|
|
||||||
pathHandler := mux.NewPathRecorderMux("aggregator_metrics_test")
|
pathHandler := mux.NewPathRecorderMux("aggregator_metrics_test")
|
||||||
var serveHandler http.Handler = pathHandler
|
var serveHandler http.Handler = pathHandler
|
||||||
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), pathHandler)
|
specProxier, err := BuildAndRegisterAggregator(downloader, genericapiserver.NewEmptyDelegate(), nil, nil, pathHandler)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user