mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	split generic etcdoption out of main struct
This commit is contained in:
		@@ -36,7 +36,6 @@ go_library(
 | 
				
			|||||||
        "//pkg/generated/openapi:go_default_library",
 | 
					        "//pkg/generated/openapi:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver:go_default_library",
 | 
					        "//pkg/genericapiserver:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/authorizer:go_default_library",
 | 
					        "//pkg/genericapiserver/authorizer:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/validation:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/master:go_default_library",
 | 
					        "//pkg/master:go_default_library",
 | 
				
			||||||
        "//pkg/registry/cachesize:go_default_library",
 | 
					        "//pkg/registry/cachesize:go_default_library",
 | 
				
			||||||
        "//pkg/runtime/schema:go_default_library",
 | 
					        "//pkg/runtime/schema:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,7 +70,7 @@ func (s *ServerRunOptions) AddFlags(fs *pflag.FlagSet) {
 | 
				
			|||||||
	// Add the generic flags.
 | 
						// Add the generic flags.
 | 
				
			||||||
	s.GenericServerRunOptions.AddUniversalFlags(fs)
 | 
						s.GenericServerRunOptions.AddUniversalFlags(fs)
 | 
				
			||||||
	//Add etcd specific flags.
 | 
						//Add etcd specific flags.
 | 
				
			||||||
	s.GenericServerRunOptions.AddEtcdStorageFlags(fs)
 | 
						s.GenericServerRunOptions.Etcd.AddEtcdStorageFlags(fs)
 | 
				
			||||||
	// Note: the weird ""+ in below lines seems to be the only way to get gofmt to
 | 
						// Note: the weird ""+ in below lines seems to be the only way to get gofmt to
 | 
				
			||||||
	// arrange these text blocks sensibly. Grrr.
 | 
						// arrange these text blocks sensibly. Grrr.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,11 +50,11 @@ import (
 | 
				
			|||||||
	generatedopenapi "k8s.io/kubernetes/pkg/generated/openapi"
 | 
						generatedopenapi "k8s.io/kubernetes/pkg/generated/openapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/authorizer"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/authorizer"
 | 
				
			||||||
	genericvalidation "k8s.io/kubernetes/pkg/genericapiserver/validation"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/master"
 | 
						"k8s.io/kubernetes/pkg/master"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/registry/cachesize"
 | 
						"k8s.io/kubernetes/pkg/registry/cachesize"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime/schema"
 | 
						"k8s.io/kubernetes/pkg/runtime/schema"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/serviceaccount"
 | 
						"k8s.io/kubernetes/pkg/serviceaccount"
 | 
				
			||||||
 | 
						utilerrors "k8s.io/kubernetes/pkg/util/errors"
 | 
				
			||||||
	utilnet "k8s.io/kubernetes/pkg/util/net"
 | 
						utilnet "k8s.io/kubernetes/pkg/util/net"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/wait"
 | 
						"k8s.io/kubernetes/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/version"
 | 
						"k8s.io/kubernetes/pkg/version"
 | 
				
			||||||
@@ -80,7 +80,9 @@ cluster's shared state through which all other components interact.`,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Run runs the specified APIServer.  This should never exit.
 | 
					// Run runs the specified APIServer.  This should never exit.
 | 
				
			||||||
func Run(s *options.ServerRunOptions) error {
 | 
					func Run(s *options.ServerRunOptions) error {
 | 
				
			||||||
	genericvalidation.VerifyEtcdServersList(s.GenericServerRunOptions)
 | 
						if errs := s.GenericServerRunOptions.Etcd.Validate(); len(errs) > 0 {
 | 
				
			||||||
 | 
							return utilerrors.NewAggregate(errs)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	genericapiserver.DefaultAndValidateRunOptions(s.GenericServerRunOptions)
 | 
						genericapiserver.DefaultAndValidateRunOptions(s.GenericServerRunOptions)
 | 
				
			||||||
	genericConfig := genericapiserver.NewConfig(). // create the new config
 | 
						genericConfig := genericapiserver.NewConfig(). // create the new config
 | 
				
			||||||
							ApplyOptions(s.GenericServerRunOptions). // apply the options selected
 | 
												ApplyOptions(s.GenericServerRunOptions). // apply the options selected
 | 
				
			||||||
@@ -142,7 +144,7 @@ func Run(s *options.ServerRunOptions) error {
 | 
				
			|||||||
	// Proxying to pods and services is IP-based... don't expect to be able to verify the hostname
 | 
						// Proxying to pods and services is IP-based... don't expect to be able to verify the hostname
 | 
				
			||||||
	proxyTLSClientConfig := &tls.Config{InsecureSkipVerify: true}
 | 
						proxyTLSClientConfig := &tls.Config{InsecureSkipVerify: true}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if s.GenericServerRunOptions.StorageConfig.DeserializationCacheSize == 0 {
 | 
						if s.GenericServerRunOptions.Etcd.StorageConfig.DeserializationCacheSize == 0 {
 | 
				
			||||||
		// When size of cache is not explicitly set, estimate its size based on
 | 
							// When size of cache is not explicitly set, estimate its size based on
 | 
				
			||||||
		// target memory usage.
 | 
							// target memory usage.
 | 
				
			||||||
		glog.V(2).Infof("Initalizing deserialization cache size based on %dMB limit", s.GenericServerRunOptions.TargetRAMMB)
 | 
							glog.V(2).Infof("Initalizing deserialization cache size based on %dMB limit", s.GenericServerRunOptions.TargetRAMMB)
 | 
				
			||||||
@@ -158,9 +160,9 @@ func Run(s *options.ServerRunOptions) error {
 | 
				
			|||||||
		// size to compute its size. We may even go further and measure
 | 
							// size to compute its size. We may even go further and measure
 | 
				
			||||||
		// collective sizes of the objects in the cache.
 | 
							// collective sizes of the objects in the cache.
 | 
				
			||||||
		clusterSize := s.GenericServerRunOptions.TargetRAMMB / 60
 | 
							clusterSize := s.GenericServerRunOptions.TargetRAMMB / 60
 | 
				
			||||||
		s.GenericServerRunOptions.StorageConfig.DeserializationCacheSize = 25 * clusterSize
 | 
							s.GenericServerRunOptions.Etcd.StorageConfig.DeserializationCacheSize = 25 * clusterSize
 | 
				
			||||||
		if s.GenericServerRunOptions.StorageConfig.DeserializationCacheSize < 1000 {
 | 
							if s.GenericServerRunOptions.Etcd.StorageConfig.DeserializationCacheSize < 1000 {
 | 
				
			||||||
			s.GenericServerRunOptions.StorageConfig.DeserializationCacheSize = 1000
 | 
								s.GenericServerRunOptions.Etcd.StorageConfig.DeserializationCacheSize = 1000
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -169,7 +171,7 @@ func Run(s *options.ServerRunOptions) error {
 | 
				
			|||||||
		glog.Fatalf("error generating storage version map: %s", err)
 | 
							glog.Fatalf("error generating storage version map: %s", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	storageFactory, err := genericapiserver.BuildDefaultStorageFactory(
 | 
						storageFactory, err := genericapiserver.BuildDefaultStorageFactory(
 | 
				
			||||||
		s.GenericServerRunOptions.StorageConfig, s.GenericServerRunOptions.DefaultStorageMediaType, api.Codecs,
 | 
							s.GenericServerRunOptions.Etcd.StorageConfig, s.GenericServerRunOptions.DefaultStorageMediaType, api.Codecs,
 | 
				
			||||||
		genericapiserver.NewDefaultResourceEncodingConfig(), storageGroupsToEncodingVersion,
 | 
							genericapiserver.NewDefaultResourceEncodingConfig(), storageGroupsToEncodingVersion,
 | 
				
			||||||
		// FIXME: this GroupVersionResource override should be configurable
 | 
							// FIXME: this GroupVersionResource override should be configurable
 | 
				
			||||||
		[]schema.GroupVersionResource{batch.Resource("cronjobs").WithVersion("v2alpha1")},
 | 
							[]schema.GroupVersionResource{batch.Resource("cronjobs").WithVersion("v2alpha1")},
 | 
				
			||||||
@@ -179,7 +181,7 @@ func Run(s *options.ServerRunOptions) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	storageFactory.AddCohabitatingResources(batch.Resource("jobs"), extensions.Resource("jobs"))
 | 
						storageFactory.AddCohabitatingResources(batch.Resource("jobs"), extensions.Resource("jobs"))
 | 
				
			||||||
	storageFactory.AddCohabitatingResources(autoscaling.Resource("horizontalpodautoscalers"), extensions.Resource("horizontalpodautoscalers"))
 | 
						storageFactory.AddCohabitatingResources(autoscaling.Resource("horizontalpodautoscalers"), extensions.Resource("horizontalpodautoscalers"))
 | 
				
			||||||
	for _, override := range s.GenericServerRunOptions.EtcdServersOverrides {
 | 
						for _, override := range s.GenericServerRunOptions.Etcd.EtcdServersOverrides {
 | 
				
			||||||
		tokens := strings.Split(override, "#")
 | 
							tokens := strings.Split(override, "#")
 | 
				
			||||||
		if len(tokens) != 2 {
 | 
							if len(tokens) != 2 {
 | 
				
			||||||
			glog.Errorf("invalid value of etcd server overrides: %s", override)
 | 
								glog.Errorf("invalid value of etcd server overrides: %s", override)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/registry/generic"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime/schema"
 | 
						"k8s.io/kubernetes/pkg/runtime/schema"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/storage/storagebackend"
 | 
						"k8s.io/kubernetes/pkg/storage/storagebackend"
 | 
				
			||||||
 | 
						utilerrors "k8s.io/kubernetes/pkg/util/errors"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Install the testgroup API
 | 
						// Install the testgroup API
 | 
				
			||||||
	_ "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup/install"
 | 
						_ "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/test_apis/testgroup/install"
 | 
				
			||||||
@@ -64,9 +65,11 @@ func Run(serverOptions *genericoptions.ServerRunOptions, stopCh <-chan struct{})
 | 
				
			|||||||
	// Set ServiceClusterIPRange
 | 
						// Set ServiceClusterIPRange
 | 
				
			||||||
	_, serviceClusterIPRange, _ := net.ParseCIDR("10.0.0.0/24")
 | 
						_, serviceClusterIPRange, _ := net.ParseCIDR("10.0.0.0/24")
 | 
				
			||||||
	serverOptions.ServiceClusterIPRange = *serviceClusterIPRange
 | 
						serverOptions.ServiceClusterIPRange = *serviceClusterIPRange
 | 
				
			||||||
	serverOptions.StorageConfig.ServerList = []string{"http://127.0.0.1:2379"}
 | 
						serverOptions.Etcd.StorageConfig.ServerList = []string{"http://127.0.0.1:2379"}
 | 
				
			||||||
	genericvalidation.ValidateRunOptions(serverOptions)
 | 
						genericvalidation.ValidateRunOptions(serverOptions)
 | 
				
			||||||
	genericvalidation.VerifyEtcdServersList(serverOptions)
 | 
						if errs := serverOptions.Etcd.Validate(); len(errs) > 0 {
 | 
				
			||||||
 | 
							return utilerrors.NewAggregate(errs)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	config := genericapiserver.NewConfig().ApplyOptions(serverOptions).Complete()
 | 
						config := genericapiserver.NewConfig().ApplyOptions(serverOptions).Complete()
 | 
				
			||||||
	if err := config.MaybeGenerateServingCerts(); err != nil {
 | 
						if err := config.MaybeGenerateServingCerts(); err != nil {
 | 
				
			||||||
		// this wasn't treated as fatal for this process before
 | 
							// this wasn't treated as fatal for this process before
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,7 +43,6 @@ go_library(
 | 
				
			|||||||
        "//pkg/generated/openapi:go_default_library",
 | 
					        "//pkg/generated/openapi:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver:go_default_library",
 | 
					        "//pkg/genericapiserver:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/authorizer:go_default_library",
 | 
					        "//pkg/genericapiserver/authorizer:go_default_library",
 | 
				
			||||||
        "//pkg/genericapiserver/validation:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/registry/cachesize:go_default_library",
 | 
					        "//pkg/registry/cachesize:go_default_library",
 | 
				
			||||||
        "//pkg/registry/core/configmap/etcd:go_default_library",
 | 
					        "//pkg/registry/core/configmap/etcd:go_default_library",
 | 
				
			||||||
        "//pkg/registry/core/event/etcd:go_default_library",
 | 
					        "//pkg/registry/core/event/etcd:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ func (s *ServerRunOptions) AddFlags(fs *pflag.FlagSet) {
 | 
				
			|||||||
	// Add the generic flags.
 | 
						// Add the generic flags.
 | 
				
			||||||
	s.GenericServerRunOptions.AddUniversalFlags(fs)
 | 
						s.GenericServerRunOptions.AddUniversalFlags(fs)
 | 
				
			||||||
	//Add etcd specific flags.
 | 
						//Add etcd specific flags.
 | 
				
			||||||
	s.GenericServerRunOptions.AddEtcdStorageFlags(fs)
 | 
						s.GenericServerRunOptions.Etcd.AddEtcdStorageFlags(fs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fs.DurationVar(&s.EventTTL, "event-ttl", s.EventTTL,
 | 
						fs.DurationVar(&s.EventTTL, "event-ttl", s.EventTTL,
 | 
				
			||||||
		"Amount of time to retain events. Default is 1h.")
 | 
							"Amount of time to retain events. Default is 1h.")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,7 +38,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/generated/openapi"
 | 
						"k8s.io/kubernetes/pkg/generated/openapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/authorizer"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver/authorizer"
 | 
				
			||||||
	genericvalidation "k8s.io/kubernetes/pkg/genericapiserver/validation"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/registry/cachesize"
 | 
						"k8s.io/kubernetes/pkg/registry/cachesize"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/registry/generic"
 | 
						"k8s.io/kubernetes/pkg/registry/generic"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/registry/generic/registry"
 | 
						"k8s.io/kubernetes/pkg/registry/generic/registry"
 | 
				
			||||||
@@ -67,7 +66,9 @@ cluster's shared state through which all other components interact.`,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Run runs the specified APIServer.  This should never exit.
 | 
					// Run runs the specified APIServer.  This should never exit.
 | 
				
			||||||
func Run(s *options.ServerRunOptions) error {
 | 
					func Run(s *options.ServerRunOptions) error {
 | 
				
			||||||
	genericvalidation.VerifyEtcdServersList(s.GenericServerRunOptions)
 | 
						if errs := s.GenericServerRunOptions.Etcd.Validate(); len(errs) > 0 {
 | 
				
			||||||
 | 
							glog.Fatal(errs)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	genericapiserver.DefaultAndValidateRunOptions(s.GenericServerRunOptions)
 | 
						genericapiserver.DefaultAndValidateRunOptions(s.GenericServerRunOptions)
 | 
				
			||||||
	genericConfig := genericapiserver.NewConfig(). // create the new config
 | 
						genericConfig := genericapiserver.NewConfig(). // create the new config
 | 
				
			||||||
							ApplyOptions(s.GenericServerRunOptions). // apply the options selected
 | 
												ApplyOptions(s.GenericServerRunOptions). // apply the options selected
 | 
				
			||||||
@@ -80,23 +81,23 @@ func Run(s *options.ServerRunOptions) error {
 | 
				
			|||||||
	// TODO: register cluster federation resources here.
 | 
						// TODO: register cluster federation resources here.
 | 
				
			||||||
	resourceConfig := genericapiserver.NewResourceConfig()
 | 
						resourceConfig := genericapiserver.NewResourceConfig()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if s.GenericServerRunOptions.StorageConfig.DeserializationCacheSize == 0 {
 | 
						if s.GenericServerRunOptions.Etcd.StorageConfig.DeserializationCacheSize == 0 {
 | 
				
			||||||
		// When size of cache is not explicitly set, set it to 50000
 | 
							// When size of cache is not explicitly set, set it to 50000
 | 
				
			||||||
		s.GenericServerRunOptions.StorageConfig.DeserializationCacheSize = 50000
 | 
							s.GenericServerRunOptions.Etcd.StorageConfig.DeserializationCacheSize = 50000
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	storageGroupsToEncodingVersion, err := s.GenericServerRunOptions.StorageGroupsToEncodingVersion()
 | 
						storageGroupsToEncodingVersion, err := s.GenericServerRunOptions.StorageGroupsToEncodingVersion()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		glog.Fatalf("error generating storage version map: %s", err)
 | 
							glog.Fatalf("error generating storage version map: %s", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	storageFactory, err := genericapiserver.BuildDefaultStorageFactory(
 | 
						storageFactory, err := genericapiserver.BuildDefaultStorageFactory(
 | 
				
			||||||
		s.GenericServerRunOptions.StorageConfig, s.GenericServerRunOptions.DefaultStorageMediaType, api.Codecs,
 | 
							s.GenericServerRunOptions.Etcd.StorageConfig, s.GenericServerRunOptions.DefaultStorageMediaType, api.Codecs,
 | 
				
			||||||
		genericapiserver.NewDefaultResourceEncodingConfig(), storageGroupsToEncodingVersion,
 | 
							genericapiserver.NewDefaultResourceEncodingConfig(), storageGroupsToEncodingVersion,
 | 
				
			||||||
		[]schema.GroupVersionResource{}, resourceConfig, s.GenericServerRunOptions.RuntimeConfig)
 | 
							[]schema.GroupVersionResource{}, resourceConfig, s.GenericServerRunOptions.RuntimeConfig)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		glog.Fatalf("error in initializing storage factory: %s", err)
 | 
							glog.Fatalf("error in initializing storage factory: %s", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, override := range s.GenericServerRunOptions.EtcdServersOverrides {
 | 
						for _, override := range s.GenericServerRunOptions.Etcd.EtcdServersOverrides {
 | 
				
			||||||
		tokens := strings.Split(override, "#")
 | 
							tokens := strings.Split(override, "#")
 | 
				
			||||||
		if len(tokens) != 2 {
 | 
							if len(tokens) != 2 {
 | 
				
			||||||
			glog.Errorf("invalid value of etcd server overrides: %s", override)
 | 
								glog.Errorf("invalid value of etcd server overrides: %s", override)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,20 +17,55 @@ limitations under the License.
 | 
				
			|||||||
package options
 | 
					package options
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/spf13/pflag"
 | 
						"github.com/spf13/pflag"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/storage/storagebackend"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	DefaultEtcdPathPrefix = "/registry"
 | 
						DefaultEtcdPathPrefix = "/registry"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AddEtcdFlags adds flags related to etcd storage for a specific APIServer to the specified FlagSet
 | 
					type EtcdOptions struct {
 | 
				
			||||||
func (s *ServerRunOptions) AddEtcdStorageFlags(fs *pflag.FlagSet) {
 | 
						StorageConfig storagebackend.Config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EtcdServersOverrides []string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewDefaultEtcdOptions() *EtcdOptions {
 | 
				
			||||||
 | 
						return &EtcdOptions{
 | 
				
			||||||
 | 
							StorageConfig: storagebackend.Config{
 | 
				
			||||||
 | 
								Prefix: DefaultEtcdPathPrefix,
 | 
				
			||||||
 | 
								// Default cache size to 0 - if unset, its size will be set based on target
 | 
				
			||||||
 | 
								// memory usage.
 | 
				
			||||||
 | 
								DeserializationCacheSize: 0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (s *EtcdOptions) Validate() []error {
 | 
				
			||||||
 | 
						allErrors := []error{}
 | 
				
			||||||
 | 
						if len(s.StorageConfig.ServerList) == 0 {
 | 
				
			||||||
 | 
							allErrors = append(allErrors, fmt.Errorf("--etcd-servers must be specified"))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return allErrors
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// AddEtcdFlags adds flags related to etcd storage for a specific APIServer to the specified FlagSet
 | 
				
			||||||
 | 
					func (s *EtcdOptions) AddEtcdStorageFlags(fs *pflag.FlagSet) {
 | 
				
			||||||
	fs.StringSliceVar(&s.EtcdServersOverrides, "etcd-servers-overrides", s.EtcdServersOverrides, ""+
 | 
						fs.StringSliceVar(&s.EtcdServersOverrides, "etcd-servers-overrides", s.EtcdServersOverrides, ""+
 | 
				
			||||||
		"Per-resource etcd servers overrides, comma separated. The individual override "+
 | 
							"Per-resource etcd servers overrides, comma separated. The individual override "+
 | 
				
			||||||
		"format: group/resource#servers, where servers are http://ip:port, semicolon separated.")
 | 
							"format: group/resource#servers, where servers are http://ip:port, semicolon separated.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fs.StringVar(&s.StorageConfig.Type, "storage-backend", s.StorageConfig.Type,
 | 
				
			||||||
 | 
							"The storage backend for persistence. Options: 'etcd2' (default), 'etcd3'.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fs.IntVar(&s.StorageConfig.DeserializationCacheSize, "deserialization-cache-size", s.StorageConfig.DeserializationCacheSize,
 | 
				
			||||||
 | 
							"Number of deserialized json objects to cache in memory.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fs.StringSliceVar(&s.StorageConfig.ServerList, "etcd-servers", s.StorageConfig.ServerList,
 | 
						fs.StringSliceVar(&s.StorageConfig.ServerList, "etcd-servers", s.StorageConfig.ServerList,
 | 
				
			||||||
		"List of etcd servers to connect with (scheme://ip:port), comma separated.")
 | 
							"List of etcd servers to connect with (scheme://ip:port), comma separated.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,6 @@ import (
 | 
				
			|||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/restclient"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime/schema"
 | 
						"k8s.io/kubernetes/pkg/runtime/schema"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/storage/storagebackend"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/config"
 | 
						"k8s.io/kubernetes/pkg/util/config"
 | 
				
			||||||
	utilnet "k8s.io/kubernetes/pkg/util/net"
 | 
						utilnet "k8s.io/kubernetes/pkg/util/net"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -55,6 +54,8 @@ var AuthorizationModeChoices = []string{ModeAlwaysAllow, ModeAlwaysDeny, ModeABA
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// ServerRunOptions contains the options while running a generic api server.
 | 
					// ServerRunOptions contains the options while running a generic api server.
 | 
				
			||||||
type ServerRunOptions struct {
 | 
					type ServerRunOptions struct {
 | 
				
			||||||
 | 
						Etcd *EtcdOptions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	AdmissionControl           string
 | 
						AdmissionControl           string
 | 
				
			||||||
	AdmissionControlConfigFile string
 | 
						AdmissionControlConfigFile string
 | 
				
			||||||
	AdvertiseAddress           net.IP
 | 
						AdvertiseAddress           net.IP
 | 
				
			||||||
@@ -86,8 +87,6 @@ type ServerRunOptions struct {
 | 
				
			|||||||
	EnableContentionProfiling    bool
 | 
						EnableContentionProfiling    bool
 | 
				
			||||||
	EnableSwaggerUI              bool
 | 
						EnableSwaggerUI              bool
 | 
				
			||||||
	EnableWatchCache             bool
 | 
						EnableWatchCache             bool
 | 
				
			||||||
	EtcdServersOverrides         []string
 | 
					 | 
				
			||||||
	StorageConfig                storagebackend.Config
 | 
					 | 
				
			||||||
	ExternalHost                 string
 | 
						ExternalHost                 string
 | 
				
			||||||
	InsecureBindAddress          net.IP
 | 
						InsecureBindAddress          net.IP
 | 
				
			||||||
	InsecurePort                 int
 | 
						InsecurePort                 int
 | 
				
			||||||
@@ -157,12 +156,7 @@ func NewServerRunOptions() *ServerRunOptions {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (o *ServerRunOptions) WithEtcdOptions() *ServerRunOptions {
 | 
					func (o *ServerRunOptions) WithEtcdOptions() *ServerRunOptions {
 | 
				
			||||||
	o.StorageConfig = storagebackend.Config{
 | 
						o.Etcd = NewDefaultEtcdOptions()
 | 
				
			||||||
		Prefix: DefaultEtcdPathPrefix,
 | 
					 | 
				
			||||||
		// Default cache size to 0 - if unset, its size will be set based on target
 | 
					 | 
				
			||||||
		// memory usage.
 | 
					 | 
				
			||||||
		DeserializationCacheSize: 0,
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return o
 | 
						return o
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -472,12 +466,6 @@ func (s *ServerRunOptions) AddUniversalFlags(fs *pflag.FlagSet) {
 | 
				
			|||||||
	fs.Var(&s.ServiceNodePortRange, "service-node-ports", "DEPRECATED: see --service-node-port-range instead")
 | 
						fs.Var(&s.ServiceNodePortRange, "service-node-ports", "DEPRECATED: see --service-node-port-range instead")
 | 
				
			||||||
	fs.MarkDeprecated("service-node-ports", "see --service-node-port-range instead")
 | 
						fs.MarkDeprecated("service-node-ports", "see --service-node-port-range instead")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fs.StringVar(&s.StorageConfig.Type, "storage-backend", s.StorageConfig.Type,
 | 
					 | 
				
			||||||
		"The storage backend for persistence. Options: 'etcd2' (default), 'etcd3'.")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fs.IntVar(&s.StorageConfig.DeserializationCacheSize, "deserialization-cache-size", s.StorageConfig.DeserializationCacheSize,
 | 
					 | 
				
			||||||
		"Number of deserialized json objects to cache in memory.")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	deprecatedStorageVersion := ""
 | 
						deprecatedStorageVersion := ""
 | 
				
			||||||
	fs.StringVar(&deprecatedStorageVersion, "storage-version", deprecatedStorageVersion,
 | 
						fs.StringVar(&deprecatedStorageVersion, "storage-version", deprecatedStorageVersion,
 | 
				
			||||||
		"DEPRECATED: the version to store the legacy v1 resources with. Defaults to server preferred.")
 | 
							"DEPRECATED: the version to store the legacy v1 resources with. Defaults to server preferred.")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,10 +12,7 @@ load(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
go_library(
 | 
					go_library(
 | 
				
			||||||
    name = "go_default_library",
 | 
					    name = "go_default_library",
 | 
				
			||||||
    srcs = [
 | 
					    srcs = ["universal_validation.go"],
 | 
				
			||||||
        "etcd_validation.go",
 | 
					 | 
				
			||||||
        "universal_validation.go",
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    tags = ["automanaged"],
 | 
					    tags = ["automanaged"],
 | 
				
			||||||
    deps = [
 | 
					    deps = [
 | 
				
			||||||
        "//pkg/genericapiserver/options:go_default_library",
 | 
					        "//pkg/genericapiserver/options:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,28 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
Copyright 2014 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 validation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"github.com/golang/glog"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver/options"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func VerifyEtcdServersList(options *options.ServerRunOptions) {
 | 
					 | 
				
			||||||
	if len(options.StorageConfig.ServerList) == 0 {
 | 
					 | 
				
			||||||
		glog.Fatalf("--etcd-servers must be specified")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -41,7 +41,7 @@ func NewAPIServer() *APIServer {
 | 
				
			|||||||
// Start starts the apiserver, returns when apiserver is ready.
 | 
					// Start starts the apiserver, returns when apiserver is ready.
 | 
				
			||||||
func (a *APIServer) Start() error {
 | 
					func (a *APIServer) Start() error {
 | 
				
			||||||
	config := options.NewServerRunOptions()
 | 
						config := options.NewServerRunOptions()
 | 
				
			||||||
	config.GenericServerRunOptions.StorageConfig.ServerList = []string{getEtcdClientURL()}
 | 
						config.GenericServerRunOptions.Etcd.StorageConfig.ServerList = []string{getEtcdClientURL()}
 | 
				
			||||||
	_, ipnet, err := net.ParseCIDR(clusterIPRange)
 | 
						_, ipnet, err := net.ParseCIDR(clusterIPRange)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user