// NewServerRunOptions creates a new ServerRunOptions object with default parameters func NewServerRunOptions() *ServerRunOptions { s := ServerRunOptions{ GenericServerRunOptions: genericoptions.NewServerRunOptions(), Etcd: genericoptions.NewEtcdOptions(), SecureServing: genericoptions.NewSecureServingOptions(), InsecureServing: genericoptions.NewInsecureServingOptions(), Authentication: genericoptions.NewBuiltInAuthenticationOptions().WithAll(), Authorization: genericoptions.NewBuiltInAuthorizationOptions(), EventTTL: 1 * time.Hour, MasterCount: 1, KubeletConfig: kubeletclient.KubeletClientConfig{ Port: ports.KubeletPort, PreferredAddressTypes: []string{ string(api.NodeHostName), string(api.NodeInternalIP), string(api.NodeExternalIP), string(api.NodeLegacyHostIP), }, EnableHttps: true, HTTPTimeout: time.Duration(5) * time.Second, }, ServiceNodePortRange: DefaultServiceNodePortRange, } return &s }
// NewServerRunOptions creates a new ServerRunOptions object with default values. func NewServerRunOptions() *ServerRunOptions { s := ServerRunOptions{ GenericServerRunOptions: genericoptions.NewServerRunOptions().WithEtcdOptions(), EventTTL: 1 * time.Hour, } return &s }
// NewAPIServer creates a new APIServer object with default parameters func NewAPIServer() *APIServer { s := APIServer{ ServerRunOptions: genericoptions.NewServerRunOptions(), EventTTL: 1 * time.Hour, KubeletConfig: kubeletclient.KubeletClientConfig{ Port: ports.KubeletPort, EnableHttps: true, HTTPTimeout: time.Duration(5) * time.Second, }, } return &s }
// NewAPIServerCommand creates a *cobra.Command object with default parameters func NewAPIServerCommand() *cobra.Command { s := genericoptions.NewServerRunOptions() s.AddUniversalFlags(pflag.CommandLine) cmd := &cobra.Command{ Use: "heapster-apiserver", Long: `heapster apiserver`, Run: func(cmd *cobra.Command, args []string) { }, } return cmd }
// NewAPIServer creates a new APIServer object with default parameters func NewAPIServer() *APIServer { s := APIServer{ ServerRunOptions: genericoptions.NewServerRunOptions().WithEtcdOptions(), EventTTL: 1 * time.Hour, KubeletConfig: kubeletclient.KubeletClientConfig{ Port: ports.KubeletPort, EnableHttps: true, HTTPTimeout: time.Duration(5) * time.Second, }, WebhookTokenAuthnCacheTTL: 2 * time.Minute, } return &s }
// NewServerRunOptions creates a new ServerRunOptions object with default values. func NewServerRunOptions() *ServerRunOptions { s := ServerRunOptions{ GenericServerRunOptions: genericoptions.NewServerRunOptions(), Etcd: genericoptions.NewEtcdOptions(), SecureServing: genericoptions.NewSecureServingOptions(), InsecureServing: genericoptions.NewInsecureServingOptions(), Authentication: genericoptions.NewBuiltInAuthenticationOptions().WithAll(), Authorization: genericoptions.NewBuiltInAuthorizationOptions(), EventTTL: 1 * time.Hour, } return &s }
// NewFederationAPIServer creates a new hyperkube Server object that includes the // description and flags. func NewFederationAPIServer() *Server { s := genericoptions.NewServerRunOptions() hks := Server{ SimpleUsage: "federation-apiserver", Long: "The API entrypoint for the federation control plane", Run: func(_ *Server, args []string) error { return app.Run(s) }, } s.AddFlags(hks.Flags()) return &hks }
func NewServerRunOptions() *ServerRunOptions { s := ServerRunOptions{ GenericServerRunOptions: genericoptions.NewServerRunOptions(), Etcd: genericoptions.NewEtcdOptions(), SecureServing: genericoptions.NewSecureServingOptions(), InsecureServing: genericoptions.NewInsecureServingOptions(), Authentication: genericoptions.NewBuiltInAuthenticationOptions().WithAll(), } s.InsecureServing.BindPort = InsecurePort s.SecureServing.ServingOptions.BindPort = SecurePort return &s }
// NewAPIServerCommand creates a *cobra.Command object with default parameters func NewAPIServerCommand() *cobra.Command { s := genericoptions.NewServerRunOptions() s.AddFlags(pflag.CommandLine) cmd := &cobra.Command{ Use: "federation-apiserver", Long: `The Kubernetes federation API server validates and configures data for the api objects which include pods, services, replicationcontrollers, and others. The API Server services REST operations and provides the frontend to the cluster's shared state through which all other components interact.`, Run: func(cmd *cobra.Command, args []string) { }, } return cmd }
func main() { rand.Seed(time.Now().UTC().UnixNano()) s := genericoptions.NewServerRunOptions() s.AddFlags(pflag.CommandLine) flag.InitFlags() util.InitLogs() defer util.FlushLogs() verflag.PrintAndExitIfRequested() if err := app.Run(s); err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) os.Exit(1) } }
// NewConfig returns a Config struct with the default values func NewConfig() *Config { longRunningRE := regexp.MustCompile(options.DefaultLongRunningRequestRE) config := &Config{ Serializer: api.Codecs, MasterCount: 1, ReadWritePort: 6443, ServiceReadWritePort: 443, CacheTimeout: 5 * time.Second, RequestContextMapper: api.NewRequestContextMapper(), BuildHandlerChainsFunc: DefaultBuildHandlerChain, LegacyAPIGroupPrefixes: sets.NewString(LegacyAPIPrefix), EnableIndex: true, EnableSwaggerSupport: true, EnableVersion: true, OpenAPIConfig: &common.Config{ ProtocolList: []string{"https"}, IgnorePrefixes: []string{"/swaggerapi"}, Info: &spec.Info{ InfoProps: spec.InfoProps{ Title: "Generic API Server", Version: "unversioned", }, }, DefaultResponse: &spec.Response{ ResponseProps: spec.ResponseProps{ Description: "Default Response.", }, }, }, LongRunningFunc: genericfilters.BasicLongRunningRequestCheck(longRunningRE, map[string]string{"watch": "true"}), } // this keeps the defaults in sync defaultOptions := options.NewServerRunOptions() // unset fields that can be overridden to avoid setting values so that we won't end up with lingering values. // TODO we probably want to run the defaults the other way. A default here drives it in the CLI flags defaultOptions.SecurePort = 0 defaultOptions.InsecurePort = 0 defaultOptions.AuditLogPath = "" return config.ApplyOptions(defaultOptions) }
// NewServerRunOptions creates a new ServerRunOptions object with default parameters func NewServerRunOptions() *ServerRunOptions { s := ServerRunOptions{ GenericServerRunOptions: genericoptions.NewServerRunOptions().WithEtcdOptions(), EventTTL: 1 * time.Hour, KubeletConfig: kubeletclient.KubeletClientConfig{ Port: ports.KubeletPort, PreferredAddressTypes: []string{ string(api.NodeHostName), string(api.NodeInternalIP), string(api.NodeExternalIP), string(api.NodeLegacyHostIP), }, EnableHttps: true, HTTPTimeout: time.Duration(5) * time.Second, }, WebhookTokenAuthnCacheTTL: 2 * time.Minute, } return &s }
func TestRun(t *testing.T) { s := options.NewServerRunOptions() s.InsecurePort = insecurePort _, ipNet, _ := net.ParseCIDR("10.10.10.0/24") s.ServiceClusterIPRange = *ipNet s.StorageConfig.ServerList = []string{"http://localhost:4001"} go func() { if err := Run(s); err != nil { t.Fatalf("Error in bringing up the server: %v", err) } }() if err := waitForApiserverUp(); err != nil { t.Fatalf("%v", err) } testSwaggerSpec(t) testSupport(t) testAPIGroupList(t) testAPIGroup(t) testAPIResourceList(t) }
func TestLongRunningRequestRegexp(t *testing.T) { regexp := regexp.MustCompile(options.NewServerRunOptions().LongRunningRequestRE) dontMatch := []string{ "/api/v1/watch-namespace/", "/api/v1/namespace-proxy/", "/api/v1/namespace-watch", "/api/v1/namespace-proxy", "/api/v1/namespace-portforward/pods", "/api/v1/portforward/pods", ". anything", "/ that", } doMatch := []string{ "/api/v1/pods/watch", "/api/v1/watch/stuff", "/api/v1/default/service/proxy", "/api/v1/pods/proxy/path/to/thing", "/api/v1/namespaces/myns/pods/mypod/log", "/api/v1/namespaces/myns/pods/mypod/logs", "/api/v1/namespaces/myns/pods/mypod/portforward", "/api/v1/namespaces/myns/pods/mypod/exec", "/api/v1/namespaces/myns/pods/mypod/attach", "/api/v1/namespaces/myns/pods/mypod/log/", "/api/v1/namespaces/myns/pods/mypod/logs/", "/api/v1/namespaces/myns/pods/mypod/portforward/", "/api/v1/namespaces/myns/pods/mypod/exec/", "/api/v1/namespaces/myns/pods/mypod/attach/", "/api/v1/watch/namespaces/myns/pods", } for _, path := range dontMatch { if regexp.MatchString(path) { t.Errorf("path should not have match regexp but did: %s", path) } } for _, path := range doMatch { if !regexp.MatchString(path) { t.Errorf("path should have match regexp did not: %s", path) } } }
// NewConfig returns a Config struct with the default values func NewConfig() *Config { config := &Config{ Serializer: api.Codecs, ReadWritePort: 6443, RequestContextMapper: api.NewRequestContextMapper(), BuildHandlerChainsFunc: DefaultBuildHandlerChain, LegacyAPIGroupPrefixes: sets.NewString(DefaultLegacyAPIPrefix), HealthzChecks: []healthz.HealthzChecker{healthz.PingHealthz}, EnableIndex: true, EnableSwaggerSupport: true, OpenAPIConfig: &common.Config{ ProtocolList: []string{"https"}, IgnorePrefixes: []string{"/swaggerapi"}, Info: &spec.Info{ InfoProps: spec.InfoProps{ Title: "Generic API Server", Version: "unversioned", }, }, DefaultResponse: &spec.Response{ ResponseProps: spec.ResponseProps{ Description: "Default Response.", }, }, GetOperationIDAndTags: apiserveropenapi.GetOperationIDAndTags, }, // Default to treating watch as a long-running operation // Generic API servers have no inherent long-running subresources LongRunningFunc: genericfilters.BasicLongRunningRequestCheck(sets.NewString("watch"), sets.NewString()), } // this keeps the defaults in sync defaultOptions := options.NewServerRunOptions() // unset fields that can be overridden to avoid setting values so that we won't end up with lingering values. // TODO we probably want to run the defaults the other way. A default here drives it in the CLI flags defaultOptions.AuditLogPath = "" return config.ApplyOptions(defaultOptions) }
// NewConfig returns a Config struct with the default values func NewConfig() *Config { config := &Config{ Serializer: api.Codecs, ReadWritePort: 6443, RequestContextMapper: api.NewRequestContextMapper(), BuildHandlerChainsFunc: DefaultBuildHandlerChain, LegacyAPIGroupPrefixes: sets.NewString(DefaultLegacyAPIPrefix), HealthzChecks: []healthz.HealthzChecker{healthz.PingHealthz}, EnableIndex: true, // Default to treating watch as a long-running operation // Generic API servers have no inherent long-running subresources LongRunningFunc: genericfilters.BasicLongRunningRequestCheck(sets.NewString("watch"), sets.NewString()), } // this keeps the defaults in sync defaultOptions := options.NewServerRunOptions() // unset fields that can be overridden to avoid setting values so that we won't end up with lingering values. // TODO we probably want to run the defaults the other way. A default here drives it in the CLI flags defaultOptions.AuditLogPath = "" return config.ApplyOptions(defaultOptions) }
func NewServerRunOptions() *genericoptions.ServerRunOptions { serverOptions := genericoptions.NewServerRunOptions() serverOptions.InsecurePort = InsecurePort return serverOptions }
func NewHeapsterRunOptions() *HeapsterRunOptions { opt := genericoptions.NewServerRunOptions() return &HeapsterRunOptions{ ServerRunOptions: opt, } }