diff --git a/pkg/upgrader/upgrade/upgrade.go b/pkg/upgrader/upgrade/upgrade.go index 42891309b..2b9eab1ce 100644 --- a/pkg/upgrader/upgrade/upgrade.go +++ b/pkg/upgrader/upgrade/upgrade.go @@ -7,18 +7,28 @@ import ( ) const ( - labelUpgradeLock = "kubeone.io/upgrading-in-process" + labelUpgradeLock = "kubeone.io/upgrade-in-progress" labelControlPlaneNode = "node-role.kubernetes.io/master" ) // Upgrade performs all the steps required to upgrade Kubernetes on // cluster provisioned using KubeOne func Upgrade(ctx *util.Context) error { - if err := util.BuildKubernetesClientset(ctx); err != nil { - return errors.Wrap(err, "unable to build kubernetes clientset") + upgradeSteps := []struct { + fn func(ctx *util.Context) error + errMsg string + }{ + {fn: util.BuildKubernetesClientset, errMsg: "unable to build kubernetes clientset"}, + {fn: determineHostname, errMsg: "unable to determine hostname"}, + {fn: runPreflightChecks, errMsg: "preflight checks failed"}, + {fn: upgradeLeaderControlPlane, errMsg: "unable to upgrade the leader control plane node"}, + {fn: upgradeFollowerControlPlane, errMsg: "unable to upgrade follower control plane node"}, } - if err := runPreflightChecks(ctx); err != nil { - return errors.Wrap(err, "preflight checks failed") + + for _, step := range upgradeSteps { + if err := step.fn(ctx); err != nil { + return errors.Wrap(err, step.errMsg) + } } return nil