Skip to content

Commit 5b24f11

Browse files
stttsopenshift-cherrypick-robot
authored and
openshift-cherrypick-robot
committed
openshift-kube-apiserver: use in-process loopback client config from Kube
1 parent c4cecc7 commit 5b24f11

File tree

3 files changed

+44
-44
lines changed

3 files changed

+44
-44
lines changed

pkg/cmd/openshift-kube-apiserver/server.go

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,7 @@ func RunOpenShiftKubeAPIServerServer(masterConfig *configapi.MasterConfig) error
4343
return kerrors.NewInvalid(configapi.Kind("MasterConfig"), "master-config.yaml", validationResults.Errors)
4444
}
4545

46-
// informers are shared amongst all the various api components we build
47-
// TODO the needs of the apiserver and the controllers are drifting. We should consider two different skins here
48-
clientConfig, err := configapi.GetClientConfig(masterConfig.MasterClients.OpenShiftLoopbackKubeConfig, masterConfig.MasterClients.OpenShiftLoopbackClientConnectionOverrides)
49-
if err != nil {
50-
return err
51-
}
52-
informers, err := origin.NewInformers(clientConfig)
53-
if err != nil {
54-
return err
55-
}
56-
if err := informers.AddUserIndexes(); err != nil {
57-
return err
58-
}
59-
46+
informers := origin.InformerAccess(nil) // use real kube-apiserver loopback client with secret token instead of that from masterConfig.MasterClients.OpenShiftLoopbackKubeConfig
6047
openshiftConfig, err := origin.BuildMasterConfig(*masterConfig, informers)
6148
if err != nil {
6249
return err

pkg/cmd/server/kubernetes/master/master_config.go

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import (
4747
auditlog "k8s.io/apiserver/plugin/pkg/audit/log"
4848
auditwebhook "k8s.io/apiserver/plugin/pkg/audit/webhook"
4949
pluginwebhook "k8s.io/apiserver/plugin/pkg/audit/webhook"
50+
"k8s.io/client-go/rest"
5051
"k8s.io/kube-aggregator/pkg/apis/apiregistration"
5152
apiregistrationv1beta1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1"
5253
openapicommon "k8s.io/kube-openapi/pkg/common"
@@ -370,12 +371,13 @@ func buildPublicAddress(masterConfig configapi.MasterConfig) (net.IP, error) {
370371
return publicAddress, nil
371372
}
372373

373-
func buildKubeApiserverConfig(
374-
masterConfig configapi.MasterConfig,
375-
admissionControl admission.Interface,
376-
originAuthenticator authenticator.Request,
377-
kubeAuthorizer authorizer.Authorizer,
378-
) (*master.Config, error) {
374+
type incompleteKubeMasterConfig struct {
375+
options *kapiserveroptions.ServerRunOptions
376+
incompleteConfig *apiserver.Config
377+
masterConfig configapi.MasterConfig
378+
}
379+
380+
func BuildKubernetesMasterConfig(masterConfig configapi.MasterConfig) (*incompleteKubeMasterConfig, error) {
379381
apiserverOptions, err := BuildKubeAPIserverOptions(masterConfig)
380382
if err != nil {
381383
return nil, err
@@ -386,6 +388,20 @@ func buildKubeApiserverConfig(
386388
return nil, err
387389
}
388390

391+
return &incompleteKubeMasterConfig{apiserverOptions, genericConfig, masterConfig}, nil
392+
}
393+
394+
func (rc *incompleteKubeMasterConfig) LoopbackConfig() *rest.Config {
395+
return rc.incompleteConfig.LoopbackClientConfig
396+
}
397+
398+
func (rc *incompleteKubeMasterConfig) Complete(
399+
admissionControl admission.Interface,
400+
originAuthenticator authenticator.Request,
401+
kubeAuthorizer authorizer.Authorizer,
402+
) (*master.Config, error) {
403+
genericConfig, apiserverOptions, masterConfig := rc.incompleteConfig, rc.options, rc.masterConfig
404+
389405
proxyClientCerts, err := buildProxyClientCerts(masterConfig)
390406
if err != nil {
391407
return nil, err
@@ -561,33 +577,13 @@ func buildKubeApiserverConfig(
561577
)
562578
}
563579

564-
return kubeApiserverConfig, nil
565-
}
566-
567-
// TODO this function's parameters need to be refactored
568-
func BuildKubernetesMasterConfig(
569-
masterConfig configapi.MasterConfig,
570-
admissionControl admission.Interface,
571-
originAuthenticator authenticator.Request,
572-
kubeAuthorizer authorizer.Authorizer,
573-
) (*master.Config, error) {
574-
apiserverConfig, err := buildKubeApiserverConfig(
575-
masterConfig,
576-
admissionControl,
577-
originAuthenticator,
578-
kubeAuthorizer,
579-
)
580-
if err != nil {
581-
return nil, err
582-
}
583-
584580
// we do this for integration tests to be able to turn it off for better startup speed
585581
// TODO remove the entire option once openapi is faster
586582
if masterConfig.DisableOpenAPI {
587-
apiserverConfig.GenericConfig.OpenAPIConfig = nil
583+
kubeApiserverConfig.GenericConfig.OpenAPIConfig = nil
588584
}
589585

590-
return apiserverConfig, nil
586+
return kubeApiserverConfig, nil
591587
}
592588

593589
func defaultOpenAPIConfig(config configapi.MasterConfig) *openapicommon.Config {

pkg/cmd/server/origin/master_config.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,24 @@ func BuildMasterConfig(
126126
options configapi.MasterConfig,
127127
informers InformerAccess,
128128
) (*MasterConfig, error) {
129+
incompleteKubeAPIServerConfig, err := kubernetes.BuildKubernetesMasterConfig(options)
130+
if err != nil {
131+
return nil, err
132+
}
133+
if informers == nil {
134+
// use the real Kubernetes loopback client (using a secret token and preferibly localhost networking), not
135+
// the one provided by options.MasterClients.OpenShiftLoopbackKubeConfig. The latter is meant for out-of-process
136+
// components of the master.
137+
realLoopbackInformers, err := NewInformers(incompleteKubeAPIServerConfig.LoopbackConfig())
138+
if err != nil {
139+
return nil, err
140+
}
141+
if err := realLoopbackInformers.AddUserIndexes(); err != nil {
142+
return nil, err
143+
}
144+
informers = realLoopbackInformers
145+
}
146+
129147
restOptsGetter, err := originrest.StorageOptions(options)
130148
if err != nil {
131149
return nil, err
@@ -181,8 +199,7 @@ func BuildMasterConfig(
181199
return nil, err
182200
}
183201

184-
kubeAPIServerConfig, err := kubernetes.BuildKubernetesMasterConfig(
185-
options,
202+
kubeAPIServerConfig, err := incompleteKubeAPIServerConfig.Complete(
186203
admission,
187204
authenticator,
188205
authorizer,

0 commit comments

Comments
 (0)