From 3b5e698cb26b717966952dbbb9c3509354f28402 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Mon, 11 Jan 2021 18:17:50 +0200 Subject: [PATCH] kubeadm: trim leading "v" when running CoreDNS migration preflight During upgrade the coredns migration library seems to require that the input version doesn't have the "v" prefix". Fixes a bug where the user cannot run commands such as "kubeadm upgrade plan" if they have `v1.8.0` installed. Assuming this is caused by the fact that previously the image didn't have a "v" prefix. --- cmd/kubeadm/app/phases/addons/dns/dns.go | 1 + cmd/kubeadm/app/phases/upgrade/preflight.go | 3 +++ 2 files changed, 4 insertions(+) diff --git a/cmd/kubeadm/app/phases/addons/dns/dns.go b/cmd/kubeadm/app/phases/addons/dns/dns.go index bfff580821b..323dc03f3de 100644 --- a/cmd/kubeadm/app/phases/addons/dns/dns.go +++ b/cmd/kubeadm/app/phases/addons/dns/dns.go @@ -382,6 +382,7 @@ func isCoreDNSConfigMapMigrationRequired(corefile, currentInstalledCoreDNSVersio if currentInstalledCoreDNSVersion == "" { return isMigrationRequired, nil } + currentInstalledCoreDNSVersion = strings.TrimLeft(currentInstalledCoreDNSVersion, "v") deprecated, err := migration.Deprecated(currentInstalledCoreDNSVersion, strings.TrimLeft(kubeadmconstants.CoreDNSVersion, "v"), corefile) if err != nil { return isMigrationRequired, errors.Wrap(err, "unable to get list of changes to the configuration.") diff --git a/cmd/kubeadm/app/phases/upgrade/preflight.go b/cmd/kubeadm/app/phases/upgrade/preflight.go index 21e758b816f..344e0e09e3d 100644 --- a/cmd/kubeadm/app/phases/upgrade/preflight.go +++ b/cmd/kubeadm/app/phases/upgrade/preflight.go @@ -90,6 +90,8 @@ func checkUnsupportedPlugins(client clientset.Interface) error { if err != nil { return err } + + currentInstalledCoreDNSversion = strings.TrimLeft(currentInstalledCoreDNSversion, "v") unsupportedCoreDNS, err := migration.Unsupported(currentInstalledCoreDNSversion, currentInstalledCoreDNSversion, corefile) if err != nil { return err @@ -117,6 +119,7 @@ func checkMigration(client clientset.Interface) error { return err } + currentInstalledCoreDNSversion = strings.TrimLeft(currentInstalledCoreDNSversion, "v") _, err = migration.Migrate(currentInstalledCoreDNSversion, strings.TrimLeft(kubeadmconstants.CoreDNSVersion, "v"), corefile, false) if err != nil { return errors.Wrap(err, "CoreDNS will not be upgraded")