mirror of https://github.com/k3s-io/k3s
Fix error handling for loading initCfg in kubeadm
This fixes possible problems when kubeadm upgrade can't load the InitConfig properly. Some new code introduced in https://github.com/kubernetes/kubernetes/pull/75499 is placed between the loading of the config and the error handling, hiding possible errors. This error cannot be ignored (as is the case now), since the cfg ptr. returned from the configutil function will be nil in the case of an error. Signed-off-by: Odin Ugedal <odin@ugedal.com>k3s-v1.15.3
parent
b7fa33ec15
commit
2fc9b3a670
|
@ -96,6 +96,21 @@ func enforceRequirements(flags *applyPlanFlags, dryRun bool, newK8sVersion strin
|
||||||
cfg, err = configutil.FetchInitConfigurationFromCluster(client, os.Stdout, "upgrade/config", false)
|
cfg, err = configutil.FetchInitConfigurationFromCluster(client, os.Stdout, "upgrade/config", false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
if apierrors.IsNotFound(err) {
|
||||||
|
fmt.Printf("[upgrade/config] In order to upgrade, a ConfigMap called %q in the %s namespace must exist.\n", constants.KubeadmConfigConfigMap, metav1.NamespaceSystem)
|
||||||
|
fmt.Println("[upgrade/config] Without this information, 'kubeadm upgrade' won't know how to configure your upgraded cluster.")
|
||||||
|
fmt.Println("")
|
||||||
|
fmt.Println("[upgrade/config] Next steps:")
|
||||||
|
fmt.Printf("\t- OPTION 1: Run 'kubeadm config upload from-flags' and specify the same CLI arguments you passed to 'kubeadm init' when you created your control-plane.\n")
|
||||||
|
fmt.Printf("\t- OPTION 2: Run 'kubeadm config upload from-file' and specify the same config file you passed to 'kubeadm init' when you created your control-plane.\n")
|
||||||
|
fmt.Printf("\t- OPTION 3: Pass a config file to 'kubeadm upgrade' using the --config flag.\n")
|
||||||
|
fmt.Println("")
|
||||||
|
err = errors.Errorf("the ConfigMap %q in the %s namespace used for getting configuration information was not found", constants.KubeadmConfigConfigMap, metav1.NamespaceSystem)
|
||||||
|
}
|
||||||
|
return nil, nil, nil, errors.Wrap(err, "[upgrade/config] FATAL")
|
||||||
|
}
|
||||||
|
|
||||||
ignorePreflightErrorsSet, err := validation.ValidateIgnorePreflightErrors(flags.ignorePreflightErrors, cfg.NodeRegistration.IgnorePreflightErrors)
|
ignorePreflightErrorsSet, err := validation.ValidateIgnorePreflightErrors(flags.ignorePreflightErrors, cfg.NodeRegistration.IgnorePreflightErrors)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
|
@ -114,21 +129,6 @@ func enforceRequirements(flags *applyPlanFlags, dryRun bool, newK8sVersion strin
|
||||||
return nil, nil, nil, errors.Wrap(err, "[upgrade/health] FATAL")
|
return nil, nil, nil, errors.Wrap(err, "[upgrade/health] FATAL")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
if apierrors.IsNotFound(err) {
|
|
||||||
fmt.Printf("[upgrade/config] In order to upgrade, a ConfigMap called %q in the %s namespace must exist.\n", constants.KubeadmConfigConfigMap, metav1.NamespaceSystem)
|
|
||||||
fmt.Println("[upgrade/config] Without this information, 'kubeadm upgrade' won't know how to configure your upgraded cluster.")
|
|
||||||
fmt.Println("")
|
|
||||||
fmt.Println("[upgrade/config] Next steps:")
|
|
||||||
fmt.Printf("\t- OPTION 1: Run 'kubeadm config upload from-flags' and specify the same CLI arguments you passed to 'kubeadm init' when you created your control-plane.\n")
|
|
||||||
fmt.Printf("\t- OPTION 2: Run 'kubeadm config upload from-file' and specify the same config file you passed to 'kubeadm init' when you created your control-plane.\n")
|
|
||||||
fmt.Printf("\t- OPTION 3: Pass a config file to 'kubeadm upgrade' using the --config flag.\n")
|
|
||||||
fmt.Println("")
|
|
||||||
err = errors.Errorf("the ConfigMap %q in the %s namespace used for getting configuration information was not found", constants.KubeadmConfigConfigMap, metav1.NamespaceSystem)
|
|
||||||
}
|
|
||||||
return nil, nil, nil, errors.Wrap(err, "[upgrade/config] FATAL")
|
|
||||||
}
|
|
||||||
|
|
||||||
// If a new k8s version should be set, apply the change before printing the config
|
// If a new k8s version should be set, apply the change before printing the config
|
||||||
if len(newK8sVersion) != 0 {
|
if len(newK8sVersion) != 0 {
|
||||||
cfg.KubernetesVersion = newK8sVersion
|
cfg.KubernetesVersion = newK8sVersion
|
||||||
|
|
Loading…
Reference in New Issue