Skip to content

Commit 190f6d8

Browse files
authored
Merge pull request kubernetes#71946 from bart0sh/PR0045-kubeadm-1260-simplify-minimum-kubernetes-version-bumps
kubeadm: simplify minimum Kubernetes version bumps
2 parents e2f2ca2 + b40018d commit 190f6d8

File tree

17 files changed

+143
-103
lines changed

17 files changed

+143
-103
lines changed

cmd/kubeadm/app/cmd/alpha/kubelet.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ limitations under the License.
1717
package alpha
1818

1919
import (
20+
"fmt"
21+
2022
"github.com/pkg/errors"
2123
"github.com/spf13/cobra"
2224
"k8s.io/apimachinery/pkg/util/version"
@@ -38,13 +40,13 @@ var (
3840
"kubelet --version" or respects the --kubelet-version parameter.
3941
` + cmdutil.AlphaDisclaimer)
4042

41-
kubeletConfigDownloadExample = normalizer.Examples(`
43+
kubeletConfigDownloadExample = normalizer.Examples(fmt.Sprintf(`
4244
# Downloads the kubelet configuration from the ConfigMap in the cluster. Autodetects the kubelet version.
4345
kubeadm alpha phase kubelet config download
4446
4547
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
46-
kubeadm alpha phase kubelet config download --kubelet-version v1.12.0
47-
`)
48+
kubeadm alpha phase kubelet config download --kubelet-version %s
49+
`, constants.MinimumKubeletVersion))
4850

4951
kubeletConfigEnableDynamicLongDesc = normalizer.LongDesc(`
5052
Enables or updates dynamic kubelet configuration for a Node, against the kubelet-config-1.X ConfigMap in the cluster,
@@ -55,13 +57,13 @@ var (
5557
5658
` + cmdutil.AlphaDisclaimer)
5759

58-
kubeletConfigEnableDynamicExample = normalizer.Examples(`
60+
kubeletConfigEnableDynamicExample = normalizer.Examples(fmt.Sprintf(`
5961
# Enables dynamic kubelet configuration for a Node.
60-
kubeadm alpha phase kubelet enable-dynamic-config --node-name node-1 --kubelet-version v1.12.0
62+
kubeadm alpha phase kubelet enable-dynamic-config --node-name node-1 --kubelet-version %s
6163
6264
WARNING: This feature is still experimental, and disabled by default. Enable only if you know what you are doing, as it
6365
may have surprising side-effects at this stage.
64-
`)
66+
`, constants.MinimumKubeletVersion))
6567
)
6668

6769
// newCmdKubeletUtility returns command for `kubeadm phase kubelet`

cmd/kubeadm/app/cmd/config_test.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package cmd
1818

1919
import (
2020
"bytes"
21+
"fmt"
2122
"io"
2223
"io/ioutil"
2324
"os"
@@ -41,11 +42,12 @@ import (
4142

4243
const (
4344
defaultNumberOfImages = 8
44-
// dummyKubernetesVersion is just used for unit testing, in order to not make
45-
// kubeadm lookup dl.k8s.io to resolve what the latest stable release is
46-
dummyKubernetesVersion = "v1.12.0"
4745
)
4846

47+
// dummyKubernetesVersion is just used for unit testing, in order to not make
48+
// kubeadm lookup dl.k8s.io to resolve what the latest stable release is
49+
var dummyKubernetesVersion = constants.MinimumControlPlaneVersion.String()
50+
4951
func TestNewCmdConfigImagesList(t *testing.T) {
5052
var output bytes.Buffer
5153
mockK8sVersion := dummyKubernetesVersion
@@ -83,11 +85,11 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) {
8385
expectedImageSubstrings: []string{
8486
"coredns",
8587
},
86-
configContents: []byte(dedent.Dedent(`
88+
configContents: []byte(dedent.Dedent(fmt.Sprintf(`
8789
apiVersion: kubeadm.k8s.io/v1beta1
8890
kind: ClusterConfiguration
89-
kubernetesVersion: v1.12.0
90-
`)),
91+
kubernetesVersion: %s
92+
`, constants.MinimumControlPlaneVersion))),
9193
},
9294
}
9395

cmd/kubeadm/app/cmd/token_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
core "k8s.io/client-go/testing"
3333
"k8s.io/client-go/tools/clientcmd"
3434
kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
35+
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
3536
)
3637

3738
const (
@@ -175,7 +176,7 @@ func TestRunCreateToken(t *testing.T) {
175176
ClusterConfiguration: kubeadmapiv1beta1.ClusterConfiguration{
176177
// KubernetesVersion is not used, but we set this explicitly to avoid
177178
// the lookup of the version from the internet when executing ConfigFileAndDefaultsToInternalConfig
178-
KubernetesVersion: "v1.12.0",
179+
KubernetesVersion: constants.MinimumControlPlaneVersion.String(),
179180
},
180181
BootstrapTokens: []kubeadmapiv1beta1.BootstrapToken{
181182
{

cmd/kubeadm/app/features/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ go_test(
3535
srcs = ["features_test.go"],
3636
embed = [":go_default_library"],
3737
deps = [
38-
"//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library",
38+
"//cmd/kubeadm/app/constants:go_default_library",
3939
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
4040
],
4141
)

cmd/kubeadm/app/features/features_test.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@ import (
2020
"reflect"
2121
"testing"
2222

23-
"k8s.io/apimachinery/pkg/util/version"
2423
utilfeature "k8s.io/apiserver/pkg/util/feature"
24+
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
2525
)
2626

27-
var TestMinVersion = version.MustParseSemantic("v1.12.0-alpha.1")
28-
2927
func TestKnownFeatures(t *testing.T) {
3028
var someFeatures = FeatureList{
3129
"feature2": {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.Alpha}},
@@ -130,7 +128,7 @@ func TestNewFeatureGate(t *testing.T) {
130128
func TestValidateVersion(t *testing.T) {
131129
var someFeatures = FeatureList{
132130
"feature1": {FeatureSpec: utilfeature.FeatureSpec{Default: false, PreRelease: utilfeature.Beta}},
133-
"feature2": {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.Alpha}, MinimumVersion: TestMinVersion},
131+
"feature2": {FeatureSpec: utilfeature.FeatureSpec{Default: true, PreRelease: utilfeature.Alpha}, MinimumVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.1")},
134132
}
135133

136134
var tests = []struct {
@@ -144,7 +142,7 @@ func TestValidateVersion(t *testing.T) {
144142
},
145143
{ //min version but correct value given
146144
requestedFeatures: map[string]bool{"feature2": true},
147-
requestedVersion: "v1.12.0",
145+
requestedVersion: constants.MinimumControlPlaneVersion.String(),
148146
expectedError: false,
149147
},
150148
{ //min version and incorrect value given

cmd/kubeadm/app/phases/addons/proxy/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ go_test(
1212
embed = [":go_default_library"],
1313
deps = [
1414
"//cmd/kubeadm/app/apis/kubeadm/v1beta1:go_default_library",
15+
"//cmd/kubeadm/app/constants:go_default_library",
1516
"//cmd/kubeadm/app/util:go_default_library",
1617
"//cmd/kubeadm/app/util/config:go_default_library",
1718
"//pkg/apis/core:go_default_library",

cmd/kubeadm/app/phases/addons/proxy/proxy_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
clientsetfake "k8s.io/client-go/kubernetes/fake"
2828
core "k8s.io/client-go/testing"
2929
kubeadmapiv1beta1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
30+
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
3031
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
3132
configutil "k8s.io/kubernetes/cmd/kubeadm/app/util/config"
3233
api "k8s.io/kubernetes/pkg/apis/core"
@@ -183,7 +184,7 @@ func TestEnsureProxyAddon(t *testing.T) {
183184
PodSubnet: "5.6.7.8/24",
184185
},
185186
ImageRepository: "someRepo",
186-
KubernetesVersion: "v1.12.0",
187+
KubernetesVersion: constants.MinimumControlPlaneVersion.String(),
187188
},
188189
}
189190

cmd/kubeadm/app/phases/controlplane/manifests_test.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ const (
4040
etcdDataDir = "/var/lib/etcd"
4141
)
4242

43+
var cpVersion = kubeadmconstants.MinimumControlPlaneVersion.WithPreRelease("beta.2").String()
44+
4345
func TestGetStaticPodSpecs(t *testing.T) {
4446

4547
// Creates a Master Configuration
@@ -574,10 +576,10 @@ func TestGetControllerManagerCommand(t *testing.T) {
574576
expected []string
575577
}{
576578
{
577-
name: "custom certs dir for v1.12.0-beta.2",
579+
name: "custom certs dir for " + cpVersion,
578580
cfg: &kubeadmapi.ClusterConfiguration{
579581
CertificatesDir: testCertsDir,
580-
KubernetesVersion: "v1.12.0-beta.2",
582+
KubernetesVersion: cpVersion,
581583
},
582584
expected: []string{
583585
"kube-controller-manager",
@@ -597,11 +599,11 @@ func TestGetControllerManagerCommand(t *testing.T) {
597599
},
598600
},
599601
{
600-
name: "custom cluster-cidr for v1.12.0-beta.2",
602+
name: "custom cluster-cidr for " + cpVersion,
601603
cfg: &kubeadmapi.ClusterConfiguration{
602604
Networking: kubeadmapi.Networking{PodSubnet: "10.0.1.15/16"},
603605
CertificatesDir: testCertsDir,
604-
KubernetesVersion: "v1.12.0-beta.2",
606+
KubernetesVersion: cpVersion,
605607
},
606608
expected: []string{
607609
"kube-controller-manager",
@@ -624,14 +626,14 @@ func TestGetControllerManagerCommand(t *testing.T) {
624626
},
625627
},
626628
{
627-
name: "custom extra-args for v1.12.0-beta.2",
629+
name: "custom extra-args for " + cpVersion,
628630
cfg: &kubeadmapi.ClusterConfiguration{
629631
Networking: kubeadmapi.Networking{PodSubnet: "10.0.1.15/16"},
630632
ControllerManager: kubeadmapi.ControlPlaneComponent{
631633
ExtraArgs: map[string]string{"node-cidr-mask-size": "20"},
632634
},
633635
CertificatesDir: testCertsDir,
634-
KubernetesVersion: "v1.12.0-beta.2",
636+
KubernetesVersion: cpVersion,
635637
},
636638
expected: []string{
637639
"kube-controller-manager",
@@ -654,11 +656,11 @@ func TestGetControllerManagerCommand(t *testing.T) {
654656
},
655657
},
656658
{
657-
name: "custom IPv6 networking for v1.12.0-beta.2",
659+
name: "custom IPv6 networking for " + cpVersion,
658660
cfg: &kubeadmapi.ClusterConfiguration{
659661
Networking: kubeadmapi.Networking{PodSubnet: "2001:db8::/64"},
660662
CertificatesDir: testCertsDir,
661-
KubernetesVersion: "v1.12.0-beta.2",
663+
KubernetesVersion: cpVersion,
662664
},
663665
expected: []string{
664666
"kube-controller-manager",
@@ -872,11 +874,11 @@ func TestGetControllerManagerCommandExternalCA(t *testing.T) {
872874
expectedArgFunc func(dir string) []string
873875
}{
874876
{
875-
name: "caKeyPresent-false for v1.12.0-beta.2",
877+
name: "caKeyPresent-false for " + cpVersion,
876878
cfg: &kubeadmapi.InitConfiguration{
877879
LocalAPIEndpoint: kubeadmapi.APIEndpoint{AdvertiseAddress: "1.2.3.4"},
878880
ClusterConfiguration: kubeadmapi.ClusterConfiguration{
879-
KubernetesVersion: "v1.12.0-beta.2",
881+
KubernetesVersion: cpVersion,
880882
Networking: kubeadmapi.Networking{ServiceSubnet: "10.96.0.0/12", DNSDomain: "cluster.local"},
881883
},
882884
},
@@ -901,11 +903,11 @@ func TestGetControllerManagerCommandExternalCA(t *testing.T) {
901903
},
902904
},
903905
{
904-
name: "caKeyPresent true for v1.12.0-beta.2",
906+
name: "caKeyPresent true for " + cpVersion,
905907
cfg: &kubeadmapi.InitConfiguration{
906908
LocalAPIEndpoint: kubeadmapi.APIEndpoint{AdvertiseAddress: "1.2.3.4"},
907909
ClusterConfiguration: kubeadmapi.ClusterConfiguration{
908-
KubernetesVersion: "v1.12.0-beta.2",
910+
KubernetesVersion: cpVersion,
909911
Networking: kubeadmapi.Networking{ServiceSubnet: "10.96.0.0/12", DNSDomain: "cluster.local"},
910912
},
911913
},

cmd/kubeadm/app/phases/upgrade/compute_test.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ func TestGetAvailableUpgrades(t *testing.T) {
429429
stablePatchVersion: "v1.10.5",
430430
stableVersion: "v1.10.5",
431431
latestDevBranchVersion: "v1.11.0-beta.1",
432-
latestVersion: "v1.12.0-alpha.0",
432+
latestVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.0").String(),
433433
},
434434
beforeDNSType: kubeadmapi.CoreDNS,
435435
beforeDNSVersion: "1.0.6",
@@ -470,7 +470,7 @@ func TestGetAvailableUpgrades(t *testing.T) {
470470
stablePatchVersion: "v1.10.5",
471471
stableVersion: "v1.10.5",
472472
latestDevBranchVersion: "v1.11.0-rc.1",
473-
latestVersion: "v1.12.0-alpha.1",
473+
latestVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.1").String(),
474474
},
475475
beforeDNSType: kubeadmapi.CoreDNS,
476476
beforeDNSVersion: "1.0.6",
@@ -511,7 +511,7 @@ func TestGetAvailableUpgrades(t *testing.T) {
511511
stablePatchVersion: "v1.10.5",
512512
stableVersion: "v1.10.5",
513513
latestDevBranchVersion: "v1.11.6-rc.1",
514-
latestVersion: "v1.12.1-alpha.0",
514+
latestVersion: constants.MinimumControlPlaneVersion.WithPatch(1).WithPreRelease("alpha.0").String(),
515515
},
516516
beforeDNSType: kubeadmapi.CoreDNS,
517517
beforeDNSVersion: "1.0.6",
@@ -552,7 +552,7 @@ func TestGetAvailableUpgrades(t *testing.T) {
552552
stablePatchVersion: "v1.10.5",
553553
stableVersion: "v1.10.5",
554554
latestDevBranchVersion: "v1.11.0-rc.1",
555-
latestVersion: "v1.12.0-alpha.2",
555+
latestVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.2").String(),
556556
},
557557
beforeDNSType: kubeadmapi.CoreDNS,
558558
beforeDNSVersion: "1.0.6",
@@ -591,8 +591,8 @@ func TestGetAvailableUpgrades(t *testing.T) {
591591
EtcdVersion: "3.1.12",
592592
},
593593
After: ClusterState{
594-
KubeVersion: "v1.12.0-alpha.2",
595-
KubeadmVersion: "v1.12.0-alpha.2",
594+
KubeVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.2").String(),
595+
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPreRelease("alpha.2").String(),
596596
DNSType: kubeadmapi.CoreDNS,
597597
DNSVersion: "1.2.6",
598598
EtcdVersion: "3.2.24",
@@ -625,7 +625,7 @@ func TestGetAvailableUpgrades(t *testing.T) {
625625
clusterVersion: "v1.11.1",
626626
kubeletVersion: "v1.11.0",
627627
kubeadmVersion: "v1.11.1",
628-
}, "v1.12.1"),
628+
}, constants.MinimumControlPlaneVersion.WithPatch(1).String()),
629629
etcdClient: etcdClient,
630630
beforeDNSType: kubeadmapi.CoreDNS,
631631
beforeDNSVersion: "1.0.6",
@@ -644,8 +644,8 @@ func TestGetAvailableUpgrades(t *testing.T) {
644644
EtcdVersion: "3.1.12",
645645
},
646646
After: ClusterState{
647-
KubeVersion: "v1.12.1",
648-
KubeadmVersion: "v1.12.1",
647+
KubeVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
648+
KubeadmVersion: constants.MinimumControlPlaneVersion.WithPatch(1).String(),
649649
DNSType: kubeadmapi.CoreDNS,
650650
DNSVersion: "1.2.6",
651651
EtcdVersion: "3.2.24",
@@ -658,10 +658,10 @@ func TestGetAvailableUpgrades(t *testing.T) {
658658
vg: &fakeVersionGetter{
659659
clusterVersion: "v1.11.2",
660660
kubeletVersion: "v1.11.2", // the kubelet are on the same version as the control plane
661-
kubeadmVersion: "v1.12.0",
661+
kubeadmVersion: constants.MinimumControlPlaneVersion.String(),
662662

663-
stablePatchVersion: "v1.12.0",
664-
stableVersion: "v1.12.0",
663+
stablePatchVersion: constants.MinimumControlPlaneVersion.String(),
664+
stableVersion: constants.MinimumControlPlaneVersion.String(),
665665
},
666666
etcdClient: etcdClient,
667667
beforeDNSType: kubeadmapi.KubeDNS,
@@ -675,14 +675,14 @@ func TestGetAvailableUpgrades(t *testing.T) {
675675
KubeletVersions: map[string]uint16{
676676
"v1.11.2": 1,
677677
},
678-
KubeadmVersion: "v1.12.0",
678+
KubeadmVersion: constants.MinimumControlPlaneVersion.String(),
679679
DNSType: kubeadmapi.KubeDNS,
680680
DNSVersion: "1.14.7",
681681
EtcdVersion: "3.1.12",
682682
},
683683
After: ClusterState{
684-
KubeVersion: "v1.12.0",
685-
KubeadmVersion: "v1.12.0",
684+
KubeVersion: constants.MinimumControlPlaneVersion.String(),
685+
KubeadmVersion: constants.MinimumControlPlaneVersion.String(),
686686
DNSType: kubeadmapi.CoreDNS,
687687
DNSVersion: "1.2.6",
688688
EtcdVersion: "3.2.24",
@@ -695,10 +695,10 @@ func TestGetAvailableUpgrades(t *testing.T) {
695695
vg: &fakeVersionGetter{
696696
clusterVersion: "v1.11.2",
697697
kubeletVersion: "v1.11.2", // the kubelet are on the same version as the control plane
698-
kubeadmVersion: "v1.12.0",
698+
kubeadmVersion: constants.MinimumControlPlaneVersion.String(),
699699

700-
stablePatchVersion: "v1.12.0",
701-
stableVersion: "v1.12.0",
700+
stablePatchVersion: constants.MinimumControlPlaneVersion.String(),
701+
stableVersion: constants.MinimumControlPlaneVersion.String(),
702702
},
703703
etcdClient: etcdClient,
704704
beforeDNSType: kubeadmapi.KubeDNS,
@@ -712,14 +712,14 @@ func TestGetAvailableUpgrades(t *testing.T) {
712712
KubeletVersions: map[string]uint16{
713713
"v1.11.2": 1,
714714
},
715-
KubeadmVersion: "v1.12.0",
715+
KubeadmVersion: constants.MinimumControlPlaneVersion.String(),
716716
DNSType: kubeadmapi.KubeDNS,
717717
DNSVersion: "1.14.7",
718718
EtcdVersion: "3.1.12",
719719
},
720720
After: ClusterState{
721-
KubeVersion: "v1.12.0",
722-
KubeadmVersion: "v1.12.0",
721+
KubeVersion: constants.MinimumControlPlaneVersion.String(),
722+
KubeadmVersion: constants.MinimumControlPlaneVersion.String(),
723723
DNSType: kubeadmapi.KubeDNS,
724724
DNSVersion: "1.14.13",
725725
EtcdVersion: "3.2.24",
@@ -860,7 +860,7 @@ func TestGetBranchFromVersion(t *testing.T) {
860860
expectedVersion: "1.9",
861861
},
862862
{
863-
version: "v1.12.5",
863+
version: constants.MinimumControlPlaneVersion.WithPatch(5).String(),
864864
expectedVersion: "1.12",
865865
},
866866
{

0 commit comments

Comments
 (0)