kubeadm: add CurrentKubernetesVersion

Replaced hardcoded "v0.13.0" strings with CurrentKubernetesVersion variable.

This should help with a regular release version bumps.
pull/564/head
Ed Bartosh 2018-12-22 14:46:32 +02:00
parent aee1ab34ab
commit e6937ec27f
10 changed files with 41 additions and 34 deletions

View File

@ -46,7 +46,7 @@ var (
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version. # Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
kubeadm alpha phase kubelet config download --kubelet-version %s kubeadm alpha phase kubelet config download --kubelet-version %s
`, constants.MinimumKubeletVersion)) `, constants.CurrentKubernetesVersion))
kubeletConfigEnableDynamicLongDesc = normalizer.LongDesc(` kubeletConfigEnableDynamicLongDesc = normalizer.LongDesc(`
Enables or updates dynamic kubelet configuration for a Node, against the kubelet-config-1.X ConfigMap in the cluster, Enables or updates dynamic kubelet configuration for a Node, against the kubelet-config-1.X ConfigMap in the cluster,
@ -63,7 +63,7 @@ var (
WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it
may have surprising side-effects at this stage. may have surprising side-effects at this stage.
`, constants.MinimumKubeletVersion)) `, constants.CurrentKubernetesVersion))
) )
// newCmdKubeletUtility returns command for `kubeadm phase kubelet` // newCmdKubeletUtility returns command for `kubeadm phase kubelet`

View File

@ -46,14 +46,14 @@ var (
what the _desired_ kubelet version is. Give what the _desired_ kubelet version is. Give
`) `)
upgradeNodeConfigExample = normalizer.Examples(` upgradeNodeConfigExample = normalizer.Examples(fmt.Sprintf(`
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version. # Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
kubeadm upgrade node config --kubelet-version v1.13.0 kubeadm upgrade node config --kubelet-version %s
# Simulates the downloading of the kubelet configuration from the ConfigMap in the cluster with a specific desired # Simulates the downloading of the kubelet configuration from the ConfigMap in the cluster with a specific desired
# version. Does not change any state locally on the node. # version. Does not change any state locally on the node.
kubeadm upgrade node config --kubelet-version v1.13.0 --dry-run kubeadm upgrade node config --kubelet-version %[1]s --dry-run
`) `, constants.CurrentKubernetesVersion))
) )
type nodeUpgradeFlags struct { type nodeUpgradeFlags struct {

View File

@ -382,6 +382,9 @@ var (
// MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports // MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports
MinimumKubeletVersion = version.MustParseSemantic("v1.12.0") MinimumKubeletVersion = version.MustParseSemantic("v1.12.0")
// CurrentKubernetesVersion specifies current Kubernetes version supported by kubeadm
CurrentKubernetesVersion = version.MustParseSemantic("v1.13.0")
// SupportedEtcdVersion lists officially supported etcd versions with corresponding Kubernetes releases // SupportedEtcdVersion lists officially supported etcd versions with corresponding Kubernetes releases
SupportedEtcdVersion = map[uint8]string{ SupportedEtcdVersion = map[uint8]string{
10: "3.1.12", 10: "3.1.12",

View File

@ -45,6 +45,7 @@ go_test(
embed = [":go_default_library"], embed = [":go_default_library"],
deps = [ deps = [
"//cmd/kubeadm/app/apis/kubeadm:go_default_library", "//cmd/kubeadm/app/apis/kubeadm:go_default_library",
"//cmd/kubeadm/app/constants:go_default_library",
"//pkg/kubelet/apis:go_default_library", "//pkg/kubelet/apis:go_default_library",
"//pkg/kubelet/apis/config:go_default_library", "//pkg/kubelet/apis/config:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library",

View File

@ -26,6 +26,7 @@ import (
"k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/kubernetes/fake"
core "k8s.io/client-go/testing" core "k8s.io/client-go/testing"
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
) )
@ -35,7 +36,7 @@ func TestCreateConfigMap(t *testing.T) {
cfg := &kubeadmapi.InitConfiguration{ cfg := &kubeadmapi.InitConfiguration{
NodeRegistration: kubeadmapi.NodeRegistrationOptions{Name: nodeName}, NodeRegistration: kubeadmapi.NodeRegistrationOptions{Name: nodeName},
ClusterConfiguration: kubeadmapi.ClusterConfiguration{ ClusterConfiguration: kubeadmapi.ClusterConfiguration{
KubernetesVersion: "v1.13.0", KubernetesVersion: constants.CurrentKubernetesVersion.String(),
ComponentConfigs: kubeadmapi.ComponentConfigs{ ComponentConfigs: kubeadmapi.ComponentConfigs{
Kubelet: &kubeletconfig.KubeletConfiguration{}, Kubelet: &kubeletconfig.KubeletConfiguration{},
}, },

View File

@ -46,9 +46,9 @@ func TestEnforceVersionPolicies(t *testing.T) {
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(), clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(), kubeletVersion: constants.MinimumControlPlaneVersion.WithPatch(2).String(),
kubeadmVersion: "v1.13.1", kubeadmVersion: constants.CurrentKubernetesVersion.WithPatch(1).String(),
}, },
newK8sVersion: "v1.13.0", newK8sVersion: constants.CurrentKubernetesVersion.String(),
}, },
{ {
name: "downgrade", name: "downgrade",
@ -84,9 +84,9 @@ func TestEnforceVersionPolicies(t *testing.T) {
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.11.3", clusterVersion: "v1.11.3",
kubeletVersion: "v1.11.3", kubeletVersion: "v1.11.3",
kubeadmVersion: "v1.13.0", kubeadmVersion: constants.CurrentKubernetesVersion.String(),
}, },
newK8sVersion: "v1.13.0", newK8sVersion: constants.CurrentKubernetesVersion.String(),
expectedMandatoryErrs: 1, // can't upgrade two minor versions expectedMandatoryErrs: 1, // can't upgrade two minor versions
expectedSkippableErrs: 1, // kubelet <-> apiserver skew too large expectedSkippableErrs: 1, // kubelet <-> apiserver skew too large
}, },
@ -118,7 +118,7 @@ func TestEnforceVersionPolicies(t *testing.T) {
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(), kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(),
kubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(), kubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
}, },
newK8sVersion: "v1.13.0", newK8sVersion: constants.CurrentKubernetesVersion.String(),
expectedMandatoryErrs: 1, expectedMandatoryErrs: 1,
}, },
{ {
@ -126,9 +126,9 @@ func TestEnforceVersionPolicies(t *testing.T) {
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(), clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: "v1.11.8", kubeletVersion: "v1.11.8",
kubeadmVersion: "v1.13.0", kubeadmVersion: constants.CurrentKubernetesVersion.String(),
}, },
newK8sVersion: "v1.13.0", newK8sVersion: constants.CurrentKubernetesVersion.String(),
expectedSkippableErrs: 1, expectedSkippableErrs: 1,
}, },
{ {
@ -136,9 +136,9 @@ func TestEnforceVersionPolicies(t *testing.T) {
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(), clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(), kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(),
kubeadmVersion: "v1.13.0-beta.1", kubeadmVersion: constants.CurrentKubernetesVersion.WithPreRelease("beta.1").String(),
}, },
newK8sVersion: "v1.13.0-beta.1", newK8sVersion: constants.CurrentKubernetesVersion.WithPreRelease("beta.1").String(),
allowExperimental: true, allowExperimental: true,
}, },
{ {
@ -146,9 +146,9 @@ func TestEnforceVersionPolicies(t *testing.T) {
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(), clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(), kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(),
kubeadmVersion: "v1.13.0-rc.1", kubeadmVersion: constants.CurrentKubernetesVersion.WithPreRelease("rc.1").String(),
}, },
newK8sVersion: "v1.13.0-rc.1", newK8sVersion: constants.CurrentKubernetesVersion.WithPreRelease("rc.1").String(),
allowRCs: true, allowRCs: true,
}, },
{ {
@ -156,9 +156,9 @@ func TestEnforceVersionPolicies(t *testing.T) {
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(), clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(), kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(),
kubeadmVersion: "v1.13.0-rc.1", kubeadmVersion: constants.CurrentKubernetesVersion.WithPreRelease("rc.1").String(),
}, },
newK8sVersion: "v1.13.0-rc.1", newK8sVersion: constants.CurrentKubernetesVersion.WithPreRelease("rc.1").String(),
allowExperimental: true, allowExperimental: true,
}, },
{ {
@ -166,9 +166,9 @@ func TestEnforceVersionPolicies(t *testing.T) {
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(), clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(), kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(),
kubeadmVersion: "v1.13.0-beta.1", kubeadmVersion: constants.CurrentKubernetesVersion.WithPreRelease("beta.1").String(),
}, },
newK8sVersion: "v1.13.0-beta.1", newK8sVersion: constants.CurrentKubernetesVersion.WithPreRelease("beta.1").String(),
allowRCs: true, allowRCs: true,
expectedSkippableErrs: 1, expectedSkippableErrs: 1,
}, },
@ -177,9 +177,9 @@ func TestEnforceVersionPolicies(t *testing.T) {
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(), clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(), kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(),
kubeadmVersion: "v1.13.0-rc.1", kubeadmVersion: constants.CurrentKubernetesVersion.WithPreRelease("rc.1").String(),
}, },
newK8sVersion: "v1.13.0-rc.1", newK8sVersion: constants.CurrentKubernetesVersion.WithPreRelease("rc.1").String(),
expectedSkippableErrs: 1, expectedSkippableErrs: 1,
}, },
{ {
@ -187,7 +187,7 @@ func TestEnforceVersionPolicies(t *testing.T) {
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(), clusterVersion: constants.MinimumControlPlaneVersion.WithPatch(3).String(),
kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(), kubeletVersion: constants.MinimumKubeletVersion.WithPatch(3).String(),
kubeadmVersion: "v1.13.0", kubeadmVersion: constants.CurrentKubernetesVersion.String(),
}, },
newK8sVersion: constants.MinimumControlPlaneVersion.WithPatch(6).String(), newK8sVersion: constants.MinimumControlPlaneVersion.WithPatch(6).String(),
expectedSkippableErrs: 1, // can't upgrade old k8s with newer kubeadm expectedSkippableErrs: 1, // can't upgrade old k8s with newer kubeadm

View File

@ -462,7 +462,7 @@ func TestStaticPodControlPlane(t *testing.T) {
t.Fatalf("couldn't read temp file: %v", err) t.Fatalf("couldn't read temp file: %v", err)
} }
newcfg, err := getConfig("v1.13.0", tempCertsDir, tmpEtcdDataDir) newcfg, err := getConfig(constants.CurrentKubernetesVersion.String(), tempCertsDir, tmpEtcdDataDir)
if err != nil { if err != nil {
t.Fatalf("couldn't create config: %v", err) t.Fatalf("couldn't create config: %v", err)
} }

View File

@ -648,13 +648,13 @@ func TestKubeletVersionCheck(t *testing.T) {
expectErrors bool expectErrors bool
expectWarnings bool expectWarnings bool
}{ }{
{"v1.13.2", "", false, false}, // check minimally supported version when there is no information about control plane {"v" + constants.CurrentKubernetesVersion.WithPatch(2).String(), "", false, false}, // check minimally supported version when there is no information about control plane
{"v1.11.3", "v1.11.8", true, false}, // too old kubelet (older than kubeadmconstants.MinimumKubeletVersion), should fail. {"v1.11.3", "v1.11.8", true, false}, // too old kubelet (older than kubeadmconstants.MinimumKubeletVersion), should fail.
{"v" + constants.MinimumKubeletVersion.String(), constants.MinimumControlPlaneVersion.WithPatch(5).String(), false, false}, // kubelet within same major.minor as control plane {"v" + constants.MinimumKubeletVersion.String(), constants.MinimumControlPlaneVersion.WithPatch(5).String(), false, false}, // kubelet within same major.minor as control plane
{"v" + constants.MinimumKubeletVersion.WithPatch(5).String(), constants.MinimumControlPlaneVersion.WithPatch(1).String(), false, false}, // kubelet is newer, but still within same major.minor as control plane {"v" + constants.MinimumKubeletVersion.WithPatch(5).String(), constants.MinimumControlPlaneVersion.WithPatch(1).String(), false, false}, // kubelet is newer, but still within same major.minor as control plane
{"v" + constants.MinimumKubeletVersion.String(), "v1.13.1", false, false}, // kubelet is lower than control plane, but newer than minimally supported {"v" + constants.MinimumKubeletVersion.String(), constants.CurrentKubernetesVersion.WithPatch(1).String(), false, false}, // kubelet is lower than control plane, but newer than minimally supported
{"v1.13.0-alpha.1", constants.MinimumControlPlaneVersion.WithPatch(1).String(), true, false}, // kubelet is newer (development build) than control plane, should fail. {"v" + constants.CurrentKubernetesVersion.WithPreRelease("alpha.1").String(), constants.MinimumControlPlaneVersion.WithPatch(1).String(), true, false}, // kubelet is newer (development build) than control plane, should fail.
{"v1.13.0", constants.MinimumControlPlaneVersion.WithPatch(5).String(), true, false}, // kubelet is newer (release) than control plane, should fail. {"v" + constants.CurrentKubernetesVersion.String(), constants.MinimumControlPlaneVersion.WithPatch(5).String(), true, false}, // kubelet is newer (release) than control plane, should fail.
} }
for _, tc := range cases { for _, tc := range cases {

View File

@ -33,6 +33,7 @@ go_test(
"skip", "skip",
], ],
deps = [ deps = [
"//cmd/kubeadm/app/constants:go_default_library",
"//cmd/kubeadm/app/phases/certs:go_default_library", "//cmd/kubeadm/app/phases/certs:go_default_library",
"//cmd/kubeadm/app/util/pkiutil:go_default_library", "//cmd/kubeadm/app/util/pkiutil:go_default_library",
"//cmd/kubeadm/test:go_default_library", "//cmd/kubeadm/test:go_default_library",

View File

@ -23,6 +23,7 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/renstrom/dedent" "github.com/renstrom/dedent"
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/phases/certs" "k8s.io/kubernetes/cmd/kubeadm/app/phases/certs"
"k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil" "k8s.io/kubernetes/cmd/kubeadm/app/util/pkiutil"
testutil "k8s.io/kubernetes/cmd/kubeadm/test" testutil "k8s.io/kubernetes/cmd/kubeadm/test"
@ -102,7 +103,7 @@ func TestCmdInitKubernetesVersion(t *testing.T) {
}, },
{ {
name: "valid version is accepted", name: "valid version is accepted",
args: "--kubernetes-version=1.13.0", args: "--kubernetes-version=" + constants.CurrentKubernetesVersion.String(),
expected: true, expected: true,
}, },
} }