mirror of https://github.com/k3s-io/k3s
add feature enablement options to recommendedoptions
parent
51b5d5a51b
commit
cc75d51897
|
@ -45,6 +45,7 @@ type ServerRunOptions struct {
|
||||||
SecureServing *genericoptions.SecureServingOptions
|
SecureServing *genericoptions.SecureServingOptions
|
||||||
InsecureServing *genericoptions.ServingOptions
|
InsecureServing *genericoptions.ServingOptions
|
||||||
Audit *genericoptions.AuditLogOptions
|
Audit *genericoptions.AuditLogOptions
|
||||||
|
Features *genericoptions.FeatureOptions
|
||||||
Authentication *kubeoptions.BuiltInAuthenticationOptions
|
Authentication *kubeoptions.BuiltInAuthenticationOptions
|
||||||
Authorization *kubeoptions.BuiltInAuthorizationOptions
|
Authorization *kubeoptions.BuiltInAuthorizationOptions
|
||||||
CloudProvider *kubeoptions.CloudProviderOptions
|
CloudProvider *kubeoptions.CloudProviderOptions
|
||||||
|
@ -70,6 +71,7 @@ func NewServerRunOptions() *ServerRunOptions {
|
||||||
SecureServing: genericoptions.NewSecureServingOptions(),
|
SecureServing: genericoptions.NewSecureServingOptions(),
|
||||||
InsecureServing: genericoptions.NewInsecureServingOptions(),
|
InsecureServing: genericoptions.NewInsecureServingOptions(),
|
||||||
Audit: genericoptions.NewAuditLogOptions(),
|
Audit: genericoptions.NewAuditLogOptions(),
|
||||||
|
Features: genericoptions.NewFeatureOptions(),
|
||||||
Authentication: kubeoptions.NewBuiltInAuthenticationOptions().WithAll(),
|
Authentication: kubeoptions.NewBuiltInAuthenticationOptions().WithAll(),
|
||||||
Authorization: kubeoptions.NewBuiltInAuthorizationOptions(),
|
Authorization: kubeoptions.NewBuiltInAuthorizationOptions(),
|
||||||
CloudProvider: kubeoptions.NewCloudProviderOptions(),
|
CloudProvider: kubeoptions.NewCloudProviderOptions(),
|
||||||
|
@ -106,6 +108,7 @@ func (s *ServerRunOptions) AddFlags(fs *pflag.FlagSet) {
|
||||||
s.InsecureServing.AddFlags(fs)
|
s.InsecureServing.AddFlags(fs)
|
||||||
s.InsecureServing.AddDeprecatedFlags(fs)
|
s.InsecureServing.AddDeprecatedFlags(fs)
|
||||||
s.Audit.AddFlags(fs)
|
s.Audit.AddFlags(fs)
|
||||||
|
s.Features.AddFlags(fs)
|
||||||
s.Authentication.AddFlags(fs)
|
s.Authentication.AddFlags(fs)
|
||||||
s.Authorization.AddFlags(fs)
|
s.Authorization.AddFlags(fs)
|
||||||
s.CloudProvider.AddFlags(fs)
|
s.CloudProvider.AddFlags(fs)
|
||||||
|
|
|
@ -28,7 +28,7 @@ func TestAddFlagsFlag(t *testing.T) {
|
||||||
f := pflag.NewFlagSet("addflagstest", pflag.ContinueOnError)
|
f := pflag.NewFlagSet("addflagstest", pflag.ContinueOnError)
|
||||||
s := NewServerRunOptions()
|
s := NewServerRunOptions()
|
||||||
s.AddFlags(f)
|
s.AddFlags(f)
|
||||||
if s.GenericServerRunOptions.EnableSwaggerUI {
|
if s.Features.EnableSwaggerUI {
|
||||||
t.Errorf("Expected s.EnableSwaggerUI to be false by default")
|
t.Errorf("Expected s.EnableSwaggerUI to be false by default")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ func TestAddFlagsFlag(t *testing.T) {
|
||||||
"--enable-swagger-ui=true",
|
"--enable-swagger-ui=true",
|
||||||
}
|
}
|
||||||
f.Parse(args)
|
f.Parse(args)
|
||||||
if !s.GenericServerRunOptions.EnableSwaggerUI {
|
if !s.Features.EnableSwaggerUI {
|
||||||
t.Errorf("Expected s.EnableSwaggerUI to be true")
|
t.Errorf("Expected s.EnableSwaggerUI to be true")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,6 +123,9 @@ func Run(s *options.ServerRunOptions) error {
|
||||||
if err := s.Audit.ApplyTo(genericConfig); err != nil {
|
if err := s.Audit.ApplyTo(genericConfig); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := s.Features.ApplyTo(genericConfig); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
capabilities.Initialize(capabilities.Capabilities{
|
capabilities.Initialize(capabilities.Capabilities{
|
||||||
AllowPrivileged: s.AllowPrivileged,
|
AllowPrivileged: s.AllowPrivileged,
|
||||||
|
|
|
@ -37,6 +37,7 @@ type ServerRunOptions struct {
|
||||||
SecureServing *genericoptions.SecureServingOptions
|
SecureServing *genericoptions.SecureServingOptions
|
||||||
InsecureServing *genericoptions.ServingOptions
|
InsecureServing *genericoptions.ServingOptions
|
||||||
Audit *genericoptions.AuditLogOptions
|
Audit *genericoptions.AuditLogOptions
|
||||||
|
Features *genericoptions.FeatureOptions
|
||||||
Authentication *kubeoptions.BuiltInAuthenticationOptions
|
Authentication *kubeoptions.BuiltInAuthenticationOptions
|
||||||
Authorization *kubeoptions.BuiltInAuthorizationOptions
|
Authorization *kubeoptions.BuiltInAuthorizationOptions
|
||||||
CloudProvider *kubeoptions.CloudProviderOptions
|
CloudProvider *kubeoptions.CloudProviderOptions
|
||||||
|
@ -53,6 +54,7 @@ func NewServerRunOptions() *ServerRunOptions {
|
||||||
SecureServing: genericoptions.NewSecureServingOptions(),
|
SecureServing: genericoptions.NewSecureServingOptions(),
|
||||||
InsecureServing: genericoptions.NewInsecureServingOptions(),
|
InsecureServing: genericoptions.NewInsecureServingOptions(),
|
||||||
Audit: genericoptions.NewAuditLogOptions(),
|
Audit: genericoptions.NewAuditLogOptions(),
|
||||||
|
Features: genericoptions.NewFeatureOptions(),
|
||||||
Authentication: kubeoptions.NewBuiltInAuthenticationOptions().WithAll(),
|
Authentication: kubeoptions.NewBuiltInAuthenticationOptions().WithAll(),
|
||||||
Authorization: kubeoptions.NewBuiltInAuthorizationOptions(),
|
Authorization: kubeoptions.NewBuiltInAuthorizationOptions(),
|
||||||
CloudProvider: kubeoptions.NewCloudProviderOptions(),
|
CloudProvider: kubeoptions.NewCloudProviderOptions(),
|
||||||
|
@ -73,6 +75,7 @@ func (s *ServerRunOptions) AddFlags(fs *pflag.FlagSet) {
|
||||||
s.SecureServing.AddFlags(fs)
|
s.SecureServing.AddFlags(fs)
|
||||||
s.InsecureServing.AddFlags(fs)
|
s.InsecureServing.AddFlags(fs)
|
||||||
s.Audit.AddFlags(fs)
|
s.Audit.AddFlags(fs)
|
||||||
|
s.Features.AddFlags(fs)
|
||||||
s.Authentication.AddFlags(fs)
|
s.Authentication.AddFlags(fs)
|
||||||
s.Authorization.AddFlags(fs)
|
s.Authorization.AddFlags(fs)
|
||||||
s.CloudProvider.AddFlags(fs)
|
s.CloudProvider.AddFlags(fs)
|
||||||
|
|
|
@ -106,6 +106,9 @@ func Run(s *options.ServerRunOptions) error {
|
||||||
if err := s.Audit.ApplyTo(genericConfig); err != nil {
|
if err := s.Audit.ApplyTo(genericConfig); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := s.Features.ApplyTo(genericConfig); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: register cluster federation resources here.
|
// TODO: register cluster federation resources here.
|
||||||
resourceConfig := genericapiserver.NewResourceConfig()
|
resourceConfig := genericapiserver.NewResourceConfig()
|
||||||
|
@ -211,7 +214,7 @@ func Run(s *options.ServerRunOptions) error {
|
||||||
// TODO: Refactor this code to share it with kube-apiserver rather than duplicating it here.
|
// TODO: Refactor this code to share it with kube-apiserver rather than duplicating it here.
|
||||||
restOptionsFactory := &restOptionsFactory{
|
restOptionsFactory := &restOptionsFactory{
|
||||||
storageFactory: storageFactory,
|
storageFactory: storageFactory,
|
||||||
enableGarbageCollection: s.GenericServerRunOptions.EnableGarbageCollection,
|
enableGarbageCollection: s.Features.EnableGarbageCollection,
|
||||||
deleteCollectionWorkers: s.GenericServerRunOptions.DeleteCollectionWorkers,
|
deleteCollectionWorkers: s.GenericServerRunOptions.DeleteCollectionWorkers,
|
||||||
}
|
}
|
||||||
if s.GenericServerRunOptions.EnableWatchCache {
|
if s.GenericServerRunOptions.EnableWatchCache {
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
/*
|
||||||
|
Copyright 2017 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package options
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/spf13/pflag"
|
||||||
|
|
||||||
|
"k8s.io/apiserver/pkg/server"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FeatureOptions struct {
|
||||||
|
EnableGarbageCollection bool
|
||||||
|
EnableProfiling bool
|
||||||
|
EnableContentionProfiling bool
|
||||||
|
EnableSwaggerUI bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewFeatureOptions() *FeatureOptions {
|
||||||
|
defaults := server.NewConfig()
|
||||||
|
|
||||||
|
return &FeatureOptions{
|
||||||
|
EnableGarbageCollection: defaults.EnableGarbageCollection,
|
||||||
|
EnableProfiling: defaults.EnableProfiling,
|
||||||
|
EnableContentionProfiling: defaults.EnableContentionProfiling,
|
||||||
|
EnableSwaggerUI: defaults.EnableSwaggerUI,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *FeatureOptions) AddFlags(fs *pflag.FlagSet) {
|
||||||
|
fs.BoolVar(&o.EnableGarbageCollection, "enable-garbage-collector", o.EnableGarbageCollection, ""+
|
||||||
|
"Enables the generic garbage collector. MUST be synced with the corresponding flag "+
|
||||||
|
"of the kube-controller-manager.")
|
||||||
|
fs.BoolVar(&o.EnableProfiling, "profiling", o.EnableProfiling,
|
||||||
|
"Enable profiling via web interface host:port/debug/pprof/")
|
||||||
|
fs.BoolVar(&o.EnableContentionProfiling, "contention-profiling", o.EnableContentionProfiling,
|
||||||
|
"Enable contention profiling. Requires --profiling to be set to work.")
|
||||||
|
fs.BoolVar(&o.EnableSwaggerUI, "enable-swagger-ui", o.EnableSwaggerUI,
|
||||||
|
"Enables swagger ui on the apiserver at /swagger-ui")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *FeatureOptions) ApplyTo(c *server.Config) error {
|
||||||
|
c.EnableGarbageCollection = o.EnableGarbageCollection
|
||||||
|
c.EnableProfiling = o.EnableProfiling
|
||||||
|
c.EnableContentionProfiling = o.EnableContentionProfiling
|
||||||
|
c.EnableSwaggerUI = o.EnableSwaggerUI
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -31,6 +31,7 @@ type RecommendedOptions struct {
|
||||||
Authentication *DelegatingAuthenticationOptions
|
Authentication *DelegatingAuthenticationOptions
|
||||||
Authorization *DelegatingAuthorizationOptions
|
Authorization *DelegatingAuthorizationOptions
|
||||||
Audit *AuditLogOptions
|
Audit *AuditLogOptions
|
||||||
|
Features *FeatureOptions
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRecommendedOptions(scheme *runtime.Scheme) *RecommendedOptions {
|
func NewRecommendedOptions(scheme *runtime.Scheme) *RecommendedOptions {
|
||||||
|
@ -40,6 +41,7 @@ func NewRecommendedOptions(scheme *runtime.Scheme) *RecommendedOptions {
|
||||||
Authentication: NewDelegatingAuthenticationOptions(),
|
Authentication: NewDelegatingAuthenticationOptions(),
|
||||||
Authorization: NewDelegatingAuthorizationOptions(),
|
Authorization: NewDelegatingAuthorizationOptions(),
|
||||||
Audit: NewAuditLogOptions(),
|
Audit: NewAuditLogOptions(),
|
||||||
|
Features: NewFeatureOptions(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,6 +51,7 @@ func (o *RecommendedOptions) AddFlags(fs *pflag.FlagSet) {
|
||||||
o.Authentication.AddFlags(fs)
|
o.Authentication.AddFlags(fs)
|
||||||
o.Authorization.AddFlags(fs)
|
o.Authorization.AddFlags(fs)
|
||||||
o.Audit.AddFlags(fs)
|
o.Audit.AddFlags(fs)
|
||||||
|
o.Features.AddFlags(fs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *RecommendedOptions) ApplyTo(config *server.Config) error {
|
func (o *RecommendedOptions) ApplyTo(config *server.Config) error {
|
||||||
|
@ -64,6 +67,9 @@ func (o *RecommendedOptions) ApplyTo(config *server.Config) error {
|
||||||
if err := o.Audit.ApplyTo(config); err != nil {
|
if err := o.Audit.ApplyTo(config); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := o.Features.ApplyTo(config); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,10 +44,6 @@ type ServerRunOptions struct {
|
||||||
// to set it to "application/vnd.kubernetes.protobuf".
|
// to set it to "application/vnd.kubernetes.protobuf".
|
||||||
DefaultStorageMediaType string
|
DefaultStorageMediaType string
|
||||||
DeleteCollectionWorkers int
|
DeleteCollectionWorkers int
|
||||||
EnableGarbageCollection bool
|
|
||||||
EnableProfiling bool
|
|
||||||
EnableContentionProfiling bool
|
|
||||||
EnableSwaggerUI bool
|
|
||||||
EnableWatchCache bool
|
EnableWatchCache bool
|
||||||
ExternalHost string
|
ExternalHost string
|
||||||
MaxRequestsInFlight int
|
MaxRequestsInFlight int
|
||||||
|
@ -65,9 +61,6 @@ func NewServerRunOptions() *ServerRunOptions {
|
||||||
AdmissionControl: "AlwaysAdmit",
|
AdmissionControl: "AlwaysAdmit",
|
||||||
DefaultStorageMediaType: "application/json",
|
DefaultStorageMediaType: "application/json",
|
||||||
DeleteCollectionWorkers: 1,
|
DeleteCollectionWorkers: 1,
|
||||||
EnableGarbageCollection: defaults.EnableGarbageCollection,
|
|
||||||
EnableProfiling: defaults.EnableProfiling,
|
|
||||||
EnableContentionProfiling: false,
|
|
||||||
EnableWatchCache: true,
|
EnableWatchCache: true,
|
||||||
MaxRequestsInFlight: defaults.MaxRequestsInFlight,
|
MaxRequestsInFlight: defaults.MaxRequestsInFlight,
|
||||||
MaxMutatingRequestsInFlight: defaults.MaxMutatingRequestsInFlight,
|
MaxMutatingRequestsInFlight: defaults.MaxMutatingRequestsInFlight,
|
||||||
|
@ -79,10 +72,6 @@ func NewServerRunOptions() *ServerRunOptions {
|
||||||
// ApplyOptions applies the run options to the method receiver and returns self
|
// ApplyOptions applies the run options to the method receiver and returns self
|
||||||
func (s *ServerRunOptions) ApplyTo(c *server.Config) error {
|
func (s *ServerRunOptions) ApplyTo(c *server.Config) error {
|
||||||
c.CorsAllowedOriginList = s.CorsAllowedOriginList
|
c.CorsAllowedOriginList = s.CorsAllowedOriginList
|
||||||
c.EnableGarbageCollection = s.EnableGarbageCollection
|
|
||||||
c.EnableProfiling = s.EnableProfiling
|
|
||||||
c.EnableContentionProfiling = s.EnableContentionProfiling
|
|
||||||
c.EnableSwaggerUI = s.EnableSwaggerUI
|
|
||||||
c.ExternalAddress = s.ExternalHost
|
c.ExternalAddress = s.ExternalHost
|
||||||
c.MaxRequestsInFlight = s.MaxRequestsInFlight
|
c.MaxRequestsInFlight = s.MaxRequestsInFlight
|
||||||
c.MaxMutatingRequestsInFlight = s.MaxMutatingRequestsInFlight
|
c.MaxMutatingRequestsInFlight = s.MaxMutatingRequestsInFlight
|
||||||
|
@ -149,18 +138,6 @@ func (s *ServerRunOptions) AddUniversalFlags(fs *pflag.FlagSet) {
|
||||||
fs.IntVar(&s.DeleteCollectionWorkers, "delete-collection-workers", s.DeleteCollectionWorkers,
|
fs.IntVar(&s.DeleteCollectionWorkers, "delete-collection-workers", s.DeleteCollectionWorkers,
|
||||||
"Number of workers spawned for DeleteCollection call. These are used to speed up namespace cleanup.")
|
"Number of workers spawned for DeleteCollection call. These are used to speed up namespace cleanup.")
|
||||||
|
|
||||||
fs.BoolVar(&s.EnableGarbageCollection, "enable-garbage-collector", s.EnableGarbageCollection, ""+
|
|
||||||
"Enables the generic garbage collector. MUST be synced with the corresponding flag "+
|
|
||||||
"of the kube-controller-manager.")
|
|
||||||
|
|
||||||
fs.BoolVar(&s.EnableProfiling, "profiling", s.EnableProfiling,
|
|
||||||
"Enable profiling via web interface host:port/debug/pprof/")
|
|
||||||
fs.BoolVar(&s.EnableContentionProfiling, "contention-profiling", s.EnableContentionProfiling,
|
|
||||||
"Enable contention profiling. Requires --profiling to be set to work.")
|
|
||||||
|
|
||||||
fs.BoolVar(&s.EnableSwaggerUI, "enable-swagger-ui", s.EnableSwaggerUI,
|
|
||||||
"Enables swagger ui on the apiserver at /swagger-ui")
|
|
||||||
|
|
||||||
// TODO: enable cache in integration tests.
|
// TODO: enable cache in integration tests.
|
||||||
fs.BoolVar(&s.EnableWatchCache, "watch-cache", s.EnableWatchCache,
|
fs.BoolVar(&s.EnableWatchCache, "watch-cache", s.EnableWatchCache,
|
||||||
"Enable watch caching in the apiserver")
|
"Enable watch caching in the apiserver")
|
||||||
|
|
|
@ -14094,6 +14094,7 @@ go_library(
|
||||||
"k8s.io/apiserver/pkg/server/options/authorization.go",
|
"k8s.io/apiserver/pkg/server/options/authorization.go",
|
||||||
"k8s.io/apiserver/pkg/server/options/doc.go",
|
"k8s.io/apiserver/pkg/server/options/doc.go",
|
||||||
"k8s.io/apiserver/pkg/server/options/etcd.go",
|
"k8s.io/apiserver/pkg/server/options/etcd.go",
|
||||||
|
"k8s.io/apiserver/pkg/server/options/feature.go",
|
||||||
"k8s.io/apiserver/pkg/server/options/recommended.go",
|
"k8s.io/apiserver/pkg/server/options/recommended.go",
|
||||||
"k8s.io/apiserver/pkg/server/options/server_run_options.go",
|
"k8s.io/apiserver/pkg/server/options/server_run_options.go",
|
||||||
"k8s.io/apiserver/pkg/server/options/serving.go",
|
"k8s.io/apiserver/pkg/server/options/serving.go",
|
||||||
|
|
Loading…
Reference in New Issue