mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #88347 from neolit123/1.18-kubeadm-update-constants
kubeadm: update constants for 1.18
This commit is contained in:
commit
58596b2bf5
@ -27,6 +27,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
"text/template"
|
||||||
|
|
||||||
"github.com/lithammer/dedent"
|
"github.com/lithammer/dedent"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -45,13 +46,16 @@ const (
|
|||||||
defaultNumberOfImages = 8
|
defaultNumberOfImages = 8
|
||||||
)
|
)
|
||||||
|
|
||||||
// dummyKubernetesVersion is just used for unit testing, in order to not make
|
var (
|
||||||
// kubeadm lookup dl.k8s.io to resolve what the latest stable release is
|
// dummyKubernetesVersion and dummyKubernetesVersionStr are just used for unit testing, in order to not make
|
||||||
var dummyKubernetesVersion = constants.MinimumControlPlaneVersion.String()
|
// kubeadm lookup dl.k8s.io to resolve what the latest stable release is
|
||||||
|
dummyKubernetesVersion = constants.MinimumControlPlaneVersion
|
||||||
|
dummyKubernetesVersionStr = dummyKubernetesVersion.String()
|
||||||
|
)
|
||||||
|
|
||||||
func TestNewCmdConfigImagesList(t *testing.T) {
|
func TestNewCmdConfigImagesList(t *testing.T) {
|
||||||
var output bytes.Buffer
|
var output bytes.Buffer
|
||||||
mockK8sVersion := dummyKubernetesVersion
|
mockK8sVersion := dummyKubernetesVersionStr
|
||||||
images := NewCmdConfigImagesList(&output, &mockK8sVersion)
|
images := NewCmdConfigImagesList(&output, &mockK8sVersion)
|
||||||
if err := images.RunE(nil, nil); err != nil {
|
if err := images.RunE(nil, nil); err != nil {
|
||||||
t.Fatalf("Error from running the images command: %v", err)
|
t.Fatalf("Error from running the images command: %v", err)
|
||||||
@ -116,7 +120,7 @@ func TestImagesListRunWithCustomConfigPath(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
i, err := NewImagesList(configFilePath, &kubeadmapiv1beta2.ClusterConfiguration{
|
i, err := NewImagesList(configFilePath, &kubeadmapiv1beta2.ClusterConfiguration{
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed getting the kubeadm images command: %v", err)
|
t.Fatalf("Failed getting the kubeadm images command: %v", err)
|
||||||
@ -149,7 +153,7 @@ func TestConfigImagesListRunWithoutPath(t *testing.T) {
|
|||||||
name: "empty config",
|
name: "empty config",
|
||||||
expectedImages: defaultNumberOfImages,
|
expectedImages: defaultNumberOfImages,
|
||||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -160,21 +164,21 @@ func TestConfigImagesListRunWithoutPath(t *testing.T) {
|
|||||||
Endpoints: []string{"https://some.etcd.com:2379"},
|
Endpoints: []string{"https://some.etcd.com:2379"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
},
|
},
|
||||||
expectedImages: defaultNumberOfImages - 1,
|
expectedImages: defaultNumberOfImages - 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "coredns enabled",
|
name: "coredns enabled",
|
||||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
},
|
},
|
||||||
expectedImages: defaultNumberOfImages,
|
expectedImages: defaultNumberOfImages,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "kube-dns enabled",
|
name: "kube-dns enabled",
|
||||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
DNS: kubeadmapiv1beta2.DNS{
|
DNS: kubeadmapiv1beta2.DNS{
|
||||||
Type: kubeadmapiv1beta2.KubeDNS,
|
Type: kubeadmapiv1beta2.KubeDNS,
|
||||||
},
|
},
|
||||||
@ -210,6 +214,23 @@ func TestConfigImagesListRunWithoutPath(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestConfigImagesListOutput(t *testing.T) {
|
func TestConfigImagesListOutput(t *testing.T) {
|
||||||
|
|
||||||
|
etcdVersion, ok := constants.SupportedEtcdVersion[uint8(dummyKubernetesVersion.Minor())]
|
||||||
|
if !ok {
|
||||||
|
t.Fatalf("cannot determine etcd version for Kubernetes version %s", dummyKubernetesVersionStr)
|
||||||
|
}
|
||||||
|
versionMapping := struct {
|
||||||
|
EtcdVersion string
|
||||||
|
KubeVersion string
|
||||||
|
PauseVersion string
|
||||||
|
CoreDNSVersion string
|
||||||
|
}{
|
||||||
|
EtcdVersion: etcdVersion,
|
||||||
|
KubeVersion: "v" + dummyKubernetesVersionStr,
|
||||||
|
PauseVersion: constants.PauseVersion,
|
||||||
|
CoreDNSVersion: constants.CoreDNSVersion,
|
||||||
|
}
|
||||||
|
|
||||||
testcases := []struct {
|
testcases := []struct {
|
||||||
name string
|
name string
|
||||||
cfg kubeadmapiv1beta2.ClusterConfiguration
|
cfg kubeadmapiv1beta2.ClusterConfiguration
|
||||||
@ -219,35 +240,35 @@ func TestConfigImagesListOutput(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "text output",
|
name: "text output",
|
||||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
},
|
},
|
||||||
outputFormat: "text",
|
outputFormat: "text",
|
||||||
expectedOutput: `k8s.gcr.io/kube-apiserver:v1.16.0
|
expectedOutput: `k8s.gcr.io/kube-apiserver:{{.KubeVersion}}
|
||||||
k8s.gcr.io/kube-controller-manager:v1.16.0
|
k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}
|
||||||
k8s.gcr.io/kube-scheduler:v1.16.0
|
k8s.gcr.io/kube-scheduler:{{.KubeVersion}}
|
||||||
k8s.gcr.io/kube-proxy:v1.16.0
|
k8s.gcr.io/kube-proxy:{{.KubeVersion}}
|
||||||
k8s.gcr.io/pause:3.2
|
k8s.gcr.io/pause:{{.PauseVersion}}
|
||||||
k8s.gcr.io/etcd:3.3.17-0
|
k8s.gcr.io/etcd:{{.EtcdVersion}}
|
||||||
k8s.gcr.io/coredns:1.6.5
|
k8s.gcr.io/coredns:{{.CoreDNSVersion}}
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "JSON output",
|
name: "JSON output",
|
||||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
},
|
},
|
||||||
outputFormat: "json",
|
outputFormat: "json",
|
||||||
expectedOutput: `{
|
expectedOutput: `{
|
||||||
"kind": "Images",
|
"kind": "Images",
|
||||||
"apiVersion": "output.kubeadm.k8s.io/v1alpha1",
|
"apiVersion": "output.kubeadm.k8s.io/v1alpha1",
|
||||||
"images": [
|
"images": [
|
||||||
"k8s.gcr.io/kube-apiserver:v1.16.0",
|
"k8s.gcr.io/kube-apiserver:{{.KubeVersion}}",
|
||||||
"k8s.gcr.io/kube-controller-manager:v1.16.0",
|
"k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}",
|
||||||
"k8s.gcr.io/kube-scheduler:v1.16.0",
|
"k8s.gcr.io/kube-scheduler:{{.KubeVersion}}",
|
||||||
"k8s.gcr.io/kube-proxy:v1.16.0",
|
"k8s.gcr.io/kube-proxy:{{.KubeVersion}}",
|
||||||
"k8s.gcr.io/pause:3.2",
|
"k8s.gcr.io/pause:{{.PauseVersion}}",
|
||||||
"k8s.gcr.io/etcd:3.3.17-0",
|
"k8s.gcr.io/etcd:{{.EtcdVersion}}",
|
||||||
"k8s.gcr.io/coredns:1.6.5"
|
"k8s.gcr.io/coredns:{{.CoreDNSVersion}}"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
@ -255,44 +276,44 @@ k8s.gcr.io/coredns:1.6.5
|
|||||||
{
|
{
|
||||||
name: "YAML output",
|
name: "YAML output",
|
||||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
},
|
},
|
||||||
outputFormat: "yaml",
|
outputFormat: "yaml",
|
||||||
expectedOutput: `apiVersion: output.kubeadm.k8s.io/v1alpha1
|
expectedOutput: `apiVersion: output.kubeadm.k8s.io/v1alpha1
|
||||||
images:
|
images:
|
||||||
- k8s.gcr.io/kube-apiserver:v1.16.0
|
- k8s.gcr.io/kube-apiserver:{{.KubeVersion}}
|
||||||
- k8s.gcr.io/kube-controller-manager:v1.16.0
|
- k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}
|
||||||
- k8s.gcr.io/kube-scheduler:v1.16.0
|
- k8s.gcr.io/kube-scheduler:{{.KubeVersion}}
|
||||||
- k8s.gcr.io/kube-proxy:v1.16.0
|
- k8s.gcr.io/kube-proxy:{{.KubeVersion}}
|
||||||
- k8s.gcr.io/pause:3.2
|
- k8s.gcr.io/pause:{{.PauseVersion}}
|
||||||
- k8s.gcr.io/etcd:3.3.17-0
|
- k8s.gcr.io/etcd:{{.EtcdVersion}}
|
||||||
- k8s.gcr.io/coredns:1.6.5
|
- k8s.gcr.io/coredns:{{.CoreDNSVersion}}
|
||||||
kind: Images
|
kind: Images
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "go-template output",
|
name: "go-template output",
|
||||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
},
|
},
|
||||||
outputFormat: `go-template={{range .images}}{{.}}{{"\n"}}{{end}}`,
|
outputFormat: `go-template={{range .images}}{{.}}{{"\n"}}{{end}}`,
|
||||||
expectedOutput: `k8s.gcr.io/kube-apiserver:v1.16.0
|
expectedOutput: `k8s.gcr.io/kube-apiserver:{{.KubeVersion}}
|
||||||
k8s.gcr.io/kube-controller-manager:v1.16.0
|
k8s.gcr.io/kube-controller-manager:{{.KubeVersion}}
|
||||||
k8s.gcr.io/kube-scheduler:v1.16.0
|
k8s.gcr.io/kube-scheduler:{{.KubeVersion}}
|
||||||
k8s.gcr.io/kube-proxy:v1.16.0
|
k8s.gcr.io/kube-proxy:{{.KubeVersion}}
|
||||||
k8s.gcr.io/pause:3.2
|
k8s.gcr.io/pause:{{.PauseVersion}}
|
||||||
k8s.gcr.io/etcd:3.3.17-0
|
k8s.gcr.io/etcd:{{.EtcdVersion}}
|
||||||
k8s.gcr.io/coredns:1.6.5
|
k8s.gcr.io/coredns:{{.CoreDNSVersion}}
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "JSONPATH output",
|
name: "JSONPATH output",
|
||||||
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
cfg: kubeadmapiv1beta2.ClusterConfiguration{
|
||||||
KubernetesVersion: dummyKubernetesVersion,
|
KubernetesVersion: dummyKubernetesVersionStr,
|
||||||
},
|
},
|
||||||
outputFormat: `jsonpath={range.images[*]}{@} {end}`,
|
outputFormat: `jsonpath={range.images[*]}{@} {end}`,
|
||||||
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 " +
|
expectedOutput: "k8s.gcr.io/kube-apiserver:{{.KubeVersion}} k8s.gcr.io/kube-controller-manager:{{.KubeVersion}} k8s.gcr.io/kube-scheduler:{{.KubeVersion}} " +
|
||||||
"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 ",
|
"k8s.gcr.io/kube-proxy:{{.KubeVersion}} k8s.gcr.io/pause:{{.PauseVersion}} k8s.gcr.io/etcd:{{.EtcdVersion}} k8s.gcr.io/coredns:{{.CoreDNSVersion}} ",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,13 +330,21 @@ k8s.gcr.io/coredns:1.6.5
|
|||||||
t.Fatalf("did not expect an error while creating the Images command: %v", err)
|
t.Fatalf("did not expect an error while creating the Images command: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var output bytes.Buffer
|
var output, expectedOutput bytes.Buffer
|
||||||
|
|
||||||
if err = i.Run(&output, printer); err != nil {
|
if err = i.Run(&output, printer); err != nil {
|
||||||
t.Fatalf("did not expect an error running the Images command: %v", err)
|
t.Fatalf("did not expect an error running the Images command: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if output.String() != tc.expectedOutput {
|
tmpl, err := template.New("test").Parse(tc.expectedOutput)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("could not create template: %v", err)
|
||||||
|
}
|
||||||
|
if err = tmpl.Execute(&expectedOutput, versionMapping); err != nil {
|
||||||
|
t.Fatalf("could not execute template: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if output.String() != expectedOutput.String() {
|
||||||
t.Fatalf("unexpected output:\n|%s|\nexpected:\n|%s|\n", output.String(), tc.expectedOutput)
|
t.Fatalf("unexpected output:\n|%s|\nexpected:\n|%s|\n", output.String(), tc.expectedOutput)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -411,13 +411,13 @@ var (
|
|||||||
ControlPlaneComponents = []string{KubeAPIServer, KubeControllerManager, KubeScheduler}
|
ControlPlaneComponents = []string{KubeAPIServer, KubeControllerManager, KubeScheduler}
|
||||||
|
|
||||||
// MinimumControlPlaneVersion specifies the minimum control plane version kubeadm can deploy
|
// MinimumControlPlaneVersion specifies the minimum control plane version kubeadm can deploy
|
||||||
MinimumControlPlaneVersion = version.MustParseSemantic("v1.16.0")
|
MinimumControlPlaneVersion = version.MustParseSemantic("v1.17.0")
|
||||||
|
|
||||||
// MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports
|
// MinimumKubeletVersion specifies the minimum version of kubelet which kubeadm supports
|
||||||
MinimumKubeletVersion = version.MustParseSemantic("v1.16.0")
|
MinimumKubeletVersion = version.MustParseSemantic("v1.17.0")
|
||||||
|
|
||||||
// CurrentKubernetesVersion specifies current Kubernetes version supported by kubeadm
|
// CurrentKubernetesVersion specifies current Kubernetes version supported by kubeadm
|
||||||
CurrentKubernetesVersion = version.MustParseSemantic("v1.17.0")
|
CurrentKubernetesVersion = version.MustParseSemantic("v1.18.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{
|
||||||
@ -427,6 +427,7 @@ var (
|
|||||||
16: "3.3.17-0",
|
16: "3.3.17-0",
|
||||||
17: "3.4.3-0",
|
17: "3.4.3-0",
|
||||||
18: "3.4.3-0",
|
18: "3.4.3-0",
|
||||||
|
19: "3.4.3-0",
|
||||||
}
|
}
|
||||||
|
|
||||||
// KubeadmCertsClusterRoleName sets the name for the ClusterRole that allows
|
// KubeadmCertsClusterRoleName sets the name for the ClusterRole that allows
|
||||||
|
Loading…
Reference in New Issue
Block a user