Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions cmd/kube-apiserver/app/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
apiextensionsapiserver "k8s.io/apiextensions-apiserver/pkg/apiserver"
"k8s.io/apiextensions-apiserver/pkg/apiserver/conversion"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/informerfactoryhack"
"k8s.io/apiserver/pkg/util/webhook"
aggregatorapiserver "k8s.io/kube-aggregator/pkg/apiserver"
aggregatorscheme "k8s.io/kube-aggregator/pkg/apiserver/scheme"
Expand Down Expand Up @@ -77,7 +78,7 @@ func NewConfig(opts options.CompletedOptions) (*Config, error) {
Options: opts,
}

genericConfig, _, versionedInformers, storageFactory, err := controlplaneapiserver.BuildGenericConfig(
genericConfig, versionedInformers, storageFactory, err := controlplaneapiserver.BuildGenericConfig(
opts.CompletedOptions,
[]*runtime.Scheme{legacyscheme.Scheme, apiextensionsapiserver.Scheme, aggregatorscheme.Scheme},
controlplane.DefaultAPIResourceConfigSource(),
Expand All @@ -99,13 +100,13 @@ func NewConfig(opts options.CompletedOptions) (*Config, error) {
return nil, err
}

apiExtensions, err := controlplaneapiserver.CreateAPIExtensionsConfig(*kubeAPIs.ControlPlane.Generic, kubeAPIs.ControlPlane.VersionedInformers, pluginInitializer, opts.CompletedOptions, opts.MasterCount, conversionFactory)
apiExtensions, err := controlplaneapiserver.CreateAPIExtensionsConfig(*kubeAPIs.ControlPlane.Generic, informerfactoryhack.Wrap(versionedInformers), pluginInitializer, opts.CompletedOptions, opts.MasterCount, conversionFactory)
if err != nil {
return nil, err
}
c.ApiExtensions = apiExtensions

aggregator, err := controlplaneapiserver.CreateAggregatorConfig(*kubeAPIs.ControlPlane.Generic, opts.CompletedOptions, kubeAPIs.ControlPlane.VersionedInformers, serviceResolver, kubeAPIs.ControlPlane.ProxyTransport, kubeAPIs.ControlPlane.Extra.PeerProxy, pluginInitializer)
aggregator, err := controlplaneapiserver.CreateAggregatorConfig(*kubeAPIs.ControlPlane.Generic, opts.CompletedOptions, informerfactoryhack.Wrap(versionedInformers), serviceResolver, kubeAPIs.ControlPlane.ProxyTransport, kubeAPIs.ControlPlane.Extra.PeerProxy, pluginInitializer)
if err != nil {
return nil, err
}
Expand Down
6 changes: 4 additions & 2 deletions cmd/kube-apiserver/app/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"net/url"
"os"

kcpinformers "github.com/kcp-dev/client-go/informers"
"github.com/spf13/cobra"

apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
Expand All @@ -34,6 +35,7 @@ import (
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apiserver/pkg/admission"
genericapifilters "k8s.io/apiserver/pkg/endpoints/filters"
"k8s.io/apiserver/pkg/informerfactoryhack"
genericapiserver "k8s.io/apiserver/pkg/server"
"k8s.io/apiserver/pkg/server/egressselector"
serverstorage "k8s.io/apiserver/pkg/server/storage"
Expand Down Expand Up @@ -202,7 +204,7 @@ func CreateProxyTransport() *http.Transport {
func CreateKubeAPIServerConfig(
opts options.CompletedOptions,
genericConfig *genericapiserver.Config,
versionedInformers clientgoinformers.SharedInformerFactory,
versionedInformers kcpinformers.SharedInformerFactory,
storageFactory *serverstorage.DefaultStorageFactory,
) (
*controlplane.Config,
Expand All @@ -225,7 +227,7 @@ func CreateKubeAPIServerConfig(
return nil, nil, nil, fmt.Errorf("failed to create admission plugin initializer: %v", err)
}

serviceResolver := buildServiceResolver(opts.EnableAggregatorRouting, genericConfig.LoopbackClientConfig.Host, versionedInformers)
serviceResolver := buildServiceResolver(opts.EnableAggregatorRouting, genericConfig.LoopbackClientConfig.Host, informerfactoryhack.Wrap(versionedInformers))
controlplaneConfig, admissionInitializers, err := controlplaneapiserver.CreateConfig(opts.CompletedOptions, genericConfig, versionedInformers, storageFactory, serviceResolver, kubeInitializers)
if err != nil {
return nil, nil, nil, err
Expand Down
37 changes: 0 additions & 37 deletions pkg/api/genericcontrolplanescheme/scheme.go

This file was deleted.

33 changes: 0 additions & 33 deletions pkg/apis/core/install/genericcontrolplane/install.go

This file was deleted.

3 changes: 2 additions & 1 deletion pkg/controlplane/apiserver/apis.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package apiserver
import (
"fmt"

"k8s.io/apiserver/pkg/informerfactoryhack"
"k8s.io/apiserver/pkg/registry/generic"
genericapiserver "k8s.io/apiserver/pkg/server"
serverstorage "k8s.io/apiserver/pkg/server/storage"
Expand Down Expand Up @@ -70,7 +71,7 @@ func (c *CompletedConfig) DefaultStorageProviders() ([]RESTStorageProvider, erro
ExtendExpiration: c.Extra.ExtendExpiration,
ServiceAccountMaxExpiration: c.Extra.ServiceAccountMaxExpiration,
APIAudiences: c.Generic.Authentication.APIAudiences,
Informers: c.Extra.VersionedInformers,
Informers: informerfactoryhack.Wrap(c.Extra.VersionedInformers),
},
apiserverinternalrest.StorageProvider{},
authenticationrest.RESTStorageProvider{Authenticator: c.Generic.Authentication.Authenticator, APIAudiences: c.Generic.Authentication.APIAudiences},
Expand Down
3 changes: 2 additions & 1 deletion pkg/controlplane/apiserver/completion.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"time"

"k8s.io/apiserver/pkg/endpoints/discovery"
"k8s.io/apiserver/pkg/informerfactoryhack"
genericapiserver "k8s.io/apiserver/pkg/server"
)

Expand All @@ -44,7 +45,7 @@ type CompletedConfig struct {

func (c *Config) Complete() CompletedConfig {
cfg := completedConfig{
c.Generic.Complete(c.VersionedInformers),
c.Generic.Complete(informerfactoryhack.Wrap(c.VersionedInformers)),
&c.Extra,
}

Expand Down
27 changes: 15 additions & 12 deletions pkg/controlplane/apiserver/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import (
"k8s.io/apiserver/pkg/endpoints/discovery/aggregated"
openapinamer "k8s.io/apiserver/pkg/endpoints/openapi"
genericfeatures "k8s.io/apiserver/pkg/features"
"k8s.io/apiserver/pkg/informerfactoryhack"
"k8s.io/apiserver/pkg/reconcilers"
peerreconcilers "k8s.io/apiserver/pkg/reconcilers"
genericapiserver "k8s.io/apiserver/pkg/server"
Expand Down Expand Up @@ -69,6 +70,10 @@ import (
"k8s.io/kubernetes/pkg/serviceaccount"
)

// LocalAdminCluster is the default logical cluster that kube-apiserver's
// objects, e.g. the RBAC bootstrap policy land in.
var LocalAdminCluster = logicalcluster.Name("system:admin")

// Config defines configuration for the master
type Config struct {
Generic *genericapiserver.Config
Expand Down Expand Up @@ -112,7 +117,7 @@ type Extra struct {

SystemNamespaces []string

VersionedInformers clientgoinformers.SharedInformerFactory
VersionedInformers kcpinformers.SharedInformerFactory
}

// BuildGenericConfig takes the generic controlplane apiserver options and produces
Expand All @@ -125,8 +130,7 @@ func BuildGenericConfig(
getOpenAPIDefinitions func(ref openapicommon.ReferenceCallback) map[string]openapicommon.OpenAPIDefinition,
) (
genericConfig *genericapiserver.Config,
versionedClusterInformers kcpinformers.SharedInformerFactory,
versionedInformers clientgoinformers.SharedInformerFactory,
versionedInformers kcpinformers.SharedInformerFactory,
storageFactory *serverstorage.DefaultStorageFactory,
lastErr error,
) {
Expand Down Expand Up @@ -204,15 +208,14 @@ func BuildGenericConfig(
lastErr = fmt.Errorf("failed to create cluster clientset: %v", err)
return
}
versionedInformers = clientgoinformers.NewSharedInformerFactory(clusterClient.Cluster(logicalcluster.NewPath("system:admin")), 10*time.Minute)
versionedClusterInformers = kcpinformers.NewSharedInformerFactory(clusterClient, 10*time.Minute)
versionedInformers = kcpinformers.NewSharedInformerFactory(clusterClient, 10*time.Minute)

// Authentication.ApplyTo requires already applied OpenAPIConfig and EgressSelector if present
if lastErr = s.Authentication.ApplyTo(&genericConfig.Authentication, genericConfig.SecureServing, genericConfig.EgressSelector, genericConfig.OpenAPIConfig, genericConfig.OpenAPIV3Config, clusterClient, versionedClusterInformers); lastErr != nil {
if lastErr = s.Authentication.ApplyTo(&genericConfig.Authentication, genericConfig.SecureServing, genericConfig.EgressSelector, genericConfig.OpenAPIConfig, genericConfig.OpenAPIV3Config, clusterClient, versionedInformers); lastErr != nil {
return
}

genericConfig.Authorization.Authorizer, genericConfig.RuleResolver, err = BuildAuthorizer(s, genericConfig.EgressSelector, versionedInformers)
genericConfig.Authorization.Authorizer, genericConfig.RuleResolver, err = BuildAuthorizer(s, genericConfig.EgressSelector, informerfactoryhack.Wrap(versionedInformers))
if err != nil {
lastErr = fmt.Errorf("invalid authorization config: %v", err)
return
Expand All @@ -227,7 +230,7 @@ func BuildGenericConfig(
}

if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.APIPriorityAndFairness) && s.GenericServerRunOptions.EnablePriorityAndFairness {
genericConfig.FlowControl, lastErr = BuildPriorityAndFairness(s, clusterClient.Cluster(logicalcluster.NewPath("system:admin")), versionedInformers)
genericConfig.FlowControl, lastErr = BuildPriorityAndFairness(s, clusterClient.Cluster(logicalcluster.NewPath("system:admin")), informerfactoryhack.Wrap(versionedInformers))
}

if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.AggregatedDiscoveryEndpoint) {
Expand Down Expand Up @@ -270,7 +273,7 @@ func BuildPriorityAndFairness(s controlplaneapiserver.CompletedOptions, extclien
func CreateConfig(
opts controlplaneapiserver.CompletedOptions,
genericConfig *genericapiserver.Config,
versionedInformers clientgoinformers.SharedInformerFactory,
versionedInformers kcpinformers.SharedInformerFactory,
storageFactory *serverstorage.DefaultStorageFactory,
serviceResolver aggregatorapiserver.ServiceResolver,
additionalInitializers []admission.PluginInitializer,
Expand Down Expand Up @@ -311,7 +314,7 @@ func CreateConfig(
}
// build peer proxy config only if peer ca file exists
if opts.PeerCAFile != "" {
config.PeerProxy, err = BuildPeerProxy(versionedInformers, genericConfig.StorageVersionManager, opts.ProxyClientCertFile,
config.PeerProxy, err = BuildPeerProxy(informerfactoryhack.Wrap(versionedInformers), genericConfig.StorageVersionManager, opts.ProxyClientCertFile,
opts.ProxyClientKeyFile, opts.PeerCAFile, opts.PeerAdvertiseAddress, genericConfig.APIServerID, config.Extra.PeerEndpointLeaseReconciler, config.Generic.Serializer)
if err != nil {
return nil, nil, err
Expand Down Expand Up @@ -339,7 +342,7 @@ func CreateConfig(

// setup admission
genericAdmissionConfig := controlplaneadmission.Config{
ExternalInformers: versionedInformers,
ExternalInformers: informerfactoryhack.Wrap(versionedInformers),
LoopbackClientConfig: genericConfig.LoopbackClientConfig,
}
genericInitializers, admissionPostStartHook, err := genericAdmissionConfig.New(proxyTransport, genericConfig.EgressSelector, serviceResolver, genericConfig.TracerProvider)
Expand All @@ -356,7 +359,7 @@ func CreateConfig(
}
err = opts.Admission.ApplyTo(
genericConfig,
versionedInformers,
informerfactoryhack.Wrap(versionedInformers),
clientgoExternalClient,
dynamicExternalClient,
utilfeature.DefaultFeatureGate,
Expand Down
Loading