Skip to content

Commit 58596b2

Browse files
authored
Merge pull request kubernetes#88347 from neolit123/1.18-kubeadm-update-constants
kubeadm: update constants for 1.18
2 parents cda2f5d + ad8bf3c commit 58596b2

File tree

2 files changed

+79
-49
lines changed

2 files changed

+79
-49
lines changed

cmd/kubeadm/app/cmd/config_test.go

Lines changed: 75 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"sort"
2828
"strings"
2929
"testing"
30+
"text/template"
3031

3132
"github.com/lithammer/dedent"
3233
"github.com/spf13/cobra"
@@ -45,13 +46,16 @@ const (
4546
defaultNumberOfImages = 8
4647
)
4748

48-
// dummyKubernetesVersion is just used for unit testing, in order to not make
49-
// kubeadm lookup dl.k8s.io to resolve what the latest stable release is
50-
var dummyKubernetesVersion = constants.MinimumControlPlaneVersion.String()
49+
var (
50+
// dummyKubernetesVersion and dummyKubernetesVersionStr are just used for unit testing, in order to not make
51+
// kubeadm lookup dl.k8s.io to resolve what the latest stable release is
52+
dummyKubernetesVersion = constants.MinimumControlPlaneVersion
53+
dummyKubernetesVersionStr = dummyKubernetesVersion.String()
54+
)
5155

5256
func TestNewCmdConfigImagesList(t *testing.T) {
5357
var output bytes.Buffer
54-
mockK8sVersion := dummyKubernetesVersion
58+
mockK8sVersion := dummyKubernetesVersionStr
5559
images := NewCmdConfigImagesList(&output, &mockK8sVersion)
5660
if err := images.RunE(nil, nil); err != nil {
5761
t.Fatalf("Error from running the images command: %v", err)
@@ -116,7 +120,7 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) {
116120
}
117121

118122
i, err := NewImagesList(configFilePath, &kubeadmapiv1beta2.ClusterConfiguration{
119-
KubernetesVersion: dummyKubernetesVersion,
123+
KubernetesVersion: dummyKubernetesVersionStr,
120124
})
121125
if err != nil {
122126
t.Fatalf("Failed getting the kubeadm images command: %v", err)
@@ -149,7 +153,7 @@ func TestConfigImagesListRunWithoutPath(t *testing.T) {
149153
name: "empty config",
150154
expectedImages: defaultNumberOfImages,
151155
cfg: kubeadmapiv1beta2.ClusterConfiguration{
152-
KubernetesVersion: dummyKubernetesVersion,
156+
KubernetesVersion: dummyKubernetesVersionStr,
153157
},
154158
},
155159
{
@@ -160,21 +164,21 @@ func TestConfigImagesListRunWithoutPath(t *testing.T) {
160164
Endpoints: []string{"https://some.etcd.com:2379"},
161165
},
162166
},
163-
KubernetesVersion: dummyKubernetesVersion,
167+
KubernetesVersion: dummyKubernetesVersionStr,
164168
},
165169
expectedImages: defaultNumberOfImages - 1,
166170
},
167171
{
168172
name: "coredns enabled",
169173
cfg: kubeadmapiv1beta2.ClusterConfiguration{
170-
KubernetesVersion: dummyKubernetesVersion,
174+
KubernetesVersion: dummyKubernetesVersionStr,
171175
},
172176
expectedImages: defaultNumberOfImages,
173177
},
174178
{
175179
name: "kube-dns enabled",
176180
cfg: kubeadmapiv1beta2.ClusterConfiguration{
177-
KubernetesVersion: dummyKubernetesVersion,
181+
KubernetesVersion: dummyKubernetesVersionStr,
178182
DNS: kubeadmapiv1beta2.DNS{
179183
Type: kubeadmapiv1beta2.KubeDNS,
180184
},
@@ -210,6 +214,23 @@ func TestConfigImagesListRunWithoutPath(t *testing.T) {
210214
}
211215

212216
func TestConfigImagesListOutput(t *testing.T) {
217+
218+
etcdVersion, ok := constants.SupportedEtcdVersion[uint8(dummyKubernetesVersion.Minor())]
219+
if !ok {
220+
t.Fatalf("cannot determine etcd version for Kubernetes version %s", dummyKubernetesVersionStr)
221+
}
222+
versionMapping := struct {
223+
EtcdVersion string
224+
KubeVersion string
225+
PauseVersion string
226+
CoreDNSVersion string
227+
}{
228+
EtcdVersion: etcdVersion,
229+
KubeVersion: "v" + dummyKubernetesVersionStr,
230+
PauseVersion: constants.PauseVersion,
231+
CoreDNSVersion: constants.CoreDNSVersion,
232+
}
233+
213234
testcases := []struct {
214235
name string
215236
cfg kubeadmapiv1beta2.ClusterConfiguration
@@ -219,80 +240,80 @@ func TestConfigImagesListOutput(t *testing.T) {
219240
{
220241
name: "text output",
221242
cfg: kubeadmapiv1beta2.ClusterConfiguration{
222-
KubernetesVersion: dummyKubernetesVersion,
243+
KubernetesVersion: dummyKubernetesVersionStr,
223244
},
224245
outputFormat: "text",
225-
expectedOutput: `k8s.gcr.io/kube-apiserver:v1.16.0
226-
k8s.gcr.io/kube-controller-manager:v1.16.0
227-
k8s.gcr.io/kube-scheduler:v1.16.0
228-
k8s.gcr.io/kube-proxy:v1.16.0
229-
k8s.gcr.io/pause:3.2
230-
k8s.gcr.io/etcd:3.3.17-0
231-
k8s.gcr.io/coredns:1.6.5
246+
expectedOutput: `k8s.gcr.io/kube-apiserver:{{.KubeVersion}}
247+
k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}
248+
k8s.gcr.io/kube-scheduler:{{.KubeVersion}}
249+
k8s.gcr.io/kube-proxy:{{.KubeVersion}}
250+
k8s.gcr.io/pause:{{.PauseVersion}}
251+
k8s.gcr.io/etcd:{{.EtcdVersion}}
252+
k8s.gcr.io/coredns:{{.CoreDNSVersion}}
232253
`,
233254
},
234255
{
235256
name: "JSON output",
236257
cfg: kubeadmapiv1beta2.ClusterConfiguration{
237-
KubernetesVersion: dummyKubernetesVersion,
258+
KubernetesVersion: dummyKubernetesVersionStr,
238259
},
239260
outputFormat: "json",
240261
expectedOutput: `{
241262
"kind": "Images",
242263
"apiVersion": "output.kubeadm.k8s.io/v1alpha1",
243264
"images": [
244-
"k8s.gcr.io/kube-apiserver:v1.16.0",
245-
"k8s.gcr.io/kube-controller-manager:v1.16.0",
246-
"k8s.gcr.io/kube-scheduler:v1.16.0",
247-
"k8s.gcr.io/kube-proxy:v1.16.0",
248-
"k8s.gcr.io/pause:3.2",
249-
"k8s.gcr.io/etcd:3.3.17-0",
250-
"k8s.gcr.io/coredns:1.6.5"
265+
"k8s.gcr.io/kube-apiserver:{{.KubeVersion}}",
266+
"k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}",
267+
"k8s.gcr.io/kube-scheduler:{{.KubeVersion}}",
268+
"k8s.gcr.io/kube-proxy:{{.KubeVersion}}",
269+
"k8s.gcr.io/pause:{{.PauseVersion}}",
270+
"k8s.gcr.io/etcd:{{.EtcdVersion}}",
271+
"k8s.gcr.io/coredns:{{.CoreDNSVersion}}"
251272
]
252273
}
253274
`,
254275
},
255276
{
256277
name: "YAML output",
257278
cfg: kubeadmapiv1beta2.ClusterConfiguration{
258-
KubernetesVersion: dummyKubernetesVersion,
279+
KubernetesVersion: dummyKubernetesVersionStr,
259280
},
260281
outputFormat: "yaml",
261282
expectedOutput: `apiVersion: output.kubeadm.k8s.io/v1alpha1
262283
images:
263-
- k8s.gcr.io/kube-apiserver:v1.16.0
264-
- k8s.gcr.io/kube-controller-manager:v1.16.0
265-
- k8s.gcr.io/kube-scheduler:v1.16.0
266-
- k8s.gcr.io/kube-proxy:v1.16.0
267-
- k8s.gcr.io/pause:3.2
268-
- k8s.gcr.io/etcd:3.3.17-0
269-
- k8s.gcr.io/coredns:1.6.5
284+
- k8s.gcr.io/kube-apiserver:{{.KubeVersion}}
285+
- k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}
286+
- k8s.gcr.io/kube-scheduler:{{.KubeVersion}}
287+
- k8s.gcr.io/kube-proxy:{{.KubeVersion}}
288+
- k8s.gcr.io/pause:{{.PauseVersion}}
289+
- k8s.gcr.io/etcd:{{.EtcdVersion}}
290+
- k8s.gcr.io/coredns:{{.CoreDNSVersion}}
270291
kind: Images
271292
`,
272293
},
273294
{
274295
name: "go-template output",
275296
cfg: kubeadmapiv1beta2.ClusterConfiguration{
276-
KubernetesVersion: dummyKubernetesVersion,
297+
KubernetesVersion: dummyKubernetesVersionStr,
277298
},
278299
outputFormat: `go-template={{range .images}}{{.}}{{"\n"}}{{end}}`,
279-
expectedOutput: `k8s.gcr.io/kube-apiserver:v1.16.0
280-
k8s.gcr.io/kube-controller-manager:v1.16.0
281-
k8s.gcr.io/kube-scheduler:v1.16.0
282-
k8s.gcr.io/kube-proxy:v1.16.0
283-
k8s.gcr.io/pause:3.2
284-
k8s.gcr.io/etcd:3.3.17-0
285-
k8s.gcr.io/coredns:1.6.5
300+
expectedOutput: `k8s.gcr.io/kube-apiserver:{{.KubeVersion}}
301+
k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}
302+
k8s.gcr.io/kube-scheduler:{{.KubeVersion}}
303+
k8s.gcr.io/kube-proxy:{{.KubeVersion}}
304+
k8s.gcr.io/pause:{{.PauseVersion}}
305+
k8s.gcr.io/etcd:{{.EtcdVersion}}
306+
k8s.gcr.io/coredns:{{.CoreDNSVersion}}
286307
`,
287308
},
288309
{
289310
name: "JSONPATH output",
290311
cfg: kubeadmapiv1beta2.ClusterConfiguration{
291-
KubernetesVersion: dummyKubernetesVersion,
312+
KubernetesVersion: dummyKubernetesVersionStr,
292313
},
293314
outputFormat: `jsonpath={range.images[*]}{@} {end}`,
294-
expectedOutput: "k8s.gcr.io/kube-apiserver:v1.16.0 k8s.gcr.io/kube-controller-manager:v1.16.0 k8s.gcr.io/kube-scheduler:v1.16.0 " +
295-
"k8s.gcr.io/kube-proxy:v1.16.0 k8s.gcr.io/pause:3.2 k8s.gcr.io/etcd:3.3.17-0 k8s.gcr.io/coredns:1.6.5 ",
315+
expectedOutput: "k8s.gcr.io/kube-apiserver:{{.KubeVersion}} k8s.gcr.io/kube-controller-manager:{{.KubeVersion}} k8s.gcr.io/kube-scheduler:{{.KubeVersion}} " +
316+
"k8s.gcr.io/kube-proxy:{{.KubeVersion}} k8s.gcr.io/pause:{{.PauseVersion}} k8s.gcr.io/etcd:{{.EtcdVersion}} k8s.gcr.io/coredns:{{.CoreDNSVersion}} ",
296317
},
297318
}
298319

@@ -309,13 +330,21 @@ k8s.gcr.io/coredns:1.6.5
309330
t.Fatalf("did not expect an error while creating the Images command: %v", err)
310331
}
311332

312-
var output bytes.Buffer
333+
var output, expectedOutput bytes.Buffer
313334

314335
if err = i.Run(&output, printer); err != nil {
315336
t.Fatalf("did not expect an error running the Images command: %v", err)
316337
}
317338

318-
if output.String() != tc.expectedOutput {
339+
tmpl, err := template.New("test").Parse(tc.expectedOutput)
340+
if err != nil {
341+
t.Fatalf("could not create template: %v", err)
342+
}
343+
if err = tmpl.Execute(&expectedOutput, versionMapping); err != nil {
344+
t.Fatalf("could not execute template: %v", err)
345+
}
346+
347+
if output.String() != expectedOutput.String() {
319348
t.Fatalf("unexpected output:\n|%s|\nexpected:\n|%s|\n", output.String(), tc.expectedOutput)
320349
}
321350
})

cmd/kubeadm/app/constants/constants.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -411,13 +411,13 @@ var (
411411
ControlPlaneComponents = []string{KubeAPIServer, KubeControllerManager, KubeScheduler}
412412

413413
// MinimumControlPlaneVersion specifies the minimum control plane version kubeadm can deploy
414-
MinimumControlPlaneVersion = version.MustParseSemantic("v1.16.0")
414+
MinimumControlPlaneVersion = version.MustParseSemantic("v1.17.0")
415415

416416
// MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports
417-
MinimumKubeletVersion = version.MustParseSemantic("v1.16.0")
417+
MinimumKubeletVersion = version.MustParseSemantic("v1.17.0")
418418

419419
// CurrentKubernetesVersion specifies current Kubernetes version supported by kubeadm
420-
CurrentKubernetesVersion = version.MustParseSemantic("v1.17.0")
420+
CurrentKubernetesVersion = version.MustParseSemantic("v1.18.0")
421421

422422
// SupportedEtcdVersion lists officially supported etcd versions with corresponding Kubernetes releases
423423
SupportedEtcdVersion = map[uint8]string{
@@ -427,6 +427,7 @@ var (
427427
16: "3.3.17-0",
428428
17: "3.4.3-0",
429429
18: "3.4.3-0",
430+
19: "3.4.3-0",
430431
}
431432

432433
// KubeadmCertsClusterRoleName sets the name for the ClusterRole that allows

0 commit comments

Comments
 (0)