Skip to content

Commit

Permalink
remove unnecessary fields
Browse files Browse the repository at this point in the history
  • Loading branch information
deads2k committed Aug 18, 2017
1 parent b53e150 commit d418c25
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 156 deletions.
1 change: 0 additions & 1 deletion pkg/cmd/server/kubernetes/master/kube_controller_init.go

This file was deleted.

39 changes: 6 additions & 33 deletions pkg/cmd/server/kubernetes/master/master_config.go
Expand Up @@ -2,7 +2,6 @@ package master

import (
"crypto/tls"
"errors"
"fmt"
"io/ioutil"
"net"
Expand Down Expand Up @@ -51,8 +50,6 @@ import (
"k8s.io/kubernetes/pkg/apis/componentconfig"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/networking"
kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
kinternalclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/master"
"k8s.io/kubernetes/pkg/registry/cachesize"
Expand Down Expand Up @@ -83,15 +80,6 @@ const originLongRunningEndpointsRE = "(/|^)(buildconfigs/.*/instantiatebinary|im

var LegacyAPIGroupPrefixes = sets.NewString(apiserver.DefaultLegacyAPIPrefix, api.Prefix)

// MasterConfig defines the required values to start a Kubernetes master
type MasterConfig struct {
// this is a mutated copy of options!
// TODO stop mutating values!
Options configapi.KubernetesMasterConfig

Master *master.Config
}

// BuildKubeAPIserverOptions constructs the appropriate kube-apiserver run options.
// It returns an error if no KubernetesMasterConfig was defined.
func BuildKubeAPIserverOptions(masterConfig configapi.MasterConfig) (*kapiserveroptions.ServerRunOptions, error) {
Expand Down Expand Up @@ -182,7 +170,7 @@ func BuildKubeAPIserverOptions(masterConfig configapi.MasterConfig) (*kapiserver

// BuildStorageFactory builds a storage factory based on server.Etcd.StorageConfig with overrides from masterConfig.
// This storage factory is used for kubernetes and origin registries. Compare pkg/util/restoptions/configgetter.go.
func BuildStorageFactory(masterConfig configapi.MasterConfig, server *kapiserveroptions.ServerRunOptions, enforcedStorageVersions map[schema.GroupResource]schema.GroupVersion) (*apiserverstorage.DefaultStorageFactory, error) {
func BuildStorageFactory(server *kapiserveroptions.ServerRunOptions, enforcedStorageVersions map[schema.GroupResource]schema.GroupVersion) (*apiserverstorage.DefaultStorageFactory, error) {
resourceEncodingConfig := apiserverstorage.NewDefaultResourceEncodingConfig(kapi.Registry)

storageGroupsToEncodingVersion, err := server.StorageSerialization.StorageGroupsToEncodingVersion()
Expand Down Expand Up @@ -416,8 +404,6 @@ func buildPublicAddress(masterConfig configapi.MasterConfig) (net.IP, error) {
func buildKubeApiserverConfig(
masterConfig configapi.MasterConfig,
requestContextMapper apirequest.RequestContextMapper,
kubeClient kclientset.Interface,
internalKubeClient kinternalclientset.Interface,
admissionControl admission.Interface,
originAuthenticator authenticator.Request,
kubeAuthorizer authorizer.Authorizer,
Expand All @@ -437,7 +423,7 @@ func buildKubeApiserverConfig(
return nil, err
}

storageFactory, err := BuildStorageFactory(masterConfig, apiserverOptions, nil)
storageFactory, err := BuildStorageFactory(apiserverOptions, nil)
if err != nil {
return nil, err
}
Expand All @@ -463,7 +449,7 @@ func buildKubeApiserverConfig(
genericConfig.DisabledPostStartHooks.Insert("extensions/third-party-resources")
genericConfig.AdmissionControl = admissionControl
genericConfig.RequestContextMapper = requestContextMapper
genericConfig.OpenAPIConfig = DefaultOpenAPIConfig(masterConfig)
genericConfig.OpenAPIConfig = defaultOpenAPIConfig(masterConfig)
genericConfig.SwaggerConfig = apiserver.DefaultSwaggerConfig()
genericConfig.SwaggerConfig.PostBuildHandler = customizeSwaggerDefinition
_, loopbackClientConfig, err := configapi.GetInternalKubeClient(masterConfig.MasterClients.OpenShiftLoopbackKubeConfig, masterConfig.MasterClients.OpenShiftLoopbackClientConnectionOverrides)
Expand Down Expand Up @@ -603,20 +589,13 @@ func buildKubeApiserverConfig(
func BuildKubernetesMasterConfig(
masterConfig configapi.MasterConfig,
requestContextMapper apirequest.RequestContextMapper,
kubeClient kclientset.Interface,
internalKubeClient kinternalclientset.Interface,
admissionControl admission.Interface,
originAuthenticator authenticator.Request,
kubeAuthorizer authorizer.Authorizer,
) (*MasterConfig, error) {
if masterConfig.KubernetesMasterConfig == nil {
return nil, errors.New("insufficient information to build KubernetesMasterConfig")
}
) (*master.Config, error) {
apiserverConfig, err := buildKubeApiserverConfig(
masterConfig,
requestContextMapper,
kubeClient,
internalKubeClient,
admissionControl,
originAuthenticator,
kubeAuthorizer)
Expand All @@ -630,16 +609,10 @@ func BuildKubernetesMasterConfig(
apiserverConfig.GenericConfig.OpenAPIConfig = nil
}

kmaster := &MasterConfig{
Options: *masterConfig.KubernetesMasterConfig,

Master: apiserverConfig,
}

return kmaster, nil
return apiserverConfig, nil
}

func DefaultOpenAPIConfig(config configapi.MasterConfig) *openapicommon.Config {
func defaultOpenAPIConfig(config configapi.MasterConfig) *openapicommon.Config {
securityDefinitions := spec.SecurityDefinitions{}
if len(config.ServiceAccountConfig.PublicKeyFiles) > 0 {
securityDefinitions["BearerToken"] = &spec.SecurityScheme{
Expand Down
52 changes: 4 additions & 48 deletions pkg/cmd/server/origin/master_config.go
Expand Up @@ -69,7 +69,6 @@ import (
"github.com/openshift/origin/pkg/authorization/authorizer"
"github.com/openshift/origin/pkg/authorization/authorizer/scope"
authorizationinformer "github.com/openshift/origin/pkg/authorization/generated/informers/internalversion"
buildinformer "github.com/openshift/origin/pkg/build/generated/informers/internalversion"
osclient "github.com/openshift/origin/pkg/client"
oadmission "github.com/openshift/origin/pkg/cmd/server/admission"
configapi "github.com/openshift/origin/pkg/cmd/server/api"
Expand All @@ -84,7 +83,6 @@ import (
cmdflags "github.com/openshift/origin/pkg/cmd/util/flags"
"github.com/openshift/origin/pkg/cmd/util/pluginconfig"
"github.com/openshift/origin/pkg/cmd/util/variable"
appinformer "github.com/openshift/origin/pkg/deploy/generated/informers/internalversion"
imageadmission "github.com/openshift/origin/pkg/image/admission"
imagepolicy "github.com/openshift/origin/pkg/image/admission/imagepolicy/api"
imageapi "github.com/openshift/origin/pkg/image/apis/image"
Expand All @@ -104,7 +102,6 @@ import (
securityinformer "github.com/openshift/origin/pkg/security/generated/informers/internalversion"
"github.com/openshift/origin/pkg/service"
serviceadmit "github.com/openshift/origin/pkg/service/admission"
templateinformer "github.com/openshift/origin/pkg/template/generated/informers/internalversion"
usercache "github.com/openshift/origin/pkg/user/cache"
"github.com/openshift/origin/pkg/util/restoptions"
)
Expand Down Expand Up @@ -139,24 +136,12 @@ type MasterConfig struct {
// of both the origin config AND the kube config, so this spot makes more sense.
KubeAdmissionControl admission.Interface

// ImageFor is a function that returns the appropriate image to use for a named component
ImageFor func(component string) string
// RegistryNameFn retrieves the name of the integrated registry, or false if no such registry
// is available.
RegistryNameFn imageapi.DefaultRegistryFunc

// ExternalVersionCodec is the codec used when serializing annotations, which cannot be changed
// without all clients being aware of the new version.
ExternalVersionCodec runtime.Codec

KubeletClientConfig *kubeletclient.KubeletClientConfig

// ClientCAs will be used to request client certificates in connections to the API.
// This CertPool should contain all the CAs that will be used for client certificate verification.
ClientCAs *x509.CertPool
// APIClientCAs is used to verify client certificates presented for API auth
APIClientCAs *x509.CertPool

// PrivilegedLoopbackClientConfig is the client configuration used to call OpenShift APIs from system components
// To apply different access control to a system component, create a client config specifically for that component.
PrivilegedLoopbackClientConfig restclient.Config
Expand All @@ -181,15 +166,10 @@ type MasterConfig struct {

// TODO inspect uses to eliminate them
InternalKubeInformers kinternalinformers.SharedInformerFactory
ExternalKubeInformers kinformers.SharedInformerFactory
ClientGoKubeInformers kubeclientgoinformers.SharedInformerFactory
AuthorizationInformers authorizationinformer.SharedInformerFactory
AppInformers appinformer.SharedInformerFactory
BuildInformers buildinformer.SharedInformerFactory
ImageInformers imageinformer.SharedInformerFactory
QuotaInformers quotainformer.SharedInformerFactory
SecurityInformers securityinformer.SharedInformerFactory
TemplateInformers templateinformer.SharedInformerFactory
UserInformers userinformer.SharedInformerFactory
}

Expand All @@ -198,12 +178,9 @@ type InformerAccess interface {
GetExternalKubeInformers() kinformers.SharedInformerFactory
GetClientGoKubeInformers() kubeclientgoinformers.SharedInformerFactory
GetAuthorizationInformers() authorizationinformer.SharedInformerFactory
GetAppInformers() appinformer.SharedInformerFactory
GetBuildInformers() buildinformer.SharedInformerFactory
GetImageInformers() imageinformer.SharedInformerFactory
GetQuotaInformers() quotainformer.SharedInformerFactory
GetSecurityInformers() securityinformer.SharedInformerFactory
GetTemplateInformers() templateinformer.SharedInformerFactory
GetUserInformers() userinformer.SharedInformerFactory
}

Expand All @@ -215,15 +192,6 @@ func BuildMasterConfig(options configapi.MasterConfig, informers InformerAccess)
return nil, err
}

clientCAs, err := configapi.GetClientCertCAPool(options)
if err != nil {
return nil, err
}
apiClientCAs, err := configapi.GetAPIClientCertCAPool(options)
if err != nil {
return nil, err
}

privilegedLoopbackKubeClientsetInternal, _, err := configapi.GetInternalKubeClient(options.MasterClients.OpenShiftLoopbackKubeConfig, options.MasterClients.OpenShiftLoopbackClientConnectionOverrides)
if err != nil {
return nil, err
Expand All @@ -241,10 +209,6 @@ func BuildMasterConfig(options configapi.MasterConfig, informers InformerAccess)
return nil, err
}

imageTemplate := variable.NewDefaultImageTemplate()
imageTemplate.Format = options.ImageConfig.Format
imageTemplate.Latest = options.ImageConfig.Latest

defaultRegistry := env("OPENSHIFT_DEFAULT_REGISTRY", "${DOCKER_REGISTRY_SERVICE_HOST}:${DOCKER_REGISTRY_SERVICE_PORT}")
svcCache := service.NewServiceResolverCache(privilegedLoopbackKubeClientsetInternal.Core().Services(metav1.NamespaceDefault).Get)
defaultRegistryFunc, err := svcCache.Defer(defaultRegistry)
Expand Down Expand Up @@ -336,6 +300,10 @@ func BuildMasterConfig(options configapi.MasterConfig, informers InformerAccess)
if err != nil {
return nil, err
}
apiClientCAs, err := configapi.GetAPIClientCertCAPool(options)
if err != nil {
return nil, err
}
authenticator, err := newAuthenticator(options, restOptsGetter, serviceAccountTokenGetter, userClient.Users(), apiClientCAs, usercache.NewGroupCache(informers.GetUserInformers().User().InternalVersion().Groups()))
if err != nil {
return nil, err
Expand Down Expand Up @@ -365,32 +333,20 @@ func BuildMasterConfig(options configapi.MasterConfig, informers InformerAccess)
AdmissionControl: originAdmission,
KubeAdmissionControl: kubeAdmission,

ImageFor: imageTemplate.ExpandOrDie,
RegistryNameFn: imageapi.DefaultRegistryFunc(defaultRegistryFunc),

// TODO: migration of versions of resources stored in annotations must be sorted out
ExternalVersionCodec: kapi.Codecs.LegacyCodec(schema.GroupVersion{Group: "", Version: "v1"}),

KubeletClientConfig: kubeletClientConfig,

ClientCAs: clientCAs,
APIClientCAs: apiClientCAs,

PrivilegedLoopbackClientConfig: *privilegedLoopbackClientConfig,
PrivilegedLoopbackOpenShiftClient: privilegedLoopbackOpenShiftClient,
PrivilegedLoopbackKubernetesClientsetInternal: privilegedLoopbackKubeClientsetInternal,
PrivilegedLoopbackKubernetesClientsetExternal: privilegedLoopbackKubeClientsetExternal,

InternalKubeInformers: informers.GetInternalKubeInformers(),
ExternalKubeInformers: informers.GetExternalKubeInformers(),
ClientGoKubeInformers: informers.GetClientGoKubeInformers(),
AppInformers: informers.GetAppInformers(),
AuthorizationInformers: informers.GetAuthorizationInformers(),
BuildInformers: informers.GetBuildInformers(),
ImageInformers: informers.GetImageInformers(),
QuotaInformers: informers.GetQuotaInformers(),
SecurityInformers: informers.GetSecurityInformers(),
TemplateInformers: informers.GetTemplateInformers(),
UserInformers: informers.GetUserInformers(),
}

Expand Down
76 changes: 42 additions & 34 deletions pkg/cmd/server/start/start_master.go
Expand Up @@ -33,6 +33,8 @@ import (
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
kubelettypes "k8s.io/kubernetes/pkg/kubelet/types"
"k8s.io/kubernetes/pkg/master"
kutilerrors "k8s.io/kubernetes/staging/src/k8s.io/apimachinery/pkg/util/errors"

assetapiserver "github.com/openshift/origin/pkg/assets/apiserver"
"github.com/openshift/origin/pkg/cmd/server/admin"
Expand Down Expand Up @@ -344,18 +346,6 @@ func (o MasterOptions) CreateCerts() error {
return nil
}

func BuildKubernetesMasterConfig(openshiftConfig *origin.MasterConfig) (*kubernetes.MasterConfig, error) {
return kubernetes.BuildKubernetesMasterConfig(
openshiftConfig.Options,
openshiftConfig.RequestContextMapper,
openshiftConfig.KubeClientsetExternal(),
openshiftConfig.KubeClientsetInternal(),
openshiftConfig.KubeAdmissionControl,
openshiftConfig.Authenticator,
openshiftConfig.Authorizer,
)
}

// Master encapsulates starting the components of the master
type Master struct {
config *configapi.MasterConfig
Expand Down Expand Up @@ -515,20 +505,29 @@ func (m *Master) Start() error {
return err
}

kubeMasterConfig, err := BuildKubernetesMasterConfig(openshiftConfig)
kubeAPIServerConfig, err := kubernetes.BuildKubernetesMasterConfig(
openshiftConfig.Options,
openshiftConfig.RequestContextMapper,
openshiftConfig.KubeAdmissionControl,
openshiftConfig.Authenticator,
openshiftConfig.Authorizer,
)
if err != nil {
return err
}
kubeMasterConfig.Master.GenericConfig.SharedInformerFactory = informers.GetClientGoKubeInformers()
kubeAPIServerConfig.GenericConfig.SharedInformerFactory = informers.GetClientGoKubeInformers()

glog.Infof("Starting master on %s (%s)", m.config.ServingInfo.BindAddress, version.Get().String())
glog.Infof("Public master address is %s", m.config.MasterPublicURL)
if len(m.config.DisabledFeatures) > 0 {
glog.V(4).Infof("Disabled features: %s", strings.Join(m.config.DisabledFeatures, ", "))
}
glog.Infof("Using images from %q", openshiftConfig.ImageFor("<component>"))
imageTemplate := variable.NewDefaultImageTemplate()
imageTemplate.Format = m.config.ImageConfig.Format
imageTemplate.Latest = m.config.ImageConfig.Latest
glog.Infof("Using images from %q", imageTemplate.ExpandOrDie("<component>"))

if err := StartAPI(openshiftConfig, kubeMasterConfig, informers, controllerPlug); err != nil {
if err := StartAPI(openshiftConfig, kubeAPIServerConfig, informers, controllerPlug); err != nil {
return err
}
}
Expand All @@ -540,32 +539,19 @@ func (m *Master) Start() error {
// API and core controllers, the Origin API, the group, policy, project, and authorization caches,
// etcd, the asset server (for the UI), the OAuth server endpoints, and the DNS server.
// TODO: allow to be more granularly targeted
func StartAPI(oc *origin.MasterConfig, kc *kubernetes.MasterConfig, informers *informers, controllerPlug plug.Plug) error {
func StartAPI(oc *origin.MasterConfig, kubeAPIServerConfig *master.Config, informers *informers, controllerPlug plug.Plug) error {
// start etcd
if oc.Options.EtcdConfig != nil {
etcdserver.RunEtcd(oc.Options.EtcdConfig)
}

// verify we can connect to etcd with the provided config
if len(kc.Options.APIServerArguments) > 0 && len(kc.Options.APIServerArguments["storage-backend"]) > 0 && kc.Options.APIServerArguments["storage-backend"][0] == "etcd3" {
etcdClient, err := etcd.MakeEtcdClientV3(oc.Options.EtcdClientInfo)
if err != nil {
return err
}
if err := etcd.TestEtcdClientV3(etcdClient); err != nil {
return err
}
} else {
etcdClient, err := etcd.MakeEtcdClient(oc.Options.EtcdClientInfo)
if err != nil {
return err
}
if err := etcd.TestEtcdClient(etcdClient); err != nil {
return err
}
// TODO remove when this becomes a health check in 3.8
if err := testEtcdConnectivity(oc.Options.EtcdClientInfo); err != nil {
return err
}

if err := oc.Run(kc.Master, controllerPlug, utilwait.NeverStop); err != nil {
if err := oc.Run(kubeAPIServerConfig, controllerPlug, utilwait.NeverStop); err != nil {
return err
}

Expand Down Expand Up @@ -595,6 +581,28 @@ func StartAPI(oc *origin.MasterConfig, kc *kubernetes.MasterConfig, informers *i
return nil
}

func testEtcdConnectivity(etcdClientInfo configapi.EtcdConnectionInfo) error {
// first try etcd2
etcdClient2, etcd2Err := etcd.MakeEtcdClient(etcdClientInfo)
if etcd2Err == nil {
etcd2Err = etcd.TestEtcdClient(etcdClient2)
if etcd2Err == nil {
return nil
}
}

// try etcd3 otherwise
etcdClient3, etcd3Err := etcd.MakeEtcdClientV3(etcdClientInfo)
if etcd3Err != nil {
return kutilerrors.NewAggregate([]error{etcd2Err, etcd3Err})
}
if etcd3Err := etcd.TestEtcdClientV3(etcdClient3); etcd3Err != nil {
return kutilerrors.NewAggregate([]error{etcd2Err, etcd3Err})
}

return nil
}

type GenericResourceInformer interface {
ForResource(resource schema.GroupVersionResource) (kinformers.GenericInformer, error)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/util/restoptions/configgetter.go
Expand Up @@ -48,7 +48,7 @@ func NewConfigGetter(masterOptions configapi.MasterConfig, defaultResourceConfig
if err != nil {
return nil, err
}
storageFactory, err := kubernetes.BuildStorageFactory(masterOptions, apiserverOptions, enforcedStorageVersions)
storageFactory, err := kubernetes.BuildStorageFactory(apiserverOptions, enforcedStorageVersions)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit d418c25

Please sign in to comment.