mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 03:03:59 +00:00
SPLIT: kube-apiserver/corerest: split constructor
This commit is contained in:
parent
68b7685b2a
commit
dad3e4d211
@ -575,19 +575,21 @@ func labelAPIServerHeartbeatFunc(identity string) lease.ProcessLeaseFunc {
|
|||||||
// InstallLegacyAPI will install the legacy APIs for the restStorageProviders if they are enabled.
|
// InstallLegacyAPI will install the legacy APIs for the restStorageProviders if they are enabled.
|
||||||
func (m *Instance) InstallLegacyAPI(c *completedConfig, restOptionsGetter generic.RESTOptionsGetter) error {
|
func (m *Instance) InstallLegacyAPI(c *completedConfig, restOptionsGetter generic.RESTOptionsGetter) error {
|
||||||
legacyRESTStorageProvider := corerest.LegacyRESTStorageProvider{
|
legacyRESTStorageProvider := corerest.LegacyRESTStorageProvider{
|
||||||
StorageFactory: c.ExtraConfig.StorageFactory,
|
GenericLegacyRESTStorageProvider: corerest.GenericLegacyRESTStorageProvider{
|
||||||
ProxyTransport: c.ExtraConfig.ProxyTransport,
|
StorageFactory: c.ExtraConfig.StorageFactory,
|
||||||
KubeletClientConfig: c.ExtraConfig.KubeletClientConfig,
|
EventTTL: c.ExtraConfig.EventTTL,
|
||||||
EventTTL: c.ExtraConfig.EventTTL,
|
LoopbackClientConfig: c.GenericConfig.LoopbackClientConfig,
|
||||||
ServiceIPRange: c.ExtraConfig.ServiceIPRange,
|
ServiceAccountIssuer: c.ExtraConfig.ServiceAccountIssuer,
|
||||||
SecondaryServiceIPRange: c.ExtraConfig.SecondaryServiceIPRange,
|
ExtendExpiration: c.ExtraConfig.ExtendExpiration,
|
||||||
ServiceNodePortRange: c.ExtraConfig.ServiceNodePortRange,
|
ServiceAccountMaxExpiration: c.ExtraConfig.ServiceAccountMaxExpiration,
|
||||||
LoopbackClientConfig: c.GenericConfig.LoopbackClientConfig,
|
APIAudiences: c.GenericConfig.Authentication.APIAudiences,
|
||||||
ServiceAccountIssuer: c.ExtraConfig.ServiceAccountIssuer,
|
Informers: c.ExtraConfig.VersionedInformers,
|
||||||
ExtendExpiration: c.ExtraConfig.ExtendExpiration,
|
},
|
||||||
ServiceAccountMaxExpiration: c.ExtraConfig.ServiceAccountMaxExpiration,
|
ProxyTransport: c.ExtraConfig.ProxyTransport,
|
||||||
APIAudiences: c.GenericConfig.Authentication.APIAudiences,
|
KubeletClientConfig: c.ExtraConfig.KubeletClientConfig,
|
||||||
Informers: c.ExtraConfig.VersionedInformers,
|
ServiceIPRange: c.ExtraConfig.ServiceIPRange,
|
||||||
|
SecondaryServiceIPRange: c.ExtraConfig.SecondaryServiceIPRange,
|
||||||
|
ServiceNodePortRange: c.ExtraConfig.ServiceNodePortRange,
|
||||||
}
|
}
|
||||||
legacyRESTStorage, apiGroupInfo, err := legacyRESTStorageProvider.NewLegacyRESTStorage(c.ExtraConfig.APIResourceConfigSource, restOptionsGetter)
|
legacyRESTStorage, apiGroupInfo, err := legacyRESTStorageProvider.NewLegacyRESTStorage(c.ExtraConfig.APIResourceConfigSource, restOptionsGetter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -153,14 +153,16 @@ func TestLegacyRestStorageStrategies(t *testing.T) {
|
|||||||
defer etcdserver.Terminate(t)
|
defer etcdserver.Terminate(t)
|
||||||
|
|
||||||
storageProvider := corerest.LegacyRESTStorageProvider{
|
storageProvider := corerest.LegacyRESTStorageProvider{
|
||||||
StorageFactory: apiserverCfg.ExtraConfig.StorageFactory,
|
GenericLegacyRESTStorageProvider: corerest.GenericLegacyRESTStorageProvider{
|
||||||
|
StorageFactory: apiserverCfg.ExtraConfig.StorageFactory,
|
||||||
|
EventTTL: apiserverCfg.ExtraConfig.EventTTL,
|
||||||
|
LoopbackClientConfig: apiserverCfg.GenericConfig.LoopbackClientConfig,
|
||||||
|
Informers: apiserverCfg.ExtraConfig.VersionedInformers,
|
||||||
|
},
|
||||||
ProxyTransport: apiserverCfg.ExtraConfig.ProxyTransport,
|
ProxyTransport: apiserverCfg.ExtraConfig.ProxyTransport,
|
||||||
KubeletClientConfig: apiserverCfg.ExtraConfig.KubeletClientConfig,
|
KubeletClientConfig: apiserverCfg.ExtraConfig.KubeletClientConfig,
|
||||||
EventTTL: apiserverCfg.ExtraConfig.EventTTL,
|
|
||||||
ServiceIPRange: apiserverCfg.ExtraConfig.ServiceIPRange,
|
ServiceIPRange: apiserverCfg.ExtraConfig.ServiceIPRange,
|
||||||
ServiceNodePortRange: apiserverCfg.ExtraConfig.ServiceNodePortRange,
|
ServiceNodePortRange: apiserverCfg.ExtraConfig.ServiceNodePortRange,
|
||||||
LoopbackClientConfig: apiserverCfg.GenericConfig.LoopbackClientConfig,
|
|
||||||
Informers: apiserverCfg.ExtraConfig.VersionedInformers,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_, apiGroupInfo, err := storageProvider.NewLegacyRESTStorage(serverstorage.NewResourceConfig(), apiserverCfg.GenericConfig.RESTOptionsGetter)
|
_, apiGroupInfo, err := storageProvider.NewLegacyRESTStorage(serverstorage.NewResourceConfig(), apiserverCfg.GenericConfig.RESTOptionsGetter)
|
||||||
|
@ -67,20 +67,12 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/serviceaccount"
|
"k8s.io/kubernetes/pkg/serviceaccount"
|
||||||
)
|
)
|
||||||
|
|
||||||
// LegacyRESTStorageProvider provides information needed to build RESTStorage for core, but
|
// GenericLegacyRESTStorageProvider provides information needed to build RESTStorage
|
||||||
// does NOT implement the "normal" RESTStorageProvider (yet!)
|
// for generic resources in core, but does NOT implement the "normal"
|
||||||
type LegacyRESTStorageProvider struct {
|
// RESTStorageProvider (yet!)
|
||||||
|
type GenericLegacyRESTStorageProvider struct {
|
||||||
StorageFactory serverstorage.StorageFactory
|
StorageFactory serverstorage.StorageFactory
|
||||||
// Used for custom proxy dialing, and proxy TLS options
|
EventTTL time.Duration
|
||||||
ProxyTransport http.RoundTripper
|
|
||||||
KubeletClientConfig kubeletclient.KubeletClientConfig
|
|
||||||
EventTTL time.Duration
|
|
||||||
|
|
||||||
// ServiceIPRange is used to build cluster IPs for discovery.
|
|
||||||
ServiceIPRange net.IPNet
|
|
||||||
// allocates ips for secondary service cidr in dual stack clusters
|
|
||||||
SecondaryServiceIPRange net.IPNet
|
|
||||||
ServiceNodePortRange utilnet.PortRange
|
|
||||||
|
|
||||||
ServiceAccountIssuer serviceaccount.TokenGenerator
|
ServiceAccountIssuer serviceaccount.TokenGenerator
|
||||||
ServiceAccountMaxExpiration time.Duration
|
ServiceAccountMaxExpiration time.Duration
|
||||||
@ -92,16 +84,24 @@ type LegacyRESTStorageProvider struct {
|
|||||||
Informers informers.SharedInformerFactory
|
Informers informers.SharedInformerFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
// LegacyRESTStorage returns stateful information about particular instances of REST storage to
|
// LegacyRESTStorageProvider provides information needed to build RESTStorage for core, but
|
||||||
// master.go for wiring controllers.
|
// does NOT implement the "normal" RESTStorageProvider (yet!)
|
||||||
// TODO remove this by running the controller as a poststarthook
|
type LegacyRESTStorageProvider struct {
|
||||||
type LegacyRESTStorage struct {
|
GenericLegacyRESTStorageProvider
|
||||||
ServiceClusterIPAllocator rangeallocation.RangeRegistry
|
|
||||||
SecondaryServiceClusterIPAllocator rangeallocation.RangeRegistry
|
// Used for custom proxy dialing, and proxy TLS options
|
||||||
ServiceNodePortAllocator rangeallocation.RangeRegistry
|
ProxyTransport http.RoundTripper
|
||||||
|
KubeletClientConfig kubeletclient.KubeletClientConfig
|
||||||
|
|
||||||
|
// ServiceIPRange is used to build cluster IPs for discovery.
|
||||||
|
ServiceIPRange net.IPNet
|
||||||
|
|
||||||
|
// allocates ips for secondary service cidr in dual stack clusters
|
||||||
|
SecondaryServiceIPRange net.IPNet
|
||||||
|
ServiceNodePortRange utilnet.PortRange
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (kubernetesservice.RangeRegistries, genericapiserver.APIGroupInfo, error) {
|
func (c GenericLegacyRESTStorageProvider) NewRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (genericapiserver.APIGroupInfo, error) {
|
||||||
apiGroupInfo := genericapiserver.APIGroupInfo{
|
apiGroupInfo := genericapiserver.APIGroupInfo{
|
||||||
PrioritizedVersions: legacyscheme.Scheme.PrioritizedVersionsForGroup(""),
|
PrioritizedVersions: legacyscheme.Scheme.PrioritizedVersionsForGroup(""),
|
||||||
VersionedResourcesStorageMap: map[string]map[string]rest.Storage{},
|
VersionedResourcesStorageMap: map[string]map[string]rest.Storage{},
|
||||||
@ -110,34 +110,98 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
NegotiatedSerializer: legacyscheme.Codecs,
|
NegotiatedSerializer: legacyscheme.Codecs,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
eventStorage, err := eventstore.NewREST(restOptionsGetter, uint64(c.EventTTL.Seconds()))
|
||||||
|
if err != nil {
|
||||||
|
return genericapiserver.APIGroupInfo{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
resourceQuotaStorage, resourceQuotaStatusStorage, err := resourcequotastore.NewREST(restOptionsGetter)
|
||||||
|
if err != nil {
|
||||||
|
return genericapiserver.APIGroupInfo{}, err
|
||||||
|
}
|
||||||
|
secretStorage, err := secretstore.NewREST(restOptionsGetter)
|
||||||
|
if err != nil {
|
||||||
|
return genericapiserver.APIGroupInfo{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
configMapStorage, err := configmapstore.NewREST(restOptionsGetter)
|
||||||
|
if err != nil {
|
||||||
|
return genericapiserver.APIGroupInfo{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
namespaceStorage, namespaceStatusStorage, namespaceFinalizeStorage, err := namespacestore.NewREST(restOptionsGetter)
|
||||||
|
if err != nil {
|
||||||
|
return genericapiserver.APIGroupInfo{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var serviceAccountStorage *serviceaccountstore.REST
|
||||||
|
if c.ServiceAccountIssuer != nil {
|
||||||
|
serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, c.ServiceAccountIssuer, c.APIAudiences, c.ServiceAccountMaxExpiration, nil, secretStorage.Store, c.ExtendExpiration)
|
||||||
|
} else {
|
||||||
|
serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, nil, nil, 0, nil, nil, false)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return genericapiserver.APIGroupInfo{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
storage := map[string]rest.Storage{}
|
||||||
|
if resource := "events"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
|
storage[resource] = eventStorage
|
||||||
|
}
|
||||||
|
|
||||||
|
if resource := "resourcequotas"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
|
storage[resource] = resourceQuotaStorage
|
||||||
|
storage[resource+"/status"] = resourceQuotaStatusStorage
|
||||||
|
}
|
||||||
|
|
||||||
|
if resource := "namespaces"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
|
storage[resource] = namespaceStorage
|
||||||
|
storage[resource+"/status"] = namespaceStatusStorage
|
||||||
|
storage[resource+"/finalize"] = namespaceFinalizeStorage
|
||||||
|
}
|
||||||
|
|
||||||
|
if resource := "secrets"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
|
storage[resource] = secretStorage
|
||||||
|
}
|
||||||
|
|
||||||
|
if resource := "serviceaccounts"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
|
storage[resource] = serviceAccountStorage
|
||||||
|
if serviceAccountStorage.Token != nil {
|
||||||
|
storage[resource+"/token"] = serviceAccountStorage.Token
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if resource := "configmaps"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
|
storage[resource] = configMapStorage
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(storage) > 0 {
|
||||||
|
apiGroupInfo.VersionedResourcesStorageMap["v1"] = storage
|
||||||
|
}
|
||||||
|
|
||||||
|
return apiGroupInfo, nil
|
||||||
|
}
|
||||||
|
func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource serverstorage.APIResourceConfigSource, restOptionsGetter generic.RESTOptionsGetter) (kubernetesservice.RangeRegistries, genericapiserver.APIGroupInfo, error) {
|
||||||
|
apiGroupInfo, err := c.GenericLegacyRESTStorageProvider.NewRESTStorage(apiResourceConfigSource, restOptionsGetter)
|
||||||
|
if err != nil {
|
||||||
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
|
}
|
||||||
|
|
||||||
podDisruptionClient, err := policyclient.NewForConfig(c.LoopbackClientConfig)
|
podDisruptionClient, err := policyclient.NewForConfig(c.LoopbackClientConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
}
|
}
|
||||||
restStorage := kubernetesservice.RangeRegistries{}
|
|
||||||
|
|
||||||
podTemplateStorage, err := podtemplatestore.NewREST(restOptionsGetter)
|
podTemplateStorage, err := podtemplatestore.NewREST(restOptionsGetter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
eventStorage, err := eventstore.NewREST(restOptionsGetter, uint64(c.EventTTL.Seconds()))
|
|
||||||
if err != nil {
|
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
|
||||||
}
|
|
||||||
limitRangeStorage, err := limitrangestore.NewREST(restOptionsGetter)
|
limitRangeStorage, err := limitrangestore.NewREST(restOptionsGetter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
resourceQuotaStorage, resourceQuotaStatusStorage, err := resourcequotastore.NewREST(restOptionsGetter)
|
|
||||||
if err != nil {
|
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
|
||||||
}
|
|
||||||
secretStorage, err := secretstore.NewREST(restOptionsGetter)
|
|
||||||
if err != nil {
|
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
|
||||||
}
|
|
||||||
persistentVolumeStorage, persistentVolumeStatusStorage, err := pvstore.NewREST(restOptionsGetter)
|
persistentVolumeStorage, persistentVolumeStatusStorage, err := pvstore.NewREST(restOptionsGetter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
@ -146,15 +210,6 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
}
|
}
|
||||||
configMapStorage, err := configmapstore.NewREST(restOptionsGetter)
|
|
||||||
if err != nil {
|
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
namespaceStorage, namespaceStatusStorage, namespaceFinalizeStorage, err := namespacestore.NewREST(restOptionsGetter)
|
|
||||||
if err != nil {
|
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
endpointsStorage, err := endpointsstore.NewREST(restOptionsGetter)
|
endpointsStorage, err := endpointsstore.NewREST(restOptionsGetter)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -176,15 +231,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var serviceAccountStorage *serviceaccountstore.REST
|
var rangeRegistries kubernetesservice.RangeRegistries
|
||||||
if c.ServiceAccountIssuer != nil {
|
|
||||||
serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, c.ServiceAccountIssuer, c.APIAudiences, c.ServiceAccountMaxExpiration, podStorage.Pod.Store, secretStorage.Store, c.ExtendExpiration)
|
|
||||||
} else {
|
|
||||||
serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, nil, nil, 0, nil, nil, false)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var serviceClusterIPRegistry rangeallocation.RangeRegistry
|
var serviceClusterIPRegistry rangeallocation.RangeRegistry
|
||||||
serviceClusterIPRange := c.ServiceIPRange
|
serviceClusterIPRange := c.ServiceIPRange
|
||||||
@ -225,7 +272,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
}
|
}
|
||||||
|
|
||||||
serviceClusterIPAllocator.EnableMetrics()
|
serviceClusterIPAllocator.EnableMetrics()
|
||||||
restStorage.ServiceClusterIPRegistry = serviceClusterIPRegistry
|
rangeRegistries.ServiceClusterIPRegistry = serviceClusterIPRegistry
|
||||||
|
|
||||||
// allocator for secondary service ip range
|
// allocator for secondary service ip range
|
||||||
if c.SecondaryServiceIPRange.IP != nil {
|
if c.SecondaryServiceIPRange.IP != nil {
|
||||||
@ -256,7 +303,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
secondaryServiceClusterIPAllocator.EnableMetrics()
|
secondaryServiceClusterIPAllocator.EnableMetrics()
|
||||||
restStorage.SecondaryServiceClusterIPRegistry = secondaryServiceClusterIPRegistry
|
rangeRegistries.SecondaryServiceClusterIPRegistry = secondaryServiceClusterIPRegistry
|
||||||
}
|
}
|
||||||
|
|
||||||
var serviceNodePortRegistry rangeallocation.RangeRegistry
|
var serviceNodePortRegistry rangeallocation.RangeRegistry
|
||||||
@ -274,12 +321,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, fmt.Errorf("cannot create cluster port allocator: %v", err)
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, fmt.Errorf("cannot create cluster port allocator: %v", err)
|
||||||
}
|
}
|
||||||
serviceNodePortAllocator.EnableMetrics()
|
serviceNodePortAllocator.EnableMetrics()
|
||||||
restStorage.ServiceNodePortRegistry = serviceNodePortRegistry
|
rangeRegistries.ServiceNodePortRegistry = serviceNodePortRegistry
|
||||||
|
|
||||||
controllerStorage, err := controllerstore.NewStorage(restOptionsGetter)
|
|
||||||
if err != nil {
|
|
||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
serviceIPAllocators := map[api.IPFamily]ipallocator.Interface{
|
serviceIPAllocators := map[api.IPFamily]ipallocator.Interface{
|
||||||
serviceClusterIPAllocator.IPFamily(): serviceClusterIPAllocator,
|
serviceClusterIPAllocator.IPFamily(): serviceClusterIPAllocator,
|
||||||
@ -300,7 +342,20 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
storage := map[string]rest.Storage{}
|
storage := apiGroupInfo.VersionedResourcesStorageMap["v1"]
|
||||||
|
if storage == nil {
|
||||||
|
storage = map[string]rest.Storage{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// potentially override the generic serviceaccount storage with one that supports pods
|
||||||
|
var serviceAccountStorage *serviceaccountstore.REST
|
||||||
|
if c.ServiceAccountIssuer != nil {
|
||||||
|
serviceAccountStorage, err = serviceaccountstore.NewREST(restOptionsGetter, c.ServiceAccountIssuer, c.APIAudiences, c.ServiceAccountMaxExpiration, podStorage.Pod.Store, storage["secrets"].(rest.Getter), c.ExtendExpiration)
|
||||||
|
if err != nil {
|
||||||
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if resource := "pods"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
if resource := "pods"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
storage[resource] = podStorage.Pod
|
storage[resource] = podStorage.Pod
|
||||||
storage[resource+"/attach"] = podStorage.Attach
|
storage[resource+"/attach"] = podStorage.Attach
|
||||||
@ -314,7 +369,6 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
storage[resource+"/eviction"] = podStorage.Eviction
|
storage[resource+"/eviction"] = podStorage.Eviction
|
||||||
}
|
}
|
||||||
storage[resource+"/ephemeralcontainers"] = podStorage.EphemeralContainers
|
storage[resource+"/ephemeralcontainers"] = podStorage.EphemeralContainers
|
||||||
|
|
||||||
}
|
}
|
||||||
if resource := "bindings"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
if resource := "bindings"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
storage[resource] = podStorage.LegacyBinding
|
storage[resource] = podStorage.LegacyBinding
|
||||||
@ -325,6 +379,11 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
}
|
}
|
||||||
|
|
||||||
if resource := "replicationcontrollers"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
if resource := "replicationcontrollers"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
|
controllerStorage, err := controllerstore.NewStorage(restOptionsGetter)
|
||||||
|
if err != nil {
|
||||||
|
return kubernetesservice.RangeRegistries{}, genericapiserver.APIGroupInfo{}, err
|
||||||
|
}
|
||||||
|
|
||||||
storage[resource] = controllerStorage.Controller
|
storage[resource] = controllerStorage.Controller
|
||||||
storage[resource+"/status"] = controllerStorage.Status
|
storage[resource+"/status"] = controllerStorage.Status
|
||||||
if legacyscheme.Scheme.IsVersionRegistered(schema.GroupVersion{Group: "autoscaling", Version: "v1"}) {
|
if legacyscheme.Scheme.IsVersionRegistered(schema.GroupVersion{Group: "autoscaling", Version: "v1"}) {
|
||||||
@ -332,6 +391,20 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// potentially override generic storage for service account (with pod support)
|
||||||
|
if resource := "serviceaccounts"; serviceAccountStorage != nil && apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
|
// don't leak go routines
|
||||||
|
storage[resource].Destroy()
|
||||||
|
if storage[resource+"/token"] != nil {
|
||||||
|
storage[resource+"/token"].Destroy()
|
||||||
|
}
|
||||||
|
|
||||||
|
storage[resource] = serviceAccountStorage
|
||||||
|
if serviceAccountStorage.Token != nil {
|
||||||
|
storage[resource+"/token"] = serviceAccountStorage.Token
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if resource := "services"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
if resource := "services"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
storage[resource] = serviceRESTStorage
|
storage[resource] = serviceRESTStorage
|
||||||
storage[resource+"/proxy"] = serviceRESTProxy
|
storage[resource+"/proxy"] = serviceRESTProxy
|
||||||
@ -348,36 +421,10 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
storage[resource+"/status"] = nodeStorage.Status
|
storage[resource+"/status"] = nodeStorage.Status
|
||||||
}
|
}
|
||||||
|
|
||||||
if resource := "events"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
|
||||||
storage[resource] = eventStorage
|
|
||||||
}
|
|
||||||
|
|
||||||
if resource := "limitranges"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
if resource := "limitranges"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
storage[resource] = limitRangeStorage
|
storage[resource] = limitRangeStorage
|
||||||
}
|
}
|
||||||
|
|
||||||
if resource := "resourcequotas"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
|
||||||
storage[resource] = resourceQuotaStorage
|
|
||||||
storage[resource+"/status"] = resourceQuotaStatusStorage
|
|
||||||
}
|
|
||||||
|
|
||||||
if resource := "namespaces"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
|
||||||
storage[resource] = namespaceStorage
|
|
||||||
storage[resource+"/status"] = namespaceStatusStorage
|
|
||||||
storage[resource+"/finalize"] = namespaceFinalizeStorage
|
|
||||||
}
|
|
||||||
|
|
||||||
if resource := "secrets"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
|
||||||
storage[resource] = secretStorage
|
|
||||||
}
|
|
||||||
|
|
||||||
if resource := "serviceaccounts"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
|
||||||
storage[resource] = serviceAccountStorage
|
|
||||||
if serviceAccountStorage.Token != nil {
|
|
||||||
storage[resource+"/token"] = serviceAccountStorage.Token
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if resource := "persistentvolumes"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
if resource := "persistentvolumes"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
storage[resource] = persistentVolumeStorage
|
storage[resource] = persistentVolumeStorage
|
||||||
storage[resource+"/status"] = persistentVolumeStatusStorage
|
storage[resource+"/status"] = persistentVolumeStatusStorage
|
||||||
@ -388,10 +435,6 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
storage[resource+"/status"] = persistentVolumeClaimStatusStorage
|
storage[resource+"/status"] = persistentVolumeClaimStatusStorage
|
||||||
}
|
}
|
||||||
|
|
||||||
if resource := "configmaps"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
|
||||||
storage[resource] = configMapStorage
|
|
||||||
}
|
|
||||||
|
|
||||||
if resource := "componentstatuses"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
if resource := "componentstatuses"; apiResourceConfigSource.ResourceEnabled(corev1.SchemeGroupVersion.WithResource(resource)) {
|
||||||
storage[resource] = componentstatus.NewStorage(componentStatusStorage{c.StorageFactory}.serversToValidate)
|
storage[resource] = componentstatus.NewStorage(componentStatusStorage{c.StorageFactory}.serversToValidate)
|
||||||
}
|
}
|
||||||
@ -400,7 +443,7 @@ func (c LegacyRESTStorageProvider) NewLegacyRESTStorage(apiResourceConfigSource
|
|||||||
apiGroupInfo.VersionedResourcesStorageMap["v1"] = storage
|
apiGroupInfo.VersionedResourcesStorageMap["v1"] = storage
|
||||||
}
|
}
|
||||||
|
|
||||||
return restStorage, apiGroupInfo, nil
|
return rangeRegistries, apiGroupInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p LegacyRESTStorageProvider) GroupName() string {
|
func (p LegacyRESTStorageProvider) GroupName() string {
|
||||||
|
Loading…
Reference in New Issue
Block a user