From e6fc3eafee05d7040812c3569b116f4c5b801cba Mon Sep 17 00:00:00 2001 From: helen Date: Tue, 13 Jun 2023 09:22:23 +0800 Subject: [PATCH] karmadactl init add timeout flag Signed-off-by: helen --- pkg/karmadactl/cmdinit/cmdinit.go | 3 ++- pkg/karmadactl/cmdinit/kubernetes/deploy.go | 24 ++++++++++++--------- pkg/karmadactl/cmdinit/options/global.go | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/pkg/karmadactl/cmdinit/cmdinit.go b/pkg/karmadactl/cmdinit/cmdinit.go index 4cdaebb51..e1a35b8fb 100644 --- a/pkg/karmadactl/cmdinit/cmdinit.go +++ b/pkg/karmadactl/cmdinit/cmdinit.go @@ -10,6 +10,7 @@ import ( "github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/cert" "github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/kubernetes" + cmdinitoptions "github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/options" "github.com/karmada-io/karmada/pkg/karmadactl/options" "github.com/karmada-io/karmada/pkg/karmadactl/util" "github.com/karmada-io/karmada/pkg/version" @@ -139,7 +140,7 @@ func NewCmdInit(parentCommand string) *cobra.Command { flags.Int32VarP(&opts.KarmadaWebhookReplicas, "karmada-webhook-replicas", "", 1, "Karmada webhook replica set") flags.StringVarP(&opts.KarmadaAggregatedAPIServerImage, "karmada-aggregated-apiserver-image", "", kubernetes.DefaultKarmadaAggregatedAPIServerImage, "Karmada aggregated apiserver image") flags.Int32VarP(&opts.KarmadaAggregatedAPIServerReplicas, "karmada-aggregated-apiserver-replicas", "", 1, "Karmada aggregated apiserver replica set") - + flags.IntVarP(&opts.WaitComponentReadyTimeout, "wait-component-ready-timeout", "", cmdinitoptions.WaitComponentReadyTimeout, "Wait for karmada component ready timeout. 0 means wait forever") return cmd } diff --git a/pkg/karmadactl/cmdinit/kubernetes/deploy.go b/pkg/karmadactl/cmdinit/kubernetes/deploy.go index d7234be70..1be8b9cd3 100644 --- a/pkg/karmadactl/cmdinit/kubernetes/deploy.go +++ b/pkg/karmadactl/cmdinit/kubernetes/deploy.go @@ -128,9 +128,12 @@ type CommandInitOption struct { RestConfig *rest.Config KarmadaAPIServerIP []net.IP HostClusterDomain string + WaitComponentReadyTimeout int } // Validate Check that there are enough flags to run the command. +// +//nolint:gocyclo func (i *CommandInitOption) Validate(parentCommand string) error { if i.KarmadaAPIServerAdvertiseAddress != "" { if netutils.ParseIPSloppy(i.KarmadaAPIServerAdvertiseAddress) == nil { @@ -154,6 +157,10 @@ func (i *CommandInitOption) Validate(parentCommand string) error { return fmt.Errorf("when etcd storage mode is PVC, storageClassesName is not empty. See '%s init --help'", parentCommand) } + if i.WaitComponentReadyTimeout < 0 { + return fmt.Errorf("wait-component-ready-timeout must be greater than or equal to 0") + } + supportedStorageMode := SupportedStorageMode() if i.EtcdStorageMode != "" { for _, mode := range supportedStorageMode { @@ -350,9 +357,6 @@ func (i *CommandInitOption) createCertsSecrets() error { } func (i *CommandInitOption) initKarmadaAPIServer() error { - // wait karmada APIServer component ready timeout 120s - waitKarmadaAPIServerComponentReadyTimeout := 120 - if err := util.CreateOrUpdateService(i.KubeClientSet, i.makeEtcdService(etcdStatefulSetAndServiceName)); err != nil { return err } @@ -361,7 +365,7 @@ func (i *CommandInitOption) initKarmadaAPIServer() error { if _, err := i.KubeClientSet.AppsV1().StatefulSets(i.Namespace).Create(context.TODO(), etcdStatefulSet, metav1.CreateOptions{}); err != nil { klog.Warning(err) } - if err := util.WaitForStatefulSetRollout(i.KubeClientSet, etcdStatefulSet, options.WaitComponentReadyTimeout); err != nil { + if err := util.WaitForStatefulSetRollout(i.KubeClientSet, etcdStatefulSet, i.WaitComponentReadyTimeout); err != nil { klog.Warning(err) } klog.Info("Create karmada ApiServer Deployment") @@ -373,7 +377,7 @@ func (i *CommandInitOption) initKarmadaAPIServer() error { if _, err := i.KubeClientSet.AppsV1().Deployments(i.Namespace).Create(context.TODO(), karmadaAPIServerDeployment, metav1.CreateOptions{}); err != nil { klog.Warning(err) } - if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaAPIServerDeployment, waitKarmadaAPIServerComponentReadyTimeout); err != nil { + if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaAPIServerDeployment, i.WaitComponentReadyTimeout); err != nil { return err } @@ -387,7 +391,7 @@ func (i *CommandInitOption) initKarmadaAPIServer() error { if _, err := i.KubeClientSet.AppsV1().Deployments(i.Namespace).Create(context.TODO(), i.makeKarmadaAggregatedAPIServerDeployment(), metav1.CreateOptions{}); err != nil { klog.Warning(err) } - if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaAggregatedAPIServerDeployment, options.WaitComponentReadyTimeout); err != nil { + if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaAggregatedAPIServerDeployment, i.WaitComponentReadyTimeout); err != nil { klog.Warning(err) } return nil @@ -405,7 +409,7 @@ func (i *CommandInitOption) initKarmadaComponent() error { if _, err := deploymentClient.Create(context.TODO(), karmadaKubeControllerManagerDeployment, metav1.CreateOptions{}); err != nil { klog.Warning(err) } - if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaKubeControllerManagerDeployment, options.WaitComponentReadyTimeout); err != nil { + if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaKubeControllerManagerDeployment, i.WaitComponentReadyTimeout); err != nil { klog.Warning(err) } @@ -416,7 +420,7 @@ func (i *CommandInitOption) initKarmadaComponent() error { if _, err := deploymentClient.Create(context.TODO(), karmadaSchedulerDeployment, metav1.CreateOptions{}); err != nil { klog.Warning(err) } - if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaSchedulerDeployment, options.WaitComponentReadyTimeout); err != nil { + if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaSchedulerDeployment, i.WaitComponentReadyTimeout); err != nil { klog.Warning(err) } @@ -427,7 +431,7 @@ func (i *CommandInitOption) initKarmadaComponent() error { if _, err := deploymentClient.Create(context.TODO(), karmadaControllerManagerDeployment, metav1.CreateOptions{}); err != nil { klog.Warning(err) } - if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaControllerManagerDeployment, options.WaitComponentReadyTimeout); err != nil { + if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaControllerManagerDeployment, i.WaitComponentReadyTimeout); err != nil { klog.Warning(err) } @@ -441,7 +445,7 @@ func (i *CommandInitOption) initKarmadaComponent() error { if _, err := deploymentClient.Create(context.TODO(), karmadaWebhookDeployment, metav1.CreateOptions{}); err != nil { klog.Warning(err) } - if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaWebhookDeployment, options.WaitComponentReadyTimeout); err != nil { + if err := util.WaitForDeploymentRollout(i.KubeClientSet, karmadaWebhookDeployment, i.WaitComponentReadyTimeout); err != nil { klog.Warning(err) } return nil diff --git a/pkg/karmadactl/cmdinit/options/global.go b/pkg/karmadactl/cmdinit/options/global.go index b47fcc729..6dd61e60f 100644 --- a/pkg/karmadactl/cmdinit/options/global.go +++ b/pkg/karmadactl/cmdinit/options/global.go @@ -24,5 +24,5 @@ const ( // KarmadaKubeConfigName karmada kubeconfig name KarmadaKubeConfigName = "karmada-apiserver.config" // WaitComponentReadyTimeout wait component ready time - WaitComponentReadyTimeout = 30 + WaitComponentReadyTimeout = 120 )