Merge pull request #70472 from stewart-yu/stewart-kube-controller-manager-optionToconfig

[*-controller-manager]get rid of copied fields in the options and using componentconfig fields
This commit is contained in:
Kubernetes Prow Robot 2019-01-16 01:39:11 -08:00 committed by GitHub
commit 2652e176e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 274 additions and 285 deletions

View File

@ -55,6 +55,7 @@ go_test(
embed = [":go_default_library"], embed = [":go_default_library"],
deps = [ deps = [
"//cmd/controller-manager/app/options:go_default_library", "//cmd/controller-manager/app/options:go_default_library",
"//pkg/controller/apis/config:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library",

View File

@ -82,10 +82,10 @@ func NewCloudControllerManagerOptions() (*CloudControllerManagerOptions, error)
} }
s := CloudControllerManagerOptions{ s := CloudControllerManagerOptions{
Generic: cmoptions.NewGenericControllerManagerConfigurationOptions(componentConfig.Generic), Generic: cmoptions.NewGenericControllerManagerConfigurationOptions(&componentConfig.Generic),
KubeCloudShared: cmoptions.NewKubeCloudSharedOptions(componentConfig.KubeCloudShared), KubeCloudShared: cmoptions.NewKubeCloudSharedOptions(&componentConfig.KubeCloudShared),
ServiceController: &cmoptions.ServiceControllerOptions{ ServiceController: &cmoptions.ServiceControllerOptions{
ConcurrentServiceSyncs: componentConfig.ServiceController.ConcurrentServiceSyncs, ServiceControllerConfiguration: &componentConfig.ServiceController,
}, },
SecureServing: apiserveroptions.NewSecureServingOptions().WithLoopback(), SecureServing: apiserveroptions.NewSecureServingOptions().WithLoopback(),
InsecureServing: (&apiserveroptions.DeprecatedInsecureServingOptions{ InsecureServing: (&apiserveroptions.DeprecatedInsecureServingOptions{

View File

@ -29,6 +29,7 @@ import (
apiserveroptions "k8s.io/apiserver/pkg/server/options" apiserveroptions "k8s.io/apiserver/pkg/server/options"
componentbaseconfig "k8s.io/component-base/config" componentbaseconfig "k8s.io/component-base/config"
cmoptions "k8s.io/kubernetes/cmd/controller-manager/app/options" cmoptions "k8s.io/kubernetes/cmd/controller-manager/app/options"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
func TestDefaultFlags(t *testing.T) { func TestDefaultFlags(t *testing.T) {
@ -36,42 +37,52 @@ func TestDefaultFlags(t *testing.T) {
expected := &CloudControllerManagerOptions{ expected := &CloudControllerManagerOptions{
Generic: &cmoptions.GenericControllerManagerConfigurationOptions{ Generic: &cmoptions.GenericControllerManagerConfigurationOptions{
Port: DefaultInsecureCloudControllerManagerPort, // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config GenericControllerManagerConfiguration: &kubectrlmgrconfig.GenericControllerManagerConfiguration{
Address: "0.0.0.0", // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config Port: DefaultInsecureCloudControllerManagerPort, // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config
MinResyncPeriod: metav1.Duration{Duration: 12 * time.Hour}, Address: "0.0.0.0", // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config
ClientConnection: componentbaseconfig.ClientConnectionConfiguration{ MinResyncPeriod: metav1.Duration{Duration: 12 * time.Hour},
ContentType: "application/vnd.kubernetes.protobuf", ClientConnection: componentbaseconfig.ClientConnectionConfiguration{
QPS: 20.0, ContentType: "application/vnd.kubernetes.protobuf",
Burst: 30, QPS: 20.0,
}, Burst: 30,
ControllerStartInterval: metav1.Duration{Duration: 0}, },
LeaderElection: componentbaseconfig.LeaderElectionConfiguration{ ControllerStartInterval: metav1.Duration{Duration: 0},
ResourceLock: "endpoints", LeaderElection: componentbaseconfig.LeaderElectionConfiguration{
LeaderElect: true, ResourceLock: "endpoints",
LeaseDuration: metav1.Duration{Duration: 15 * time.Second}, LeaderElect: true,
RenewDeadline: metav1.Duration{Duration: 10 * time.Second}, LeaseDuration: metav1.Duration{Duration: 15 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second}, RenewDeadline: metav1.Duration{Duration: 10 * time.Second},
RetryPeriod: metav1.Duration{Duration: 2 * time.Second},
},
Controllers: []string{"*"},
}, },
Debugging: &cmoptions.DebuggingOptions{ Debugging: &cmoptions.DebuggingOptions{
EnableContentionProfiling: false, DebuggingConfiguration: &componentbaseconfig.DebuggingConfiguration{
EnableContentionProfiling: false,
},
}, },
Controllers: []string{"*"},
}, },
KubeCloudShared: &cmoptions.KubeCloudSharedOptions{ KubeCloudShared: &cmoptions.KubeCloudSharedOptions{
RouteReconciliationPeriod: metav1.Duration{Duration: 10 * time.Second}, KubeCloudSharedConfiguration: &kubectrlmgrconfig.KubeCloudSharedConfiguration{
NodeMonitorPeriod: metav1.Duration{Duration: 5 * time.Second}, RouteReconciliationPeriod: metav1.Duration{Duration: 10 * time.Second},
ClusterName: "kubernetes", NodeMonitorPeriod: metav1.Duration{Duration: 5 * time.Second},
ClusterCIDR: "", ClusterName: "kubernetes",
AllocateNodeCIDRs: false, ClusterCIDR: "",
CIDRAllocatorType: "", AllocateNodeCIDRs: false,
ConfigureCloudRoutes: true, CIDRAllocatorType: "",
ConfigureCloudRoutes: true,
},
CloudProvider: &cmoptions.CloudProviderOptions{ CloudProvider: &cmoptions.CloudProviderOptions{
Name: "", CloudProviderConfiguration: &kubectrlmgrconfig.CloudProviderConfiguration{
CloudConfigFile: "", Name: "",
CloudConfigFile: "",
},
}, },
}, },
ServiceController: &cmoptions.ServiceControllerOptions{ ServiceController: &cmoptions.ServiceControllerOptions{
ConcurrentServiceSyncs: 1, ServiceControllerConfiguration: &kubectrlmgrconfig.ServiceControllerConfiguration{
ConcurrentServiceSyncs: 1,
},
}, },
SecureServing: (&apiserveroptions.SecureServingOptions{ SecureServing: (&apiserveroptions.SecureServingOptions{
BindPort: 10258, BindPort: 10258,
@ -155,42 +166,52 @@ func TestAddFlags(t *testing.T) {
expected := &CloudControllerManagerOptions{ expected := &CloudControllerManagerOptions{
Generic: &cmoptions.GenericControllerManagerConfigurationOptions{ Generic: &cmoptions.GenericControllerManagerConfigurationOptions{
Port: DefaultInsecureCloudControllerManagerPort, // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config GenericControllerManagerConfiguration: &kubectrlmgrconfig.GenericControllerManagerConfiguration{
Address: "0.0.0.0", // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config Port: DefaultInsecureCloudControllerManagerPort, // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config
MinResyncPeriod: metav1.Duration{Duration: 100 * time.Minute}, Address: "0.0.0.0", // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config
ClientConnection: componentbaseconfig.ClientConnectionConfiguration{ MinResyncPeriod: metav1.Duration{Duration: 100 * time.Minute},
ContentType: "application/vnd.kubernetes.protobuf", ClientConnection: componentbaseconfig.ClientConnectionConfiguration{
QPS: 50.0, ContentType: "application/vnd.kubernetes.protobuf",
Burst: 100, QPS: 50.0,
}, Burst: 100,
ControllerStartInterval: metav1.Duration{Duration: 2 * time.Minute}, },
LeaderElection: componentbaseconfig.LeaderElectionConfiguration{ ControllerStartInterval: metav1.Duration{Duration: 2 * time.Minute},
ResourceLock: "configmap", LeaderElection: componentbaseconfig.LeaderElectionConfiguration{
LeaderElect: false, ResourceLock: "configmap",
LeaseDuration: metav1.Duration{Duration: 30 * time.Second}, LeaderElect: false,
RenewDeadline: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 30 * time.Second},
RetryPeriod: metav1.Duration{Duration: 5 * time.Second}, RenewDeadline: metav1.Duration{Duration: 15 * time.Second},
RetryPeriod: metav1.Duration{Duration: 5 * time.Second},
},
Controllers: []string{"foo", "bar"},
}, },
Debugging: &cmoptions.DebuggingOptions{ Debugging: &cmoptions.DebuggingOptions{
EnableContentionProfiling: true, DebuggingConfiguration: &componentbaseconfig.DebuggingConfiguration{
EnableContentionProfiling: true,
},
}, },
Controllers: []string{"foo", "bar"},
}, },
KubeCloudShared: &cmoptions.KubeCloudSharedOptions{ KubeCloudShared: &cmoptions.KubeCloudSharedOptions{
CloudProvider: &cmoptions.CloudProviderOptions{ KubeCloudSharedConfiguration: &kubectrlmgrconfig.KubeCloudSharedConfiguration{
Name: "gce", RouteReconciliationPeriod: metav1.Duration{Duration: 30 * time.Second},
CloudConfigFile: "/cloud-config", NodeMonitorPeriod: metav1.Duration{Duration: 5 * time.Second},
ClusterName: "k8s",
ClusterCIDR: "1.2.3.4/24",
AllocateNodeCIDRs: true,
CIDRAllocatorType: "RangeAllocator",
ConfigureCloudRoutes: false,
},
CloudProvider: &cmoptions.CloudProviderOptions{
CloudProviderConfiguration: &kubectrlmgrconfig.CloudProviderConfiguration{
Name: "gce",
CloudConfigFile: "/cloud-config",
},
}, },
RouteReconciliationPeriod: metav1.Duration{Duration: 30 * time.Second},
NodeMonitorPeriod: metav1.Duration{Duration: 5 * time.Second},
ClusterName: "k8s",
ClusterCIDR: "1.2.3.4/24",
AllocateNodeCIDRs: true,
CIDRAllocatorType: "RangeAllocator",
ConfigureCloudRoutes: false,
}, },
ServiceController: &cmoptions.ServiceControllerOptions{ ServiceController: &cmoptions.ServiceControllerOptions{
ConcurrentServiceSyncs: 1, ServiceControllerConfiguration: &kubectrlmgrconfig.ServiceControllerConfiguration{
ConcurrentServiceSyncs: 1,
},
}, },
SecureServing: (&apiserveroptions.SecureServingOptions{ SecureServing: (&apiserveroptions.SecureServingOptions{
BindPort: 10001, BindPort: 10001,

View File

@ -16,7 +16,6 @@ go_library(
"//pkg/client/leaderelectionconfig:go_default_library", "//pkg/client/leaderelectionconfig:go_default_library",
"//pkg/cloudprovider/providers:go_default_library", "//pkg/cloudprovider/providers:go_default_library",
"//pkg/controller/apis/config:go_default_library", "//pkg/controller/apis/config:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/flag:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/globalflag:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/globalflag:go_default_library",

View File

@ -24,8 +24,7 @@ import (
// CloudProviderOptions holds the cloudprovider options. // CloudProviderOptions holds the cloudprovider options.
type CloudProviderOptions struct { type CloudProviderOptions struct {
CloudConfigFile string *kubectrlmgrconfig.CloudProviderConfiguration
Name string
} }
// Validate checks validation of cloudprovider options. // Validate checks validation of cloudprovider options.

View File

@ -24,8 +24,7 @@ import (
// DebuggingOptions holds the Debugging options. // DebuggingOptions holds the Debugging options.
type DebuggingOptions struct { type DebuggingOptions struct {
EnableProfiling bool *componentbaseconfig.DebuggingConfiguration
EnableContentionProfiling bool
} }
// AddFlags adds flags related to debugging for controller manager to the specified FlagSet. // AddFlags adds flags related to debugging for controller manager to the specified FlagSet.

View File

@ -20,7 +20,6 @@ import (
"fmt" "fmt"
"strings" "strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
apiserverflag "k8s.io/apiserver/pkg/util/flag" apiserverflag "k8s.io/apiserver/pkg/util/flag"
componentbaseconfig "k8s.io/component-base/config" componentbaseconfig "k8s.io/component-base/config"
@ -30,29 +29,19 @@ import (
// GenericControllerManagerConfigurationOptions holds the options which are generic. // GenericControllerManagerConfigurationOptions holds the options which are generic.
type GenericControllerManagerConfigurationOptions struct { type GenericControllerManagerConfigurationOptions struct {
Port int32 *kubectrlmgrconfig.GenericControllerManagerConfiguration
Address string Debugging *DebuggingOptions
MinResyncPeriod metav1.Duration
ClientConnection componentbaseconfig.ClientConnectionConfiguration
ControllerStartInterval metav1.Duration
LeaderElection componentbaseconfig.LeaderElectionConfiguration
Debugging *DebuggingOptions
Controllers []string
} }
// NewGenericControllerManagerConfigurationOptions returns generic configuration default values for both // NewGenericControllerManagerConfigurationOptions returns generic configuration default values for both
// the kube-controller-manager and the cloud-contoller-manager. Any common changes should // the kube-controller-manager and the cloud-contoller-manager. Any common changes should
// be made here. Any individual changes should be made in that controller. // be made here. Any individual changes should be made in that controller.
func NewGenericControllerManagerConfigurationOptions(cfg kubectrlmgrconfig.GenericControllerManagerConfiguration) *GenericControllerManagerConfigurationOptions { func NewGenericControllerManagerConfigurationOptions(cfg *kubectrlmgrconfig.GenericControllerManagerConfiguration) *GenericControllerManagerConfigurationOptions {
o := &GenericControllerManagerConfigurationOptions{ o := &GenericControllerManagerConfigurationOptions{
Port: cfg.Port, GenericControllerManagerConfiguration: cfg,
Address: cfg.Address, Debugging: &DebuggingOptions{
MinResyncPeriod: cfg.MinResyncPeriod, DebuggingConfiguration: &componentbaseconfig.DebuggingConfiguration{},
ClientConnection: cfg.ClientConnection, },
ControllerStartInterval: cfg.ControllerStartInterval,
LeaderElection: cfg.LeaderElection,
Debugging: &DebuggingOptions{},
Controllers: cfg.Controllers,
} }
return o return o

View File

@ -19,39 +19,25 @@ package options
import ( import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
// KubeCloudSharedOptions holds the options shared between kube-controller-manager // KubeCloudSharedOptions holds the options shared between kube-controller-manager
// and cloud-controller-manager. // and cloud-controller-manager.
type KubeCloudSharedOptions struct { type KubeCloudSharedOptions struct {
CloudProvider *CloudProviderOptions *kubectrlmgrconfig.KubeCloudSharedConfiguration
ExternalCloudVolumePlugin string CloudProvider *CloudProviderOptions
UseServiceAccountCredentials bool
AllowUntaggedCloud bool
RouteReconciliationPeriod metav1.Duration
NodeMonitorPeriod metav1.Duration
ClusterName string
ClusterCIDR string
AllocateNodeCIDRs bool
CIDRAllocatorType string
ConfigureCloudRoutes bool
NodeSyncPeriod metav1.Duration
} }
// NewKubeCloudSharedOptions returns common/default configuration values for both // NewKubeCloudSharedOptions returns common/default configuration values for both
// the kube-controller-manager and the cloud-contoller-manager. Any common changes should // the kube-controller-manager and the cloud-contoller-manager. Any common changes should
// be made here. Any individual changes should be made in that controller. // be made here. Any individual changes should be made in that controller.
func NewKubeCloudSharedOptions(cfg kubectrlmgrconfig.KubeCloudSharedConfiguration) *KubeCloudSharedOptions { func NewKubeCloudSharedOptions(cfg *kubectrlmgrconfig.KubeCloudSharedConfiguration) *KubeCloudSharedOptions {
o := &KubeCloudSharedOptions{ o := &KubeCloudSharedOptions{
CloudProvider: &CloudProviderOptions{}, KubeCloudSharedConfiguration: cfg,
ExternalCloudVolumePlugin: cfg.ExternalCloudVolumePlugin, CloudProvider: &CloudProviderOptions{
UseServiceAccountCredentials: cfg.UseServiceAccountCredentials, CloudProviderConfiguration: &kubectrlmgrconfig.CloudProviderConfiguration{},
RouteReconciliationPeriod: cfg.RouteReconciliationPeriod, },
NodeMonitorPeriod: cfg.NodeMonitorPeriod,
ClusterName: cfg.ClusterName,
ConfigureCloudRoutes: cfg.ConfigureCloudRoutes,
} }
return o return o
@ -92,6 +78,7 @@ func (o *KubeCloudSharedOptions) ApplyTo(cfg *kubectrlmgrconfig.KubeCloudSharedC
if err := o.CloudProvider.ApplyTo(&cfg.CloudProvider); err != nil { if err := o.CloudProvider.ApplyTo(&cfg.CloudProvider); err != nil {
return err return err
} }
cfg.ExternalCloudVolumePlugin = o.ExternalCloudVolumePlugin cfg.ExternalCloudVolumePlugin = o.ExternalCloudVolumePlugin
cfg.UseServiceAccountCredentials = o.UseServiceAccountCredentials cfg.UseServiceAccountCredentials = o.UseServiceAccountCredentials
cfg.AllowUntaggedCloud = o.AllowUntaggedCloud cfg.AllowUntaggedCloud = o.AllowUntaggedCloud

View File

@ -24,7 +24,7 @@ import (
// ServiceControllerOptions holds the ServiceController options. // ServiceControllerOptions holds the ServiceController options.
type ServiceControllerOptions struct { type ServiceControllerOptions struct {
ConcurrentServiceSyncs int32 *kubectrlmgrconfig.ServiceControllerConfiguration
} }
// AddFlags adds flags related to ServiceController for controller manager to the specified FlagSet. // AddFlags adds flags related to ServiceController for controller manager to the specified FlagSet.

View File

@ -40,7 +40,6 @@ go_library(
"//pkg/features:go_default_library", "//pkg/features:go_default_library",
"//pkg/master/ports:go_default_library", "//pkg/master/ports:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library", "//staging/src/k8s.io/apiserver/pkg/server/options:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library", "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",

View File

@ -19,14 +19,12 @@ package options
import ( import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
// AttachDetachControllerOptions holds the AttachDetachController options. // AttachDetachControllerOptions holds the AttachDetachController options.
type AttachDetachControllerOptions struct { type AttachDetachControllerOptions struct {
ReconcilerSyncLoopPeriod metav1.Duration *kubectrlmgrconfig.AttachDetachControllerConfiguration
DisableAttachDetachReconcilerSync bool
} }
// AddFlags adds flags related to AttachDetachController for controller manager to the specified FlagSet. // AddFlags adds flags related to AttachDetachController for controller manager to the specified FlagSet.

View File

@ -19,7 +19,6 @@ package options
import ( import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
@ -35,9 +34,7 @@ const (
// CSRSigningControllerOptions holds the CSRSigningController options. // CSRSigningControllerOptions holds the CSRSigningController options.
type CSRSigningControllerOptions struct { type CSRSigningControllerOptions struct {
ClusterSigningDuration metav1.Duration *kubectrlmgrconfig.CSRSigningControllerConfiguration
ClusterSigningKeyFile string
ClusterSigningCertFile string
} }
// AddFlags adds flags related to CSRSigningController for controller manager to the specified FlagSet. // AddFlags adds flags related to CSRSigningController for controller manager to the specified FlagSet.

View File

@ -24,7 +24,7 @@ import (
// DaemonSetControllerOptions holds the DaemonSetController options. // DaemonSetControllerOptions holds the DaemonSetController options.
type DaemonSetControllerOptions struct { type DaemonSetControllerOptions struct {
ConcurrentDaemonSetSyncs int32 *kubectrlmgrconfig.DaemonSetControllerConfiguration
} }
// AddFlags adds flags related to DaemonSetController for controller manager to the specified FlagSet. // AddFlags adds flags related to DaemonSetController for controller manager to the specified FlagSet.

View File

@ -19,14 +19,12 @@ package options
import ( import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
// DeploymentControllerOptions holds the DeploymentController options. // DeploymentControllerOptions holds the DeploymentController options.
type DeploymentControllerOptions struct { type DeploymentControllerOptions struct {
ConcurrentDeploymentSyncs int32 *kubectrlmgrconfig.DeploymentControllerConfiguration
DeploymentControllerSyncPeriod metav1.Duration
} }
// AddFlags adds flags related to DeploymentController for controller manager to the specified FlagSet. // AddFlags adds flags related to DeploymentController for controller manager to the specified FlagSet.

View File

@ -25,9 +25,7 @@ import (
// DeprecatedControllerOptions holds the DeprecatedController options, those option are deprecated. // DeprecatedControllerOptions holds the DeprecatedController options, those option are deprecated.
// TODO remove these fields once the deprecated flags are removed. // TODO remove these fields once the deprecated flags are removed.
type DeprecatedControllerOptions struct { type DeprecatedControllerOptions struct {
DeletingPodsQPS float32 *kubectrlmgrconfig.DeprecatedControllerConfiguration
DeletingPodsBurst int32
RegisterRetryCount int32
} }
// AddFlags adds flags related to DeprecatedController for controller manager to the specified FlagSet. // AddFlags adds flags related to DeprecatedController for controller manager to the specified FlagSet.

View File

@ -24,7 +24,7 @@ import (
// EndpointControllerOptions holds the EndPointController options. // EndpointControllerOptions holds the EndPointController options.
type EndpointControllerOptions struct { type EndpointControllerOptions struct {
ConcurrentEndpointSyncs int32 *kubectrlmgrconfig.EndpointControllerConfiguration
} }
// AddFlags adds flags related to EndPointController for controller manager to the specified FlagSet. // AddFlags adds flags related to EndPointController for controller manager to the specified FlagSet.

View File

@ -24,9 +24,7 @@ import (
// GarbageCollectorControllerOptions holds the GarbageCollectorController options. // GarbageCollectorControllerOptions holds the GarbageCollectorController options.
type GarbageCollectorControllerOptions struct { type GarbageCollectorControllerOptions struct {
ConcurrentGCSyncs int32 *kubectrlmgrconfig.GarbageCollectorControllerConfiguration
GCIgnoredResources []kubectrlmgrconfig.GroupResource
EnableGarbageCollector bool
} }
// AddFlags adds flags related to GarbageCollectorController for controller manager to the specified FlagSet. // AddFlags adds flags related to GarbageCollectorController for controller manager to the specified FlagSet.

View File

@ -19,20 +19,12 @@ package options
import ( import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
// HPAControllerOptions holds the HPAController options. // HPAControllerOptions holds the HPAController options.
type HPAControllerOptions struct { type HPAControllerOptions struct {
HorizontalPodAutoscalerUseRESTClients bool *kubectrlmgrconfig.HPAControllerConfiguration
HorizontalPodAutoscalerTolerance float64
HorizontalPodAutoscalerDownscaleStabilizationWindow metav1.Duration
HorizontalPodAutoscalerDownscaleForbiddenWindow metav1.Duration
HorizontalPodAutoscalerUpscaleForbiddenWindow metav1.Duration
HorizontalPodAutoscalerSyncPeriod metav1.Duration
HorizontalPodAutoscalerCPUInitializationPeriod metav1.Duration
HorizontalPodAutoscalerInitialReadinessDelay metav1.Duration
} }
// AddFlags adds flags related to HPAController for controller manager to the specified FlagSet. // AddFlags adds flags related to HPAController for controller manager to the specified FlagSet.

View File

@ -24,7 +24,7 @@ import (
// JobControllerOptions holds the JobController options. // JobControllerOptions holds the JobController options.
type JobControllerOptions struct { type JobControllerOptions struct {
ConcurrentJobSyncs int32 *kubectrlmgrconfig.JobControllerConfiguration
} }
// AddFlags adds flags related to JobController for controller manager to the specified FlagSet. // AddFlags adds flags related to JobController for controller manager to the specified FlagSet.

View File

@ -19,14 +19,12 @@ package options
import ( import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
// NamespaceControllerOptions holds the NamespaceController options. // NamespaceControllerOptions holds the NamespaceController options.
type NamespaceControllerOptions struct { type NamespaceControllerOptions struct {
NamespaceSyncPeriod metav1.Duration *kubectrlmgrconfig.NamespaceControllerConfiguration
ConcurrentNamespaceSyncs int32
} }
// AddFlags adds flags related to NamespaceController for controller manager to the specified FlagSet. // AddFlags adds flags related to NamespaceController for controller manager to the specified FlagSet.

View File

@ -24,8 +24,7 @@ import (
// NodeIPAMControllerOptions holds the NodeIpamController options. // NodeIPAMControllerOptions holds the NodeIpamController options.
type NodeIPAMControllerOptions struct { type NodeIPAMControllerOptions struct {
ServiceCIDR string *kubectrlmgrconfig.NodeIPAMControllerConfiguration
NodeCIDRMaskSize int32
} }
// AddFlags adds flags related to NodeIpamController for controller manager to the specified FlagSet. // AddFlags adds flags related to NodeIpamController for controller manager to the specified FlagSet.

View File

@ -19,20 +19,12 @@ package options
import ( import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
// NodeLifecycleControllerOptions holds the NodeLifecycleController options. // NodeLifecycleControllerOptions holds the NodeLifecycleController options.
type NodeLifecycleControllerOptions struct { type NodeLifecycleControllerOptions struct {
EnableTaintManager bool *kubectrlmgrconfig.NodeLifecycleControllerConfiguration
NodeEvictionRate float32
SecondaryNodeEvictionRate float32
NodeStartupGracePeriod metav1.Duration
NodeMonitorGracePeriod metav1.Duration
PodEvictionTimeout metav1.Duration
LargeClusterSizeThreshold int32
UnhealthyZoneThreshold float32
} }
// AddFlags adds flags related to NodeLifecycleController for controller manager to the specified FlagSet. // AddFlags adds flags related to NodeLifecycleController for controller manager to the specified FlagSet.

View File

@ -96,84 +96,67 @@ func NewKubeControllerManagerOptions() (*KubeControllerManagerOptions, error) {
} }
s := KubeControllerManagerOptions{ s := KubeControllerManagerOptions{
Generic: cmoptions.NewGenericControllerManagerConfigurationOptions(componentConfig.Generic), Generic: cmoptions.NewGenericControllerManagerConfigurationOptions(&componentConfig.Generic),
KubeCloudShared: cmoptions.NewKubeCloudSharedOptions(componentConfig.KubeCloudShared), KubeCloudShared: cmoptions.NewKubeCloudSharedOptions(&componentConfig.KubeCloudShared),
ServiceController: &cmoptions.ServiceControllerOptions{
ServiceControllerConfiguration: &componentConfig.ServiceController,
},
AttachDetachController: &AttachDetachControllerOptions{ AttachDetachController: &AttachDetachControllerOptions{
ReconcilerSyncLoopPeriod: componentConfig.AttachDetachController.ReconcilerSyncLoopPeriod, &componentConfig.AttachDetachController,
}, },
CSRSigningController: &CSRSigningControllerOptions{ CSRSigningController: &CSRSigningControllerOptions{
ClusterSigningCertFile: componentConfig.CSRSigningController.ClusterSigningCertFile, &componentConfig.CSRSigningController,
ClusterSigningKeyFile: componentConfig.CSRSigningController.ClusterSigningKeyFile,
ClusterSigningDuration: componentConfig.CSRSigningController.ClusterSigningDuration,
}, },
DaemonSetController: &DaemonSetControllerOptions{ DaemonSetController: &DaemonSetControllerOptions{
ConcurrentDaemonSetSyncs: componentConfig.DaemonSetController.ConcurrentDaemonSetSyncs, &componentConfig.DaemonSetController,
}, },
DeploymentController: &DeploymentControllerOptions{ DeploymentController: &DeploymentControllerOptions{
ConcurrentDeploymentSyncs: componentConfig.DeploymentController.ConcurrentDeploymentSyncs, &componentConfig.DeploymentController,
DeploymentControllerSyncPeriod: componentConfig.DeploymentController.DeploymentControllerSyncPeriod,
}, },
DeprecatedFlags: &DeprecatedControllerOptions{ DeprecatedFlags: &DeprecatedControllerOptions{
RegisterRetryCount: componentConfig.DeprecatedController.RegisterRetryCount, &componentConfig.DeprecatedController,
}, },
EndpointController: &EndpointControllerOptions{ EndpointController: &EndpointControllerOptions{
ConcurrentEndpointSyncs: componentConfig.EndpointController.ConcurrentEndpointSyncs, &componentConfig.EndpointController,
}, },
GarbageCollectorController: &GarbageCollectorControllerOptions{ GarbageCollectorController: &GarbageCollectorControllerOptions{
ConcurrentGCSyncs: componentConfig.GarbageCollectorController.ConcurrentGCSyncs, &componentConfig.GarbageCollectorController,
EnableGarbageCollector: componentConfig.GarbageCollectorController.EnableGarbageCollector,
}, },
HPAController: &HPAControllerOptions{ HPAController: &HPAControllerOptions{
HorizontalPodAutoscalerSyncPeriod: componentConfig.HPAController.HorizontalPodAutoscalerSyncPeriod, &componentConfig.HPAController,
HorizontalPodAutoscalerUpscaleForbiddenWindow: componentConfig.HPAController.HorizontalPodAutoscalerUpscaleForbiddenWindow,
HorizontalPodAutoscalerDownscaleForbiddenWindow: componentConfig.HPAController.HorizontalPodAutoscalerDownscaleForbiddenWindow,
HorizontalPodAutoscalerDownscaleStabilizationWindow: componentConfig.HPAController.HorizontalPodAutoscalerDownscaleStabilizationWindow,
HorizontalPodAutoscalerCPUInitializationPeriod: componentConfig.HPAController.HorizontalPodAutoscalerCPUInitializationPeriod,
HorizontalPodAutoscalerInitialReadinessDelay: componentConfig.HPAController.HorizontalPodAutoscalerInitialReadinessDelay,
HorizontalPodAutoscalerTolerance: componentConfig.HPAController.HorizontalPodAutoscalerTolerance,
HorizontalPodAutoscalerUseRESTClients: componentConfig.HPAController.HorizontalPodAutoscalerUseRESTClients,
}, },
JobController: &JobControllerOptions{ JobController: &JobControllerOptions{
ConcurrentJobSyncs: componentConfig.JobController.ConcurrentJobSyncs, &componentConfig.JobController,
}, },
NamespaceController: &NamespaceControllerOptions{ NamespaceController: &NamespaceControllerOptions{
NamespaceSyncPeriod: componentConfig.NamespaceController.NamespaceSyncPeriod, &componentConfig.NamespaceController,
ConcurrentNamespaceSyncs: componentConfig.NamespaceController.ConcurrentNamespaceSyncs,
}, },
NodeIPAMController: &NodeIPAMControllerOptions{ NodeIPAMController: &NodeIPAMControllerOptions{
NodeCIDRMaskSize: componentConfig.NodeIPAMController.NodeCIDRMaskSize, &componentConfig.NodeIPAMController,
}, },
NodeLifecycleController: &NodeLifecycleControllerOptions{ NodeLifecycleController: &NodeLifecycleControllerOptions{
EnableTaintManager: componentConfig.NodeLifecycleController.EnableTaintManager, &componentConfig.NodeLifecycleController,
NodeMonitorGracePeriod: componentConfig.NodeLifecycleController.NodeMonitorGracePeriod,
NodeStartupGracePeriod: componentConfig.NodeLifecycleController.NodeStartupGracePeriod,
PodEvictionTimeout: componentConfig.NodeLifecycleController.PodEvictionTimeout,
}, },
PersistentVolumeBinderController: &PersistentVolumeBinderControllerOptions{ PersistentVolumeBinderController: &PersistentVolumeBinderControllerOptions{
PVClaimBinderSyncPeriod: componentConfig.PersistentVolumeBinderController.PVClaimBinderSyncPeriod, &componentConfig.PersistentVolumeBinderController,
VolumeConfiguration: componentConfig.PersistentVolumeBinderController.VolumeConfiguration,
}, },
PodGCController: &PodGCControllerOptions{ PodGCController: &PodGCControllerOptions{
TerminatedPodGCThreshold: componentConfig.PodGCController.TerminatedPodGCThreshold, &componentConfig.PodGCController,
}, },
ReplicaSetController: &ReplicaSetControllerOptions{ ReplicaSetController: &ReplicaSetControllerOptions{
ConcurrentRSSyncs: componentConfig.ReplicaSetController.ConcurrentRSSyncs, &componentConfig.ReplicaSetController,
}, },
ReplicationController: &ReplicationControllerOptions{ ReplicationController: &ReplicationControllerOptions{
ConcurrentRCSyncs: componentConfig.ReplicationController.ConcurrentRCSyncs, &componentConfig.ReplicationController,
}, },
ResourceQuotaController: &ResourceQuotaControllerOptions{ ResourceQuotaController: &ResourceQuotaControllerOptions{
ResourceQuotaSyncPeriod: componentConfig.ResourceQuotaController.ResourceQuotaSyncPeriod, &componentConfig.ResourceQuotaController,
ConcurrentResourceQuotaSyncs: componentConfig.ResourceQuotaController.ConcurrentResourceQuotaSyncs,
}, },
SAController: &SAControllerOptions{ SAController: &SAControllerOptions{
ConcurrentSATokenSyncs: componentConfig.SAController.ConcurrentSATokenSyncs, &componentConfig.SAController,
},
ServiceController: &cmoptions.ServiceControllerOptions{
ConcurrentServiceSyncs: componentConfig.ServiceController.ConcurrentServiceSyncs,
}, },
TTLAfterFinishedController: &TTLAfterFinishedControllerOptions{ TTLAfterFinishedController: &TTLAfterFinishedControllerOptions{
ConcurrentTTLSyncs: componentConfig.TTLAfterFinishedController.ConcurrentTTLSyncs, &componentConfig.TTLAfterFinishedController,
}, },
SecureServing: apiserveroptions.NewSecureServingOptions().WithLoopback(), SecureServing: apiserveroptions.NewSecureServingOptions().WithLoopback(),
InsecureServing: (&apiserveroptions.DeprecatedInsecureServingOptions{ InsecureServing: (&apiserveroptions.DeprecatedInsecureServingOptions{

View File

@ -124,139 +124,187 @@ func TestAddFlags(t *testing.T) {
expected := &KubeControllerManagerOptions{ expected := &KubeControllerManagerOptions{
Generic: &cmoptions.GenericControllerManagerConfigurationOptions{ Generic: &cmoptions.GenericControllerManagerConfigurationOptions{
Port: 10252, // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config GenericControllerManagerConfiguration: &kubectrlmgrconfig.GenericControllerManagerConfiguration{
Address: "0.0.0.0", // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config Port: 10252, // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config
MinResyncPeriod: metav1.Duration{Duration: 8 * time.Hour}, Address: "0.0.0.0", // Note: InsecureServingOptions.ApplyTo will write the flag value back into the component config
ClientConnection: componentbaseconfig.ClientConnectionConfiguration{ MinResyncPeriod: metav1.Duration{Duration: 8 * time.Hour},
ContentType: "application/json", ClientConnection: componentbaseconfig.ClientConnectionConfiguration{
QPS: 50.0, ContentType: "application/json",
Burst: 100, QPS: 50.0,
}, Burst: 100,
ControllerStartInterval: metav1.Duration{Duration: 2 * time.Minute}, },
LeaderElection: componentbaseconfig.LeaderElectionConfiguration{ ControllerStartInterval: metav1.Duration{Duration: 2 * time.Minute},
ResourceLock: "configmap", LeaderElection: componentbaseconfig.LeaderElectionConfiguration{
LeaderElect: false, ResourceLock: "configmap",
LeaseDuration: metav1.Duration{Duration: 30 * time.Second}, LeaderElect: false,
RenewDeadline: metav1.Duration{Duration: 15 * time.Second}, LeaseDuration: metav1.Duration{Duration: 30 * time.Second},
RetryPeriod: metav1.Duration{Duration: 5 * time.Second}, RenewDeadline: metav1.Duration{Duration: 15 * time.Second},
RetryPeriod: metav1.Duration{Duration: 5 * time.Second},
},
Controllers: []string{"foo", "bar"},
}, },
Debugging: &cmoptions.DebuggingOptions{ Debugging: &cmoptions.DebuggingOptions{
EnableProfiling: false, DebuggingConfiguration: &componentbaseconfig.DebuggingConfiguration{
EnableContentionProfiling: true, EnableProfiling: false,
EnableContentionProfiling: true,
},
}, },
Controllers: []string{"foo", "bar"},
}, },
KubeCloudShared: &cmoptions.KubeCloudSharedOptions{ KubeCloudShared: &cmoptions.KubeCloudSharedOptions{
UseServiceAccountCredentials: true, KubeCloudSharedConfiguration: &kubectrlmgrconfig.KubeCloudSharedConfiguration{
RouteReconciliationPeriod: metav1.Duration{Duration: 30 * time.Second}, UseServiceAccountCredentials: true,
NodeMonitorPeriod: metav1.Duration{Duration: 10 * time.Second}, RouteReconciliationPeriod: metav1.Duration{Duration: 30 * time.Second},
ClusterName: "k8s", NodeMonitorPeriod: metav1.Duration{Duration: 10 * time.Second},
ClusterCIDR: "1.2.3.4/24", ClusterName: "k8s",
AllocateNodeCIDRs: true, ClusterCIDR: "1.2.3.4/24",
CIDRAllocatorType: "CloudAllocator", AllocateNodeCIDRs: true,
ConfigureCloudRoutes: false, CIDRAllocatorType: "CloudAllocator",
ConfigureCloudRoutes: false,
},
CloudProvider: &cmoptions.CloudProviderOptions{ CloudProvider: &cmoptions.CloudProviderOptions{
Name: "gce", CloudProviderConfiguration: &kubectrlmgrconfig.CloudProviderConfiguration{
CloudConfigFile: "/cloud-config", Name: "gce",
CloudConfigFile: "/cloud-config",
},
},
},
ServiceController: &cmoptions.ServiceControllerOptions{
ServiceControllerConfiguration: &kubectrlmgrconfig.ServiceControllerConfiguration{
ConcurrentServiceSyncs: 2,
}, },
}, },
AttachDetachController: &AttachDetachControllerOptions{ AttachDetachController: &AttachDetachControllerOptions{
ReconcilerSyncLoopPeriod: metav1.Duration{Duration: 30 * time.Second}, &kubectrlmgrconfig.AttachDetachControllerConfiguration{
DisableAttachDetachReconcilerSync: true, ReconcilerSyncLoopPeriod: metav1.Duration{Duration: 30 * time.Second},
DisableAttachDetachReconcilerSync: true,
},
}, },
CSRSigningController: &CSRSigningControllerOptions{ CSRSigningController: &CSRSigningControllerOptions{
ClusterSigningCertFile: "/cluster-signing-cert", &kubectrlmgrconfig.CSRSigningControllerConfiguration{
ClusterSigningKeyFile: "/cluster-signing-key", ClusterSigningCertFile: "/cluster-signing-cert",
ClusterSigningDuration: metav1.Duration{Duration: 10 * time.Hour}, ClusterSigningKeyFile: "/cluster-signing-key",
ClusterSigningDuration: metav1.Duration{Duration: 10 * time.Hour},
},
}, },
DaemonSetController: &DaemonSetControllerOptions{ DaemonSetController: &DaemonSetControllerOptions{
ConcurrentDaemonSetSyncs: 2, &kubectrlmgrconfig.DaemonSetControllerConfiguration{
ConcurrentDaemonSetSyncs: 2,
},
}, },
DeploymentController: &DeploymentControllerOptions{ DeploymentController: &DeploymentControllerOptions{
ConcurrentDeploymentSyncs: 10, &kubectrlmgrconfig.DeploymentControllerConfiguration{
DeploymentControllerSyncPeriod: metav1.Duration{Duration: 45 * time.Second}, ConcurrentDeploymentSyncs: 10,
DeploymentControllerSyncPeriod: metav1.Duration{Duration: 45 * time.Second},
},
}, },
DeprecatedFlags: &DeprecatedControllerOptions{ DeprecatedFlags: &DeprecatedControllerOptions{
DeletingPodsQPS: 0.1, &kubectrlmgrconfig.DeprecatedControllerConfiguration{
RegisterRetryCount: 10, DeletingPodsQPS: 0.1,
RegisterRetryCount: 10,
},
}, },
EndpointController: &EndpointControllerOptions{ EndpointController: &EndpointControllerOptions{
ConcurrentEndpointSyncs: 10, &kubectrlmgrconfig.EndpointControllerConfiguration{
ConcurrentEndpointSyncs: 10,
},
}, },
GarbageCollectorController: &GarbageCollectorControllerOptions{ GarbageCollectorController: &GarbageCollectorControllerOptions{
ConcurrentGCSyncs: 30, &kubectrlmgrconfig.GarbageCollectorControllerConfiguration{
GCIgnoredResources: []kubectrlmgrconfig.GroupResource{ ConcurrentGCSyncs: 30,
{Group: "", Resource: "events"}, GCIgnoredResources: []kubectrlmgrconfig.GroupResource{
{Group: "", Resource: "events"},
},
EnableGarbageCollector: false,
}, },
EnableGarbageCollector: false,
}, },
HPAController: &HPAControllerOptions{ HPAController: &HPAControllerOptions{
HorizontalPodAutoscalerSyncPeriod: metav1.Duration{Duration: 45 * time.Second}, &kubectrlmgrconfig.HPAControllerConfiguration{
HorizontalPodAutoscalerUpscaleForbiddenWindow: metav1.Duration{Duration: 1 * time.Minute}, HorizontalPodAutoscalerSyncPeriod: metav1.Duration{Duration: 45 * time.Second},
HorizontalPodAutoscalerDownscaleForbiddenWindow: metav1.Duration{Duration: 2 * time.Minute}, HorizontalPodAutoscalerUpscaleForbiddenWindow: metav1.Duration{Duration: 1 * time.Minute},
HorizontalPodAutoscalerDownscaleStabilizationWindow: metav1.Duration{Duration: 3 * time.Minute}, HorizontalPodAutoscalerDownscaleForbiddenWindow: metav1.Duration{Duration: 2 * time.Minute},
HorizontalPodAutoscalerCPUInitializationPeriod: metav1.Duration{Duration: 90 * time.Second}, HorizontalPodAutoscalerDownscaleStabilizationWindow: metav1.Duration{Duration: 3 * time.Minute},
HorizontalPodAutoscalerInitialReadinessDelay: metav1.Duration{Duration: 50 * time.Second}, HorizontalPodAutoscalerCPUInitializationPeriod: metav1.Duration{Duration: 90 * time.Second},
HorizontalPodAutoscalerTolerance: 0.1, HorizontalPodAutoscalerInitialReadinessDelay: metav1.Duration{Duration: 50 * time.Second},
HorizontalPodAutoscalerUseRESTClients: true, HorizontalPodAutoscalerTolerance: 0.1,
HorizontalPodAutoscalerUseRESTClients: true,
},
}, },
JobController: &JobControllerOptions{ JobController: &JobControllerOptions{
ConcurrentJobSyncs: 5, &kubectrlmgrconfig.JobControllerConfiguration{
ConcurrentJobSyncs: 5,
},
}, },
NamespaceController: &NamespaceControllerOptions{ NamespaceController: &NamespaceControllerOptions{
NamespaceSyncPeriod: metav1.Duration{Duration: 10 * time.Minute}, &kubectrlmgrconfig.NamespaceControllerConfiguration{
ConcurrentNamespaceSyncs: 20, NamespaceSyncPeriod: metav1.Duration{Duration: 10 * time.Minute},
ConcurrentNamespaceSyncs: 20,
},
}, },
NodeIPAMController: &NodeIPAMControllerOptions{ NodeIPAMController: &NodeIPAMControllerOptions{
NodeCIDRMaskSize: 48, &kubectrlmgrconfig.NodeIPAMControllerConfiguration{
NodeCIDRMaskSize: 48,
},
}, },
NodeLifecycleController: &NodeLifecycleControllerOptions{ NodeLifecycleController: &NodeLifecycleControllerOptions{
EnableTaintManager: false, &kubectrlmgrconfig.NodeLifecycleControllerConfiguration{
NodeEvictionRate: 0.2, EnableTaintManager: false,
SecondaryNodeEvictionRate: 0.05, NodeEvictionRate: 0.2,
NodeMonitorGracePeriod: metav1.Duration{Duration: 30 * time.Second}, SecondaryNodeEvictionRate: 0.05,
NodeStartupGracePeriod: metav1.Duration{Duration: 30 * time.Second}, NodeMonitorGracePeriod: metav1.Duration{Duration: 30 * time.Second},
PodEvictionTimeout: metav1.Duration{Duration: 2 * time.Minute}, NodeStartupGracePeriod: metav1.Duration{Duration: 30 * time.Second},
LargeClusterSizeThreshold: 100, PodEvictionTimeout: metav1.Duration{Duration: 2 * time.Minute},
UnhealthyZoneThreshold: 0.6, LargeClusterSizeThreshold: 100,
UnhealthyZoneThreshold: 0.6,
},
}, },
PersistentVolumeBinderController: &PersistentVolumeBinderControllerOptions{ PersistentVolumeBinderController: &PersistentVolumeBinderControllerOptions{
PVClaimBinderSyncPeriod: metav1.Duration{Duration: 30 * time.Second}, &kubectrlmgrconfig.PersistentVolumeBinderControllerConfiguration{
VolumeConfiguration: kubectrlmgrconfig.VolumeConfiguration{ PVClaimBinderSyncPeriod: metav1.Duration{Duration: 30 * time.Second},
EnableDynamicProvisioning: false, VolumeConfiguration: kubectrlmgrconfig.VolumeConfiguration{
EnableHostPathProvisioning: true, EnableDynamicProvisioning: false,
FlexVolumePluginDir: "/flex-volume-plugin", EnableHostPathProvisioning: true,
PersistentVolumeRecyclerConfiguration: kubectrlmgrconfig.PersistentVolumeRecyclerConfiguration{ FlexVolumePluginDir: "/flex-volume-plugin",
MaximumRetry: 3, PersistentVolumeRecyclerConfiguration: kubectrlmgrconfig.PersistentVolumeRecyclerConfiguration{
MinimumTimeoutNFS: 200, MaximumRetry: 3,
IncrementTimeoutNFS: 45, MinimumTimeoutNFS: 200,
MinimumTimeoutHostPath: 45, IncrementTimeoutNFS: 45,
IncrementTimeoutHostPath: 45, MinimumTimeoutHostPath: 45,
IncrementTimeoutHostPath: 45,
},
}, },
}, },
}, },
PodGCController: &PodGCControllerOptions{ PodGCController: &PodGCControllerOptions{
TerminatedPodGCThreshold: 12000, &kubectrlmgrconfig.PodGCControllerConfiguration{
TerminatedPodGCThreshold: 12000,
},
}, },
ReplicaSetController: &ReplicaSetControllerOptions{ ReplicaSetController: &ReplicaSetControllerOptions{
ConcurrentRSSyncs: 10, &kubectrlmgrconfig.ReplicaSetControllerConfiguration{
ConcurrentRSSyncs: 10,
},
}, },
ReplicationController: &ReplicationControllerOptions{ ReplicationController: &ReplicationControllerOptions{
ConcurrentRCSyncs: 10, &kubectrlmgrconfig.ReplicationControllerConfiguration{
ConcurrentRCSyncs: 10,
},
}, },
ResourceQuotaController: &ResourceQuotaControllerOptions{ ResourceQuotaController: &ResourceQuotaControllerOptions{
ResourceQuotaSyncPeriod: metav1.Duration{Duration: 10 * time.Minute}, &kubectrlmgrconfig.ResourceQuotaControllerConfiguration{
ConcurrentResourceQuotaSyncs: 10, ResourceQuotaSyncPeriod: metav1.Duration{Duration: 10 * time.Minute},
ConcurrentResourceQuotaSyncs: 10,
},
}, },
SAController: &SAControllerOptions{ SAController: &SAControllerOptions{
ServiceAccountKeyFile: "/service-account-private-key", &kubectrlmgrconfig.SAControllerConfiguration{
ConcurrentSATokenSyncs: 10, ServiceAccountKeyFile: "/service-account-private-key",
}, ConcurrentSATokenSyncs: 10,
ServiceController: &cmoptions.ServiceControllerOptions{ },
ConcurrentServiceSyncs: 2,
}, },
TTLAfterFinishedController: &TTLAfterFinishedControllerOptions{ TTLAfterFinishedController: &TTLAfterFinishedControllerOptions{
ConcurrentTTLSyncs: 8, &kubectrlmgrconfig.TTLAfterFinishedControllerConfiguration{
ConcurrentTTLSyncs: 8,
},
}, },
SecureServing: (&apiserveroptions.SecureServingOptions{ SecureServing: (&apiserveroptions.SecureServingOptions{
BindPort: 10001, BindPort: 10001,

View File

@ -19,14 +19,12 @@ package options
import ( import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
// PersistentVolumeBinderControllerOptions holds the PersistentVolumeBinderController options. // PersistentVolumeBinderControllerOptions holds the PersistentVolumeBinderController options.
type PersistentVolumeBinderControllerOptions struct { type PersistentVolumeBinderControllerOptions struct {
PVClaimBinderSyncPeriod metav1.Duration *kubectrlmgrconfig.PersistentVolumeBinderControllerConfiguration
VolumeConfiguration kubectrlmgrconfig.VolumeConfiguration
} }
// AddFlags adds flags related to PersistentVolumeBinderController for controller manager to the specified FlagSet. // AddFlags adds flags related to PersistentVolumeBinderController for controller manager to the specified FlagSet.

View File

@ -24,7 +24,7 @@ import (
// PodGCControllerOptions holds the PodGCController options. // PodGCControllerOptions holds the PodGCController options.
type PodGCControllerOptions struct { type PodGCControllerOptions struct {
TerminatedPodGCThreshold int32 *kubectrlmgrconfig.PodGCControllerConfiguration
} }
// AddFlags adds flags related to PodGCController for controller manager to the specified FlagSet. // AddFlags adds flags related to PodGCController for controller manager to the specified FlagSet.

View File

@ -24,7 +24,7 @@ import (
// ReplicaSetControllerOptions holds the ReplicaSetController options. // ReplicaSetControllerOptions holds the ReplicaSetController options.
type ReplicaSetControllerOptions struct { type ReplicaSetControllerOptions struct {
ConcurrentRSSyncs int32 *kubectrlmgrconfig.ReplicaSetControllerConfiguration
} }
// AddFlags adds flags related to ReplicaSetController for controller manager to the specified FlagSet. // AddFlags adds flags related to ReplicaSetController for controller manager to the specified FlagSet.

View File

@ -24,7 +24,7 @@ import (
// ReplicationControllerOptions holds the ReplicationController options. // ReplicationControllerOptions holds the ReplicationController options.
type ReplicationControllerOptions struct { type ReplicationControllerOptions struct {
ConcurrentRCSyncs int32 *kubectrlmgrconfig.ReplicationControllerConfiguration
} }
// AddFlags adds flags related to ReplicationController for controller manager to the specified FlagSet. // AddFlags adds flags related to ReplicationController for controller manager to the specified FlagSet.

View File

@ -19,14 +19,12 @@ package options
import ( import (
"github.com/spf13/pflag" "github.com/spf13/pflag"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config"
) )
// ResourceQuotaControllerOptions holds the ResourceQuotaController options. // ResourceQuotaControllerOptions holds the ResourceQuotaController options.
type ResourceQuotaControllerOptions struct { type ResourceQuotaControllerOptions struct {
ResourceQuotaSyncPeriod metav1.Duration *kubectrlmgrconfig.ResourceQuotaControllerConfiguration
ConcurrentResourceQuotaSyncs int32
} }
// AddFlags adds flags related to ResourceQuotaController for controller manager to the specified FlagSet. // AddFlags adds flags related to ResourceQuotaController for controller manager to the specified FlagSet.

View File

@ -24,9 +24,7 @@ import (
// SAControllerOptions holds the ServiceAccountController options. // SAControllerOptions holds the ServiceAccountController options.
type SAControllerOptions struct { type SAControllerOptions struct {
ServiceAccountKeyFile string *kubectrlmgrconfig.SAControllerConfiguration
ConcurrentSATokenSyncs int32
RootCAFile string
} }
// AddFlags adds flags related to ServiceAccountController for controller manager to the specified FlagSet // AddFlags adds flags related to ServiceAccountController for controller manager to the specified FlagSet

View File

@ -24,7 +24,7 @@ import (
// TTLAfterFinishedControllerOptions holds the TTLAfterFinishedController options. // TTLAfterFinishedControllerOptions holds the TTLAfterFinishedController options.
type TTLAfterFinishedControllerOptions struct { type TTLAfterFinishedControllerOptions struct {
ConcurrentTTLSyncs int32 *kubectrlmgrconfig.TTLAfterFinishedControllerConfiguration
} }
// AddFlags adds flags related to TTLAfterFinishedController for controller manager to the specified FlagSet. // AddFlags adds flags related to TTLAfterFinishedController for controller manager to the specified FlagSet.