mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +00:00
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:
commit
2652e176e0
@ -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",
|
||||||
|
@ -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{
|
||||||
|
@ -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,
|
||||||
|
@ -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",
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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",
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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{
|
||||||
|
@ -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,
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
Loading…
Reference in New Issue
Block a user