Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
ca3f7453
Commit
ca3f7453
authored
Sep 06, 2017
by
Dr. Stefan Schimanski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
apiserver: stratify versioned informer construction
parent
dffe50f8
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
115 additions
and
84 deletions
+115
-84
aggregator.go
cmd/kube-apiserver/app/aggregator.go
+4
-1
apiextensions.go
cmd/kube-apiserver/app/apiextensions.go
+6
-2
server.go
cmd/kube-apiserver/app/server.go
+5
-4
server.go
federation/cmd/federation-apiserver/app/server.go
+10
-1
master.go
pkg/master/master.go
+3
-2
master_openapi_test.go
pkg/master/master_openapi_test.go
+2
-2
master_test.go
pkg/master/master_test.go
+7
-7
apiserver.go
...k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go
+1
-1
start.go
...rc/k8s.io/apiextensions-apiserver/pkg/cmd/server/start.go
+1
-1
start.go
...extensions-apiserver/test/integration/testserver/start.go
+1
-1
config.go
staging/src/k8s.io/apiserver/pkg/server/config.go
+29
-4
config_test.go
staging/src/k8s.io/apiserver/pkg/server/config_test.go
+4
-4
genericapiserver_test.go
.../src/k8s.io/apiserver/pkg/server/genericapiserver_test.go
+6
-6
admission.go
staging/src/k8s.io/apiserver/pkg/server/options/admission.go
+5
-4
recommended.go
...ng/src/k8s.io/apiserver/pkg/server/options/recommended.go
+19
-7
serving.go
staging/src/k8s.io/apiserver/pkg/server/options/serving.go
+0
-24
serving_test.go
...g/src/k8s.io/apiserver/pkg/server/options/serving_test.go
+1
-1
apiserver.go
...ing/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go
+1
-1
start.go
staging/src/k8s.io/kube-aggregator/pkg/cmd/server/start.go
+1
-1
apiserver.go
...ng/src/k8s.io/sample-apiserver/pkg/apiserver/apiserver.go
+1
-2
start.go
staging/src/k8s.io/sample-apiserver/pkg/cmd/server/start.go
+2
-2
etcd_storage_path_test.go
test/integration/etcd/etcd_storage_path_test.go
+2
-2
apiserver_test.go
test/integration/examples/apiserver_test.go
+2
-2
master_utils.go
test/integration/framework/master_utils.go
+2
-2
No files found.
cmd/kube-apiserver/app/aggregator.go
View file @
ca3f7453
...
...
@@ -76,7 +76,10 @@ func createAggregatorConfig(kubeAPIServerConfig genericapiserver.Config, command
}
aggregatorConfig
:=
&
aggregatorapiserver
.
Config
{
GenericConfig
:
&
genericConfig
,
GenericConfig
:
&
genericapiserver
.
RecommendedConfig
{
Config
:
genericConfig
,
SharedInformerFactory
:
externalInformers
,
},
ExtraConfig
:
aggregatorapiserver
.
ExtraConfig
{
CoreKubeInformers
:
externalInformers
,
ProxyClientCert
:
certBytes
,
...
...
cmd/kube-apiserver/app/apiextensions.go
View file @
ca3f7453
...
...
@@ -25,10 +25,11 @@ import (
apiextensionscmd
"k8s.io/apiextensions-apiserver/pkg/cmd/server"
genericapiserver
"k8s.io/apiserver/pkg/server"
genericoptions
"k8s.io/apiserver/pkg/server/options"
kubeexternalinformers
"k8s.io/client-go/informers"
"k8s.io/kubernetes/cmd/kube-apiserver/app/options"
)
func
createAPIExtensionsConfig
(
kubeAPIServerConfig
genericapiserver
.
Config
,
commandOptions
*
options
.
ServerRunOptions
)
(
*
apiextensionsapiserver
.
Config
,
error
)
{
func
createAPIExtensionsConfig
(
kubeAPIServerConfig
genericapiserver
.
Config
,
externalInformers
kubeexternalinformers
.
SharedInformerFactory
,
commandOptions
*
options
.
ServerRunOptions
)
(
*
apiextensionsapiserver
.
Config
,
error
)
{
// make a shallow copy to let us twiddle a few things
// most of the config actually remains the same. We only need to mess with a couple items related to the particulars of the apiextensions
genericConfig
:=
kubeAPIServerConfig
...
...
@@ -40,7 +41,10 @@ func createAPIExtensionsConfig(kubeAPIServerConfig genericapiserver.Config, comm
genericConfig
.
RESTOptionsGetter
=
&
genericoptions
.
SimpleRestOptionsFactory
{
Options
:
etcdOptions
}
apiextensionsConfig
:=
&
apiextensionsapiserver
.
Config
{
GenericConfig
:
&
genericConfig
,
GenericConfig
:
&
genericapiserver
.
RecommendedConfig
{
Config
:
genericConfig
,
SharedInformerFactory
:
externalInformers
,
},
ExtraConfig
:
apiextensionsapiserver
.
ExtraConfig
{
CRDRESTOptionsGetter
:
apiextensionscmd
.
NewCRDRESTOptionsGetter
(
etcdOptions
),
},
...
...
cmd/kube-apiserver/app/server.go
View file @
ca3f7453
...
...
@@ -133,7 +133,7 @@ func CreateServerChain(runOptions *options.ServerRunOptions, stopCh <-chan struc
// TPRs are enabled and not yet beta, since this these are the successor, they fall under the same enablement rule
// If additional API servers are added, they should be gated.
apiExtensionsConfig
,
err
:=
createAPIExtensionsConfig
(
*
kubeAPIServerConfig
.
GenericConfig
,
runOptions
)
apiExtensionsConfig
,
err
:=
createAPIExtensionsConfig
(
*
kubeAPIServerConfig
.
GenericConfig
,
versionedInformers
,
runOptions
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -142,7 +142,7 @@ func CreateServerChain(runOptions *options.ServerRunOptions, stopCh <-chan struc
return
nil
,
err
}
kubeAPIServer
,
err
:=
CreateKubeAPIServer
(
kubeAPIServerConfig
,
apiExtensionsServer
.
GenericAPIServer
,
sharedInformers
)
kubeAPIServer
,
err
:=
CreateKubeAPIServer
(
kubeAPIServerConfig
,
apiExtensionsServer
.
GenericAPIServer
,
sharedInformers
,
versionedInformers
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -191,8 +191,8 @@ func CreateServerChain(runOptions *options.ServerRunOptions, stopCh <-chan struc
}
// CreateKubeAPIServer creates and wires a workable kube-apiserver
func
CreateKubeAPIServer
(
kubeAPIServerConfig
*
master
.
Config
,
delegateAPIServer
genericapiserver
.
DelegationTarget
,
sharedInformers
informers
.
SharedInformerFactory
)
(
*
master
.
Master
,
error
)
{
kubeAPIServer
,
err
:=
kubeAPIServerConfig
.
Complete
()
.
New
(
delegateAPIServer
)
func
CreateKubeAPIServer
(
kubeAPIServerConfig
*
master
.
Config
,
delegateAPIServer
genericapiserver
.
DelegationTarget
,
sharedInformers
informers
.
SharedInformerFactory
,
versionedInformers
clientgoinformers
.
SharedInformerFactory
)
(
*
master
.
Master
,
error
)
{
kubeAPIServer
,
err
:=
kubeAPIServerConfig
.
Complete
(
versionedInformers
)
.
New
(
delegateAPIServer
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -466,6 +466,7 @@ func BuildGenericConfig(s *options.ServerRunOptions) (*genericapiserver.Config,
err
=
s
.
Admission
.
ApplyTo
(
genericConfig
,
versionedInformers
,
pluginInitializer
)
if
err
!=
nil
{
return
nil
,
nil
,
nil
,
nil
,
nil
,
fmt
.
Errorf
(
"failed to initialize admission: %v"
,
err
)
...
...
federation/cmd/federation-apiserver/app/server.go
View file @
ca3f7453
...
...
@@ -39,6 +39,8 @@ import (
genericapiserver
"k8s.io/apiserver/pkg/server"
"k8s.io/apiserver/pkg/server/filters"
serverstorage
"k8s.io/apiserver/pkg/server/storage"
clientgoinformers
"k8s.io/client-go/informers"
clientgoclientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
openapicommon
"k8s.io/kube-openapi/pkg/common"
federationv1beta1
"k8s.io/kubernetes/federation/apis/federation/v1beta1"
...
...
@@ -189,6 +191,12 @@ func NonBlockingRun(s *options.ServerRunOptions, stopCh <-chan struct{}) error {
}
sharedInformers
:=
informers
.
NewSharedInformerFactory
(
client
,
10
*
time
.
Minute
)
clientgoExternalClient
,
err
:=
clientgoclientset
.
NewForConfig
(
genericConfig
.
LoopbackClientConfig
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to create real external clientset: %v"
,
err
)
}
versionedInformers
:=
clientgoinformers
.
NewSharedInformerFactory
(
clientgoExternalClient
,
10
*
time
.
Minute
)
authorizationConfig
:=
s
.
Authorization
.
ToAuthorizationConfig
(
sharedInformers
)
apiAuthorizer
,
_
,
err
:=
authorizationConfig
.
New
()
if
err
!=
nil
{
...
...
@@ -210,6 +218,7 @@ func NonBlockingRun(s *options.ServerRunOptions, stopCh <-chan struct{}) error {
err
=
s
.
Admission
.
ApplyTo
(
genericConfig
,
versionedInformers
,
pluginInitializer
,
)
if
err
!=
nil
{
...
...
@@ -235,7 +244,7 @@ func NonBlockingRun(s *options.ServerRunOptions, stopCh <-chan struct{}) error {
cachesize
.
SetWatchCacheSizes
(
s
.
GenericServerRunOptions
.
WatchCacheSizes
)
}
m
,
err
:=
genericConfig
.
Complete
()
.
New
(
"federation"
,
genericapiserver
.
EmptyDelegate
)
m
,
err
:=
genericConfig
.
Complete
(
versionedInformers
)
.
New
(
"federation"
,
genericapiserver
.
EmptyDelegate
)
if
err
!=
nil
{
return
err
}
...
...
pkg/master/master.go
View file @
ca3f7453
...
...
@@ -62,6 +62,7 @@ import (
"github.com/prometheus/client_golang/prometheus"
// RESTStorage installers
"k8s.io/client-go/informers"
admissionregistrationrest
"k8s.io/kubernetes/pkg/registry/admissionregistration/rest"
appsrest
"k8s.io/kubernetes/pkg/registry/apps/rest"
authenticationrest
"k8s.io/kubernetes/pkg/registry/authentication/rest"
...
...
@@ -163,9 +164,9 @@ type Master struct {
}
// Complete fills in any fields not set that are required to have valid data. It's mutating the receiver.
func
(
cfg
*
Config
)
Complete
()
CompletedConfig
{
func
(
cfg
*
Config
)
Complete
(
informers
informers
.
SharedInformerFactory
)
CompletedConfig
{
c
:=
completedConfig
{
cfg
.
GenericConfig
.
Complete
(),
cfg
.
GenericConfig
.
Complete
(
informers
),
&
cfg
.
ExtraConfig
,
}
...
...
pkg/master/master_openapi_test.go
View file @
ca3f7453
...
...
@@ -41,7 +41,7 @@ import (
// TestValidOpenAPISpec verifies that the open api is added
// at the proper endpoint and the spec is valid.
func
TestValidOpenAPISpec
(
t
*
testing
.
T
)
{
etcdserver
,
config
,
assert
:=
setUp
(
t
)
etcdserver
,
config
,
sharedInformers
,
assert
:=
setUp
(
t
)
defer
etcdserver
.
Terminate
(
t
)
config
.
GenericConfig
.
EnableIndex
=
true
...
...
@@ -54,7 +54,7 @@ func TestValidOpenAPISpec(t *testing.T) {
}
config
.
GenericConfig
.
SwaggerConfig
=
genericapiserver
.
DefaultSwaggerConfig
()
master
,
err
:=
config
.
Complete
()
.
New
(
genericapiserver
.
EmptyDelegate
)
master
,
err
:=
config
.
Complete
(
sharedInformers
)
.
New
(
genericapiserver
.
EmptyDelegate
)
if
err
!=
nil
{
t
.
Fatalf
(
"Error in bringing up the master: %v"
,
err
)
}
...
...
pkg/master/master_test.go
View file @
ca3f7453
...
...
@@ -66,11 +66,11 @@ import (
)
// setUp is a convience function for setting up for (most) tests.
func
setUp
(
t
*
testing
.
T
)
(
*
etcdtesting
.
EtcdTestServer
,
Config
,
*
assert
.
Assertions
)
{
func
setUp
(
t
*
testing
.
T
)
(
*
etcdtesting
.
EtcdTestServer
,
Config
,
informers
.
SharedInformerFactory
,
*
assert
.
Assertions
)
{
server
,
storageConfig
:=
etcdtesting
.
NewUnsecuredEtcd3TestClientServer
(
t
,
api
.
Scheme
)
config
:=
&
Config
{
GenericConfig
:
genericapiserver
.
NewConfig
(
api
.
Codecs
),
GenericConfig
:
genericapiserver
.
NewConfig
(
api
.
Codecs
),
ExtraConfig
:
ExtraConfig
{
APIResourceConfigSource
:
DefaultAPIResourceConfigSource
(),
APIServerServicePort
:
443
,
...
...
@@ -115,9 +115,9 @@ func setUp(t *testing.T) (*etcdtesting.EtcdTestServer, Config, *assert.Assertion
if
err
!=
nil
{
t
.
Fatalf
(
"unable to create client set due to %v"
,
err
)
}
config
.
GenericConfig
.
SharedInformerFactory
=
informers
.
NewSharedInformerFactory
(
clientset
,
config
.
GenericConfig
.
LoopbackClientConfig
.
Timeout
)
sharedInformers
:
=
informers
.
NewSharedInformerFactory
(
clientset
,
config
.
GenericConfig
.
LoopbackClientConfig
.
Timeout
)
return
server
,
*
config
,
assert
.
New
(
t
)
return
server
,
*
config
,
sharedInformers
,
assert
.
New
(
t
)
}
// TestLegacyRestStorageStrategies ensures that all Storage objects which are using the generic registry Store have
...
...
@@ -180,9 +180,9 @@ func TestCertificatesRestStorageStrategies(t *testing.T) {
}
func
newMaster
(
t
*
testing
.
T
)
(
*
Master
,
*
etcdtesting
.
EtcdTestServer
,
Config
,
*
assert
.
Assertions
)
{
etcdserver
,
config
,
assert
:=
setUp
(
t
)
etcdserver
,
config
,
sharedInformers
,
assert
:=
setUp
(
t
)
master
,
err
:=
config
.
Complete
()
.
New
(
genericapiserver
.
EmptyDelegate
)
master
,
err
:=
config
.
Complete
(
sharedInformers
)
.
New
(
genericapiserver
.
EmptyDelegate
)
if
err
!=
nil
{
t
.
Fatalf
(
"Error in bringing up the master: %v"
,
err
)
}
...
...
@@ -206,7 +206,7 @@ func limitedAPIResourceConfigSource() *serverstorage.ResourceConfig {
// newLimitedMaster only enables the core group, the extensions group, the batch group, and the autoscaling group.
func
newLimitedMaster
(
t
*
testing
.
T
)
(
*
Master
,
*
etcdtesting
.
EtcdTestServer
,
Config
,
*
assert
.
Assertions
)
{
etcdserver
,
config
,
assert
:=
setUp
(
t
)
etcdserver
,
config
,
sharedInformers
,
assert
:=
setUp
(
t
)
config
.
ExtraConfig
.
APIResourceConfigSource
=
limitedAPIResourceConfigSource
()
master
,
err
:=
config
.
Complete
(
sharedInformers
)
.
New
(
genericapiserver
.
EmptyDelegate
)
if
err
!=
nil
{
...
...
staging/src/k8s.io/apiextensions-apiserver/pkg/apiserver/apiserver.go
View file @
ca3f7453
...
...
@@ -83,7 +83,7 @@ type ExtraConfig struct {
}
type
Config
struct
{
GenericConfig
*
genericapiserver
.
Config
GenericConfig
*
genericapiserver
.
Recommended
Config
ExtraConfig
ExtraConfig
}
...
...
staging/src/k8s.io/apiextensions-apiserver/pkg/cmd/server/start.go
View file @
ca3f7453
...
...
@@ -94,7 +94,7 @@ func (o CustomResourceDefinitionsServerOptions) Config() (*apiserver.Config, err
return
nil
,
fmt
.
Errorf
(
"error creating self-signed certificates: %v"
,
err
)
}
serverConfig
:=
genericapiserver
.
NewConfig
(
apiserver
.
Codecs
)
serverConfig
:=
genericapiserver
.
New
Recommended
Config
(
apiserver
.
Codecs
)
if
err
:=
o
.
RecommendedOptions
.
ApplyTo
(
serverConfig
);
err
!=
nil
{
return
nil
,
err
}
...
...
staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/start.go
View file @
ca3f7453
...
...
@@ -53,7 +53,7 @@ func DefaultServerConfig() (*extensionsapiserver.Config, error) {
options
.
RecommendedOptions
.
Etcd
.
StorageConfig
.
ServerList
=
[]
string
{
etcdURL
}
options
.
RecommendedOptions
.
Etcd
.
StorageConfig
.
Prefix
=
uuid
.
New
()
genericConfig
:=
genericapiserver
.
NewConfig
(
extensionsapiserver
.
Codecs
)
genericConfig
:=
genericapiserver
.
New
Recommended
Config
(
extensionsapiserver
.
Codecs
)
if
err
:=
options
.
RecommendedOptions
.
SecureServing
.
MaybeDefaultWithSelfSignedCerts
(
"localhost"
,
nil
,
[]
net
.
IP
{
net
.
ParseIP
(
"127.0.0.1"
)});
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"error creating self-signed certificates: %v"
,
err
)
...
...
staging/src/k8s.io/apiserver/pkg/server/config.go
View file @
ca3f7453
...
...
@@ -122,8 +122,6 @@ type Config struct {
// Will default to a value based on secure serving info and available ipv4 IPs.
ExternalAddress
string
// SharedInformerFactory provides shared informers for resources
SharedInformerFactory
informers
.
SharedInformerFactory
//===========================================================================
// Fields you probably don't care about changing
//===========================================================================
...
...
@@ -187,6 +185,13 @@ type Config struct {
PublicAddress
net
.
IP
}
type
RecommendedConfig
struct
{
Config
// SharedInformerFactory provides shared informers for resources
SharedInformerFactory
informers
.
SharedInformerFactory
}
type
SecureServingInfo
struct
{
// BindAddress is the ip:port to serve on
BindAddress
string
...
...
@@ -242,6 +247,13 @@ func NewConfig(codecs serializer.CodecFactory) *Config {
}
}
// NewRecommendedConfig returns a RecommendedConfig struct with the default values
func
NewRecommendedConfig
(
codecs
serializer
.
CodecFactory
)
*
RecommendedConfig
{
return
&
RecommendedConfig
{
Config
:
*
NewConfig
(
codecs
),
}
}
func
DefaultOpenAPIConfig
(
getDefinitions
openapicommon
.
GetOpenAPIDefinitions
,
scheme
*
runtime
.
Scheme
)
*
openapicommon
.
Config
{
defNamer
:=
apiopenapi
.
NewDefinitionNamer
(
scheme
)
return
&
openapicommon
.
Config
{
...
...
@@ -301,6 +313,13 @@ func (c *Config) ApplyClientCert(clientCAFile string) (*Config, error) {
type
completedConfig
struct
{
*
Config
//===========================================================================
// values below here are filled in during completion
//===========================================================================
// SharedInformerFactory provides shared informers for resources
SharedInformerFactory
informers
.
SharedInformerFactory
}
type
CompletedConfig
struct
{
...
...
@@ -310,7 +329,7 @@ type CompletedConfig struct {
// Complete fills in any fields not set that are required to have valid data and can be derived
// from other fields. If you're going to `ApplyOptions`, do that first. It's mutating the receiver.
func
(
c
*
Config
)
Complete
()
CompletedConfig
{
func
(
c
*
Config
)
Complete
(
informers
informers
.
SharedInformerFactory
)
CompletedConfig
{
if
len
(
c
.
ExternalAddress
)
==
0
&&
c
.
PublicAddress
!=
nil
{
hostAndPort
:=
c
.
PublicAddress
.
String
()
if
c
.
ReadWritePort
!=
0
{
...
...
@@ -385,7 +404,13 @@ func (c *Config) Complete() CompletedConfig {
c
.
RequestInfoResolver
=
NewRequestInfoResolver
(
c
)
}
return
CompletedConfig
{
&
completedConfig
{
c
}}
return
CompletedConfig
{
&
completedConfig
{
c
,
informers
}}
}
// Complete fills in any fields not set that are required to have valid data and can be derived
// from other fields. If you're going to `ApplyOptions`, do that first. It's mutating the receiver.
func
(
c
*
RecommendedConfig
)
Complete
()
CompletedConfig
{
return
c
.
Config
.
Complete
(
c
.
SharedInformerFactory
)
}
// New creates a new server which logically combines the handling chain with the passed server.
...
...
staging/src/k8s.io/apiserver/pkg/server/config_test.go
View file @
ca3f7453
...
...
@@ -44,7 +44,6 @@ func TestNewWithDelegate(t *testing.T) {
if
clientset
==
nil
{
t
.
Fatal
(
"unable to create fake client set"
)
}
delegateConfig
.
SharedInformerFactory
=
informers
.
NewSharedInformerFactory
(
clientset
,
delegateConfig
.
LoopbackClientConfig
.
Timeout
)
delegateHealthzCalled
:=
false
delegateConfig
.
HealthzChecks
=
append
(
delegateConfig
.
HealthzChecks
,
healthz
.
NamedCheck
(
"delegate-health"
,
func
(
r
*
http
.
Request
)
error
{
...
...
@@ -52,7 +51,8 @@ func TestNewWithDelegate(t *testing.T) {
return
fmt
.
Errorf
(
"delegate failed healthcheck"
)
}))
delegateServer
,
err
:=
delegateConfig
.
Complete
()
.
New
(
"test"
,
EmptyDelegate
)
sharedInformers
:=
informers
.
NewSharedInformerFactory
(
clientset
,
delegateConfig
.
LoopbackClientConfig
.
Timeout
)
delegateServer
,
err
:=
delegateConfig
.
Complete
(
sharedInformers
)
.
New
(
"test"
,
EmptyDelegate
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
...
...
@@ -73,7 +73,6 @@ func TestNewWithDelegate(t *testing.T) {
wrappingConfig
.
LegacyAPIGroupPrefixes
=
sets
.
NewString
(
"/api"
)
wrappingConfig
.
LoopbackClientConfig
=
&
rest
.
Config
{}
wrappingConfig
.
SwaggerConfig
=
DefaultSwaggerConfig
()
wrappingConfig
.
SharedInformerFactory
=
informers
.
NewSharedInformerFactory
(
clientset
,
wrappingConfig
.
LoopbackClientConfig
.
Timeout
)
wrappingHealthzCalled
:=
false
wrappingConfig
.
HealthzChecks
=
append
(
wrappingConfig
.
HealthzChecks
,
healthz
.
NamedCheck
(
"wrapping-health"
,
func
(
r
*
http
.
Request
)
error
{
...
...
@@ -81,7 +80,8 @@ func TestNewWithDelegate(t *testing.T) {
return
fmt
.
Errorf
(
"wrapping failed healthcheck"
)
}))
wrappingServer
,
err
:=
wrappingConfig
.
Complete
()
.
New
(
"test"
,
delegateServer
)
sharedInformers
=
informers
.
NewSharedInformerFactory
(
clientset
,
wrappingConfig
.
LoopbackClientConfig
.
Timeout
)
wrappingServer
,
err
:=
wrappingConfig
.
Complete
(
sharedInformers
)
.
New
(
"test"
,
delegateServer
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
...
...
staging/src/k8s.io/apiserver/pkg/server/genericapiserver_test.go
View file @
ca3f7453
...
...
@@ -96,7 +96,6 @@ func setUp(t *testing.T) (*etcdtesting.EtcdTestServer, Config, *assert.Assertion
if
clientset
==
nil
{
t
.
Fatal
(
"unable to create fake client set"
)
}
config
.
SharedInformerFactory
=
informers
.
NewSharedInformerFactory
(
clientset
,
config
.
LoopbackClientConfig
.
Timeout
)
// TODO restore this test, but right now, eliminate our cycle
// config.OpenAPIConfig = DefaultOpenAPIConfig(testGetOpenAPIDefinitions, runtime.NewScheme())
...
...
@@ -107,7 +106,8 @@ func setUp(t *testing.T) (*etcdtesting.EtcdTestServer, Config, *assert.Assertion
// },
// }
config
.
SwaggerConfig
=
DefaultSwaggerConfig
()
config
.
Complete
()
sharedInformers
:=
informers
.
NewSharedInformerFactory
(
clientset
,
config
.
LoopbackClientConfig
.
Timeout
)
config
.
Complete
(
sharedInformers
)
return
etcdServer
,
*
config
,
assert
.
New
(
t
)
}
...
...
@@ -115,7 +115,7 @@ func setUp(t *testing.T) (*etcdtesting.EtcdTestServer, Config, *assert.Assertion
func
newMaster
(
t
*
testing
.
T
)
(
*
GenericAPIServer
,
*
etcdtesting
.
EtcdTestServer
,
Config
,
*
assert
.
Assertions
)
{
etcdserver
,
config
,
assert
:=
setUp
(
t
)
s
,
err
:=
config
.
Complete
()
.
New
(
"test"
,
EmptyDelegate
)
s
,
err
:=
config
.
Complete
(
nil
)
.
New
(
"test"
,
EmptyDelegate
)
if
err
!=
nil
{
t
.
Fatalf
(
"Error in bringing up the server: %v"
,
err
)
}
...
...
@@ -147,7 +147,7 @@ func TestInstallAPIGroups(t *testing.T) {
config
.
LegacyAPIGroupPrefixes
=
sets
.
NewString
(
"/apiPrefix"
)
config
.
DiscoveryAddresses
=
discovery
.
DefaultAddresses
{
DefaultAddress
:
"ExternalAddress"
}
s
,
err
:=
config
.
Complete
()
.
New
(
"test"
,
EmptyDelegate
)
s
,
err
:=
config
.
Complete
(
nil
)
.
New
(
"test"
,
EmptyDelegate
)
if
err
!=
nil
{
t
.
Fatalf
(
"Error in bringing up the server: %v"
,
err
)
}
...
...
@@ -351,7 +351,7 @@ func TestCustomHandlerChain(t *testing.T) {
called
=
true
})
s
,
err
:=
config
.
Complete
()
.
New
(
"test"
,
EmptyDelegate
)
s
,
err
:=
config
.
Complete
(
nil
)
.
New
(
"test"
,
EmptyDelegate
)
if
err
!=
nil
{
t
.
Fatalf
(
"Error in bringing up the server: %v"
,
err
)
}
...
...
@@ -406,7 +406,7 @@ func TestNotRestRoutesHaveAuth(t *testing.T) {
kubeVersion
:=
fakeVersion
()
config
.
Version
=
&
kubeVersion
s
,
err
:=
config
.
Complete
()
.
New
(
"test"
,
EmptyDelegate
)
s
,
err
:=
config
.
Complete
(
nil
)
.
New
(
"test"
,
EmptyDelegate
)
if
err
!=
nil
{
t
.
Fatalf
(
"Error in bringing up the server: %v"
,
err
)
}
...
...
staging/src/k8s.io/apiserver/pkg/server/options/admission.go
View file @
ca3f7453
...
...
@@ -24,6 +24,7 @@ import (
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/admission/initializer"
"k8s.io/apiserver/pkg/server"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
)
...
...
@@ -63,17 +64,17 @@ func (a *AdmissionOptions) AddFlags(fs *pflag.FlagSet) {
// genericconfig.LoopbackClientConfig
// genericconfig.SharedInformerFactory
// genericconfig.Authorizer
func
(
a
*
AdmissionOptions
)
ApplyTo
(
serverCfg
*
server
.
Config
,
pluginInitializers
...
admission
.
PluginInitializer
)
error
{
func
(
a
*
AdmissionOptions
)
ApplyTo
(
c
*
server
.
Config
,
informers
informers
.
SharedInformerFactory
,
pluginInitializers
...
admission
.
PluginInitializer
)
error
{
pluginsConfigProvider
,
err
:=
admission
.
ReadAdmissionConfiguration
(
a
.
PluginNames
,
a
.
ConfigFile
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to read plugin config: %v"
,
err
)
}
clientset
,
err
:=
kubernetes
.
NewForConfig
(
serverCfg
.
LoopbackClientConfig
)
clientset
,
err
:=
kubernetes
.
NewForConfig
(
c
.
LoopbackClientConfig
)
if
err
!=
nil
{
return
err
}
genericInitializer
,
err
:=
initializer
.
New
(
clientset
,
serverCfg
.
SharedInformerFactory
,
serverCfg
.
Authorizer
)
genericInitializer
,
err
:=
initializer
.
New
(
clientset
,
informers
,
c
.
Authorizer
)
if
err
!=
nil
{
return
err
}
...
...
@@ -86,7 +87,7 @@ func (a *AdmissionOptions) ApplyTo(serverCfg *server.Config, pluginInitializers
return
err
}
serverCfg
.
AdmissionControl
=
admissionChain
c
.
AdmissionControl
=
admissionChain
return
nil
}
...
...
staging/src/k8s.io/apiserver/pkg/server/options/recommended.go
View file @
ca3f7453
...
...
@@ -17,11 +17,16 @@ limitations under the License.
package
options
import
(
"fmt"
"time"
"github.com/spf13/pflag"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apiserver/pkg/server"
"k8s.io/apiserver/pkg/storage/storagebackend"
clientgoinformers
"k8s.io/client-go/informers"
clientgoclientset
"k8s.io/client-go/kubernetes"
)
// RecommendedOptions contains the recommended options for running an API server
...
...
@@ -55,26 +60,33 @@ func (o *RecommendedOptions) AddFlags(fs *pflag.FlagSet) {
o
.
Features
.
AddFlags
(
fs
)
}
func
(
o
*
RecommendedOptions
)
ApplyTo
(
config
*
server
.
Config
)
error
{
if
err
:=
o
.
Etcd
.
ApplyTo
(
c
onfig
);
err
!=
nil
{
func
(
o
*
RecommendedOptions
)
ApplyTo
(
config
*
server
.
Recommended
Config
)
error
{
if
err
:=
o
.
Etcd
.
ApplyTo
(
&
config
.
C
onfig
);
err
!=
nil
{
return
err
}
if
err
:=
o
.
SecureServing
.
ApplyTo
(
c
onfig
);
err
!=
nil
{
if
err
:=
o
.
SecureServing
.
ApplyTo
(
&
config
.
C
onfig
);
err
!=
nil
{
return
err
}
if
err
:=
o
.
Authentication
.
ApplyTo
(
c
onfig
);
err
!=
nil
{
if
err
:=
o
.
Authentication
.
ApplyTo
(
&
config
.
C
onfig
);
err
!=
nil
{
return
err
}
if
err
:=
o
.
Authorization
.
ApplyTo
(
c
onfig
);
err
!=
nil
{
if
err
:=
o
.
Authorization
.
ApplyTo
(
&
config
.
C
onfig
);
err
!=
nil
{
return
err
}
if
err
:=
o
.
Audit
.
ApplyTo
(
c
onfig
);
err
!=
nil
{
if
err
:=
o
.
Audit
.
ApplyTo
(
&
config
.
C
onfig
);
err
!=
nil
{
return
err
}
if
err
:=
o
.
Features
.
ApplyTo
(
c
onfig
);
err
!=
nil
{
if
err
:=
o
.
Features
.
ApplyTo
(
&
config
.
C
onfig
);
err
!=
nil
{
return
err
}
// do convenience work for RecommendedOptions users
clientgoExternalClient
,
err
:=
clientgoclientset
.
NewForConfig
(
config
.
LoopbackClientConfig
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"failed to create real external clientset: %v"
,
err
)
}
config
.
SharedInformerFactory
=
clientgoinformers
.
NewSharedInformerFactory
(
clientgoExternalClient
,
10
*
time
.
Minute
)
return
nil
}
...
...
staging/src/k8s.io/apiserver/pkg/server/options/serving.go
View file @
ca3f7453
...
...
@@ -24,7 +24,6 @@ import (
"net"
"path"
"strconv"
"time"
"github.com/golang/glog"
"github.com/pborman/uuid"
...
...
@@ -33,9 +32,6 @@ import (
utilnet
"k8s.io/apimachinery/pkg/util/net"
"k8s.io/apiserver/pkg/server"
utilflag
"k8s.io/apiserver/pkg/util/flag"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
certutil
"k8s.io/client-go/util/cert"
)
...
...
@@ -175,26 +171,6 @@ func (s *SecureServingOptions) ApplyTo(c *server.Config) error {
c
.
SecureServingInfo
.
SNICerts
[
server
.
LoopbackClientServerNameOverride
]
=
&
tlsCert
}
// create shared informers, if not explicitly set use in cluster config.
// do not fail on an error, this allows an external API server to startup
// outside of a kube cluster.
var
clientCfg
*
rest
.
Config
err
=
nil
if
s
.
useLoopbackCfg
{
clientCfg
=
c
.
LoopbackClientConfig
}
else
{
clientCfg
,
err
=
rest
.
InClusterConfig
()
}
if
err
!=
nil
{
glog
.
Errorf
(
"Couldn't create in cluster config due to %v. SharedInformerFactory will not be set."
,
err
)
return
nil
}
clientset
,
err
:=
kubernetes
.
NewForConfig
(
clientCfg
)
if
err
!=
nil
{
glog
.
Errorf
(
"Couldn't create clientset due to %v. SharedInformerFactory will not be set."
,
err
)
return
nil
}
c
.
SharedInformerFactory
=
informers
.
NewSharedInformerFactory
(
clientset
,
10
*
time
.
Minute
)
return
nil
}
...
...
staging/src/k8s.io/apiserver/pkg/server/options/serving_test.go
View file @
ca3f7453
...
...
@@ -487,7 +487,7 @@ NextTest:
return
}
s
,
err
:=
config
.
Complete
()
.
New
(
"test"
,
server
.
EmptyDelegate
)
s
,
err
:=
config
.
Complete
(
nil
)
.
New
(
"test"
,
server
.
EmptyDelegate
)
if
err
!=
nil
{
t
.
Errorf
(
"%q - failed creating the server: %v"
,
title
,
err
)
return
...
...
staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go
View file @
ca3f7453
...
...
@@ -88,7 +88,7 @@ type ExtraConfig struct {
}
type
Config
struct
{
GenericConfig
*
genericapiserver
.
Config
GenericConfig
*
genericapiserver
.
Recommended
Config
ExtraConfig
ExtraConfig
}
...
...
staging/src/k8s.io/kube-aggregator/pkg/cmd/server/start.go
View file @
ca3f7453
...
...
@@ -118,7 +118,7 @@ func (o AggregatorOptions) RunAggregator(stopCh <-chan struct{}) error {
return
fmt
.
Errorf
(
"error creating self-signed certificates: %v"
,
err
)
}
serverConfig
:=
genericapiserver
.
NewConfig
(
apiserver
.
Codecs
)
serverConfig
:=
genericapiserver
.
New
Recommended
Config
(
apiserver
.
Codecs
)
if
err
:=
o
.
RecommendedOptions
.
ApplyTo
(
serverConfig
);
err
!=
nil
{
return
err
...
...
staging/src/k8s.io/sample-apiserver/pkg/apiserver/apiserver.go
View file @
ca3f7453
...
...
@@ -30,7 +30,6 @@ import (
"k8s.io/sample-apiserver/pkg/apis/wardle"
"k8s.io/sample-apiserver/pkg/apis/wardle/install"
"k8s.io/sample-apiserver/pkg/apis/wardle/v1alpha1"
informers
"k8s.io/sample-apiserver/pkg/client/informers_generated/internalversion"
wardleregistry
"k8s.io/sample-apiserver/pkg/registry"
fischerstorage
"k8s.io/sample-apiserver/pkg/registry/wardle/fischer"
flunderstorage
"k8s.io/sample-apiserver/pkg/registry/wardle/flunder"
...
...
@@ -66,7 +65,7 @@ type ExtraConfig struct {
}
type
Config
struct
{
GenericConfig
*
genericapiserver
.
Config
GenericConfig
*
genericapiserver
.
Recommended
Config
ExtraConfig
ExtraConfig
}
...
...
staging/src/k8s.io/sample-apiserver/pkg/cmd/server/start.go
View file @
ca3f7453
...
...
@@ -104,7 +104,7 @@ func (o WardleServerOptions) Config() (*apiserver.Config, error) {
return
nil
,
fmt
.
Errorf
(
"error creating self-signed certificates: %v"
,
err
)
}
serverConfig
:=
genericapiserver
.
NewConfig
(
apiserver
.
Codecs
)
serverConfig
:=
genericapiserver
.
New
Recommended
Config
(
apiserver
.
Codecs
)
if
err
:=
o
.
RecommendedOptions
.
ApplyTo
(
serverConfig
);
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -119,7 +119,7 @@ func (o WardleServerOptions) Config() (*apiserver.Config, error) {
return
nil
,
err
}
if
err
:=
o
.
Admission
.
ApplyTo
(
serverConfig
,
admissionInitializer
);
err
!=
nil
{
if
err
:=
o
.
Admission
.
ApplyTo
(
&
serverConfig
.
Config
,
serverConfig
.
SharedInformerFactory
,
admissionInitializer
);
err
!=
nil
{
return
nil
,
err
}
...
...
test/integration/etcd/etcd_storage_path_test.go
View file @
ca3f7453
...
...
@@ -685,14 +685,14 @@ func startRealMasterOrDie(t *testing.T, certDir string) (*allClient, clientv3.KV
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
kubeAPIServerConfig
,
sharedInformers
,
_
,
_
,
_
,
err
:=
app
.
CreateKubeAPIServerConfig
(
kubeAPIServerOptions
,
tunneler
,
proxyTransport
)
kubeAPIServerConfig
,
sharedInformers
,
versionedInformers
,
_
,
_
,
err
:=
app
.
CreateKubeAPIServerConfig
(
kubeAPIServerOptions
,
tunneler
,
proxyTransport
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
kubeAPIServerConfig
.
ExtraConfig
.
APIResourceConfigSource
=
&
allResourceSource
{}
// force enable all resources
kubeAPIServer
,
err
:=
app
.
CreateKubeAPIServer
(
kubeAPIServerConfig
,
genericapiserver
.
EmptyDelegate
,
sharedInformers
)
kubeAPIServer
,
err
:=
app
.
CreateKubeAPIServer
(
kubeAPIServerConfig
,
genericapiserver
.
EmptyDelegate
,
sharedInformers
,
versionedInformers
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
...
...
test/integration/examples/apiserver_test.go
View file @
ca3f7453
...
...
@@ -116,13 +116,13 @@ func TestAggregatedAPIServer(t *testing.T) {
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
kubeAPIServerConfig
,
sharedInformers
,
_
,
_
,
_
,
err
:=
app
.
CreateKubeAPIServerConfig
(
kubeAPIServerOptions
,
tunneler
,
proxyTransport
)
kubeAPIServerConfig
,
sharedInformers
,
versionedInformers
,
_
,
_
,
err
:=
app
.
CreateKubeAPIServerConfig
(
kubeAPIServerOptions
,
tunneler
,
proxyTransport
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
kubeClientConfigValue
.
Store
(
kubeAPIServerConfig
.
GenericConfig
.
LoopbackClientConfig
)
kubeAPIServer
,
err
:=
app
.
CreateKubeAPIServer
(
kubeAPIServerConfig
,
genericapiserver
.
EmptyDelegate
,
sharedInformers
)
kubeAPIServer
,
err
:=
app
.
CreateKubeAPIServer
(
kubeAPIServerConfig
,
genericapiserver
.
EmptyDelegate
,
sharedInformers
,
versionedInformers
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
...
...
test/integration/framework/master_utils.go
View file @
ca3f7453
...
...
@@ -248,9 +248,9 @@ func startMasterOrDie(masterConfig *master.Config, incomingServer *httptest.Serv
if
err
!=
nil
{
glog
.
Fatal
(
err
)
}
masterConfig
.
GenericConfig
.
SharedInformerFactory
=
extinformers
.
NewSharedInformerFactory
(
clientset
,
masterConfig
.
GenericConfig
.
LoopbackClientConfig
.
Timeout
)
m
,
err
=
masterConfig
.
Complete
()
.
New
(
genericapiserver
.
EmptyDelegate
)
sharedInformers
:=
extinformers
.
NewSharedInformerFactory
(
clientset
,
masterConfig
.
GenericConfig
.
LoopbackClientConfig
.
Timeout
)
m
,
err
=
masterConfig
.
Complete
(
sharedInformers
)
.
New
(
genericapiserver
.
EmptyDelegate
)
if
err
!=
nil
{
closeFn
()
glog
.
Fatalf
(
"error in bringing up the master: %v"
,
err
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment