@@ -21,38 +21,36 @@ import (
2121
2222 "github.com/kubermatic/kubeone/pkg/certificate"
2323 "github.com/kubermatic/kubeone/pkg/features"
24+ "github.com/kubermatic/kubeone/pkg/task"
2425 "github.com/kubermatic/kubeone/pkg/templates/machinecontroller"
2526 "github.com/kubermatic/kubeone/pkg/util"
2627)
2728
2829// Install performs all the steps required to install Kubernetes on
2930// an empty, pristine machine.
3031func Install (ctx * util.Context ) error {
31- installSteps := []struct {
32- fn func (* util.Context ) error
33- errMsg string
34- }{
35- {fn : installPrerequisites , errMsg : "failed to install prerequisites" },
36- {fn : generateKubeadm , errMsg : "failed to generate kubeadm config files" },
37- {fn : kubeadmCertsOnLeader , errMsg : "failed to provision certs and etcd on leader" },
38- {fn : certificate .DownloadCA , errMsg : "unable to download ca from leader" },
39- {fn : deployCA , errMsg : "unable to deploy ca on nodes" },
40- {fn : kubeadmCertsOnFollower , errMsg : "failed to provision certs and etcd on followers" },
41- {fn : initKubernetesLeader , errMsg : "failed to init kubernetes on leader" },
42- {fn : joinControlplaneNode , errMsg : "unable to join other masters a cluster" },
43- {fn : copyKubeconfig , errMsg : "unable to copy kubeconfig to home directory" },
44- {fn : saveKubeconfig , errMsg : "unable to save kubeconfig to the local machine" },
45- {fn : util .BuildKubernetesClientset , errMsg : "unable to build kubernetes clientset" },
46- {fn : features .Activate , errMsg : "unable to activate features" },
47- {fn : applyCanalCNI , errMsg : "failed to install cni plugin canal" },
48- {fn : machinecontroller .EnsureMachineController , errMsg : "failed to install machine-controller" },
49- {fn : machinecontroller .WaitReady , errMsg : "failed to wait for machine-controller" },
50- {fn : createWorkerMachines , errMsg : "failed to create worker machines" },
32+ installSteps := []task.Task {
33+ {Fn : installPrerequisites , ErrMsg : "failed to install prerequisites" },
34+ {Fn : generateKubeadm , ErrMsg : "failed to generate kubeadm config files" },
35+ {Fn : kubeadmCertsOnLeader , ErrMsg : "failed to provision certs and etcd on leader" },
36+ {Fn : certificate .DownloadCA , ErrMsg : "unable to download ca from leader" , Retries : 3 },
37+ {Fn : deployCA , ErrMsg : "unable to deploy ca on nodes" , Retries : 3 },
38+ {Fn : kubeadmCertsOnFollower , ErrMsg : "failed to provision certs and etcd on followers" },
39+ {Fn : initKubernetesLeader , ErrMsg : "failed to init kubernetes on leader" },
40+ {Fn : joinControlplaneNode , ErrMsg : "unable to join other masters a cluster" },
41+ {Fn : copyKubeconfig , ErrMsg : "unable to copy kubeconfig to home directory" , Retries : 3 },
42+ {Fn : saveKubeconfig , ErrMsg : "unable to save kubeconfig to the local machine" , Retries : 3 },
43+ {Fn : util .BuildKubernetesClientset , ErrMsg : "unable to build kubernetes clientset" , Retries : 3 },
44+ {Fn : features .Activate , ErrMsg : "unable to activate features" },
45+ {Fn : applyCanalCNI , ErrMsg : "failed to install cni plugin canal" , Retries : 3 },
46+ {Fn : machinecontroller .EnsureMachineController , ErrMsg : "failed to install machine-controller" , Retries : 3 },
47+ {Fn : machinecontroller .WaitReady , ErrMsg : "failed to wait for machine-controller" , Retries : 3 },
48+ {Fn : createWorkerMachines , ErrMsg : "failed to create worker machines" , Retries : 3 },
5149 }
5250
5351 for _ , step := range installSteps {
54- if err := step .fn (ctx ); err != nil {
55- return errors .Wrap (err , step .errMsg )
52+ if err := step .Run (ctx ); err != nil {
53+ return errors .Wrap (err , step .ErrMsg )
5654 }
5755 }
5856
0 commit comments