Skip to content

Commit

Permalink
Merge pull request #5186 from XiShanYongYe-Chang/replace-recommandOpt…
Browse files Browse the repository at this point in the history
…ions-with-needed-subset-options

replace RecommendedOptions with needed subset options in karmada-search component
  • Loading branch information
karmada-bot committed Jul 13, 2024
2 parents 3bf57c5 + d79ea8b commit b2c15df
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 11 deletions.
6 changes: 3 additions & 3 deletions cmd/karmada-search/app/karmada-search.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,11 +158,11 @@ func run(ctx context.Context, o *options.Options, registryOptions ...Option) err
// `config` returns config for the api server given Options
func config(o *options.Options, outOfTreeRegistryOptions ...Option) (*search.Config, error) {
// TODO have a "real" external address
if err := o.RecommendedOptions.SecureServing.MaybeDefaultWithSelfSignedCerts("localhost", nil, []net.IP{netutils.ParseIPSloppy("127.0.0.1")}); err != nil {
if err := o.SecureServing.MaybeDefaultWithSelfSignedCerts("localhost", nil, []net.IP{netutils.ParseIPSloppy("127.0.0.1")}); err != nil {
return nil, fmt.Errorf("error creating self-signed certificates: %v", err)
}

o.RecommendedOptions.Features = &genericoptions.FeatureOptions{EnableProfiling: false}
o.Features = &genericoptions.FeatureOptions{EnableProfiling: false}

serverConfig := genericapiserver.NewRecommendedConfig(searchscheme.Codecs)
serverConfig.LongRunningFunc = customLongRunningRequestCheck(
Expand All @@ -171,7 +171,7 @@ func config(o *options.Options, outOfTreeRegistryOptions ...Option) (*search.Con
serverConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(generatedopenapi.GetOpenAPIDefinitions, openapi.NewDefinitionNamer(searchscheme.Scheme))
serverConfig.OpenAPIV3Config = genericapiserver.DefaultOpenAPIV3Config(generatedopenapi.GetOpenAPIDefinitions, openapi.NewDefinitionNamer(searchscheme.Scheme))
serverConfig.OpenAPIConfig.Info.Title = "karmada-search"
if err := o.RecommendedOptions.ApplyTo(serverConfig); err != nil {
if err := o.ApplyTo(serverConfig); err != nil {
return nil, err
}

Expand Down
62 changes: 56 additions & 6 deletions cmd/karmada-search/app/options/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@ import (
"github.com/spf13/pflag"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
genericapiserver "k8s.io/apiserver/pkg/server"
genericoptions "k8s.io/apiserver/pkg/server/options"
"k8s.io/apiserver/pkg/storage/storagebackend"
utilfeature "k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/kubernetes"

searchscheme "github.com/karmada-io/karmada/pkg/apis/search/scheme"
searchv1alpha1 "github.com/karmada-io/karmada/pkg/apis/search/v1alpha1"
Expand All @@ -32,7 +35,13 @@ const defaultEtcdPathPrefix = "/registry"

// Options contains command line parameters for karmada-search.
type Options struct {
RecommendedOptions *genericoptions.RecommendedOptions
Etcd *genericoptions.EtcdOptions
SecureServing *genericoptions.SecureServingOptionsWithLoopback
Authentication *genericoptions.DelegatingAuthenticationOptions
Authorization *genericoptions.DelegatingAuthorizationOptions
Audit *genericoptions.AuditOptions
Features *genericoptions.FeatureOptions
CoreAPI *genericoptions.CoreAPIOptions

// KubeAPIQPS is the QPS to use while talking with karmada-search.
KubeAPIQPS float32
Expand All @@ -48,18 +57,29 @@ type Options struct {
// NewOptions returns a new Options.
func NewOptions() *Options {
o := &Options{
RecommendedOptions: genericoptions.NewRecommendedOptions(
defaultEtcdPathPrefix,
searchscheme.Codecs.LegacyCodec(searchv1alpha1.SchemeGroupVersion)),
Etcd: genericoptions.NewEtcdOptions(storagebackend.NewDefaultConfig(defaultEtcdPathPrefix, searchscheme.Codecs.LegacyCodec(schema.GroupVersion{Group: searchv1alpha1.GroupVersion.Group, Version: searchv1alpha1.GroupVersion.Version}))),
SecureServing: genericoptions.NewSecureServingOptions().WithLoopback(),
Authentication: genericoptions.NewDelegatingAuthenticationOptions(),
Authorization: genericoptions.NewDelegatingAuthorizationOptions(),
Audit: genericoptions.NewAuditOptions(),
Features: genericoptions.NewFeatureOptions(),
CoreAPI: genericoptions.NewCoreAPIOptions(),
}
o.RecommendedOptions.Etcd.StorageConfig.EncodeVersioner = runtime.NewMultiGroupVersioner(searchv1alpha1.SchemeGroupVersion,
o.Etcd.StorageConfig.EncodeVersioner = runtime.NewMultiGroupVersioner(schema.GroupVersion{Group: searchv1alpha1.GroupVersion.Group, Version: searchv1alpha1.GroupVersion.Version},
schema.GroupKind{Group: searchv1alpha1.GroupName})
return o
}

// AddFlags adds flags to the specified FlagSet.
func (o *Options) AddFlags(flags *pflag.FlagSet) {
o.RecommendedOptions.AddFlags(flags)
o.Etcd.AddFlags(flags)
o.SecureServing.AddFlags(flags)
o.Authentication.AddFlags(flags)
o.Authorization.AddFlags(flags)
o.Audit.AddFlags(flags)
o.Features.AddFlags(flags)
o.CoreAPI.AddFlags(flags)

flags.Lookup("kubeconfig").Usage = "Path to karmada control plane kubeconfig file."

flags.Float32Var(&o.KubeAPIQPS, "kube-api-qps", 40.0, "QPS to use while talking with karmada-apiserver.")
Expand All @@ -71,6 +91,36 @@ func (o *Options) AddFlags(flags *pflag.FlagSet) {
o.ProfileOpts.AddFlags(flags)
}

// ApplyTo adds Options to the server configuration.
func (o *Options) ApplyTo(config *genericapiserver.RecommendedConfig) error {
if err := o.Etcd.ApplyTo(&config.Config); err != nil {
return err
}
if err := o.SecureServing.ApplyTo(&config.Config.SecureServing, &config.Config.LoopbackClientConfig); err != nil {
return err
}
if err := o.Authentication.ApplyTo(&config.Config.Authentication, config.SecureServing, config.OpenAPIConfig); err != nil {
return err
}
if err := o.Authorization.ApplyTo(&config.Config.Authorization); err != nil {
return err
}
if err := o.Audit.ApplyTo(&config.Config); err != nil {
return err
}
if err := o.CoreAPI.ApplyTo(config); err != nil {
return err
}
kubeClient, err := kubernetes.NewForConfig(config.ClientConfig)
if err != nil {
return err
}
if err = o.Features.ApplyTo(&config.Config, kubeClient, config.SharedInformerFactory); err != nil {
return err
}
return nil
}

// Complete fills in fields required to have valid data.
func (o *Options) Complete() error {
return nil
Expand Down
9 changes: 7 additions & 2 deletions cmd/karmada-search/app/options/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,12 @@ import (
// Validate validates Options.
func (o *Options) Validate() error {
var errs []error
errs = append(errs, o.RecommendedOptions.Validate()...)

errs = append(errs, o.Etcd.Validate()...)
errs = append(errs, o.SecureServing.Validate()...)
errs = append(errs, o.Authentication.Validate()...)
errs = append(errs, o.Authorization.Validate()...)
errs = append(errs, o.Audit.Validate()...)
errs = append(errs, o.Features.Validate()...)
errs = append(errs, o.CoreAPI.Validate()...)
return utilerrors.NewAggregate(errs)
}

0 comments on commit b2c15df

Please sign in to comment.