diff --git a/hack/update/kubeadm_constants/update_kubeadm_constants.go b/hack/update/kubeadm_constants/update_kubeadm_constants.go index 88be4b4445..8f3f6d8393 100644 --- a/hack/update/kubeadm_constants/update_kubeadm_constants.go +++ b/hack/update/kubeadm_constants/update_kubeadm_constants.go @@ -19,8 +19,6 @@ package main import ( "bytes" "context" - "errors" - "flag" "fmt" "io" "net/http" @@ -30,6 +28,7 @@ import ( "text/template" "time" + "github.com/google/go-github/v43/github" "golang.org/x/mod/semver" "k8s.io/klog/v2" "k8s.io/minikube/hack/update" @@ -57,28 +56,39 @@ type Data struct { } func main() { + minver := constants.OldestKubernetesVersion - inputVersion := flag.Lookup("kubernetes-version").Value.String() + releases := []string{} - imageVersions := make([]string, 0) + ghc := github.NewClient(nil) - // set a context with defined timeout - ctx, cancel := context.WithTimeout(context.Background(), cxTimeout) - defer cancel() - if inputVersion == "latest" { - stableImageVersion, latestImageVersion, edgeImageVersion, err := getK8sVersions(ctx, "kubernetes", "kubernetes") + opts := &github.ListOptions{PerPage: 100} + for { + rls, resp, err := ghc.Repositories.ListReleases(context.Background(), "kubernetes", "kubernetes", opts) if err != nil { klog.Fatal(err) } - uniqueMM := filterLatestUniqueMM([]string{stableImageVersion, latestImageVersion, edgeImageVersion}) - imageVersions = append(imageVersions, uniqueMM...) - } else if semver.IsValid(inputVersion) { - imageVersions = append(imageVersions, inputVersion) - } else { - klog.Fatal(errors.New("invalid version")) + for _, rl := range rls { + ver := rl.GetTagName() + if !semver.IsValid(ver) { + continue + } + // skip out-of-range versions + if (minver != "" && semver.Compare(minver, ver) == 1) { + continue + } + releases = append([]string{ver}, releases...) + } + if resp.NextPage == 0 { + break + } + opts.Page = resp.NextPage } - for _, imageVersion := range imageVersions { + for _, imageVersion := range releases { + if _, ok := constants.KubeadmImages[imageVersion]; ok { + continue + } imageMapString, err := getKubeadmImagesMapString(imageVersion) if err != nil { klog.Fatalln(err) @@ -91,39 +101,13 @@ func main() { }, } - majorMinorVersion := semver.MajorMinor(imageVersion) - - if _, ok := constants.KubeadmImages[majorMinorVersion]; !ok { - data = Data{ImageMap: imageMapString} - schema[minikubeConstantsFilePath].Replace[`KubeadmImages = .*`] = - `KubeadmImages = map[string]map[string]string{ {{.ImageMap}}` - } else { - data = Data{ImageMap: strings.TrimLeft(imageMapString, "\n")} - versionIdentifier := fmt.Sprintf(`"%s": {[^}]+},`, majorMinorVersion) - schema[minikubeConstantsFilePath].Replace[versionIdentifier] = "{{.ImageMap}}" - } - + data = Data{ImageMap: imageMapString} + schema[minikubeConstantsFilePath].Replace[`KubeadmImages = .*`] = + `KubeadmImages = map[string]map[string]string{ {{.ImageMap}}` update.Apply(schema, data) } } -func filterLatestUniqueMM(versions []string) []string { - if len(versions) < 2 { - return versions - } - semver.Sort(versions) - uniqueMMVersions := []string{} - last := versions[0] - for _, ver := range versions { - if semver.MajorMinor(last) != semver.MajorMinor(ver) { - uniqueMMVersions = append(uniqueMMVersions, last) - } - last = ver - } - uniqueMMVersions = append(uniqueMMVersions, last) - return uniqueMMVersions -} - func getKubeadmImagesMapString(version string) (string, error) { url := fmt.Sprintf(kubeadmReleaseURL, version) fileName := fmt.Sprintf(kubeadmBinaryName, version) @@ -149,8 +133,7 @@ func getKubeadmImagesMapString(version string) (string, error) { func formatKubeadmImageList(version, data string) (string, error) { templateData := make(map[string]map[string]string) - majorMinorVersion := semver.MajorMinor(version) - templateData[majorMinorVersion] = make(map[string]string) + templateData[version] = make(map[string]string) lines := strings.Split(data, "\n") for _, line := range lines { imageTag := strings.Split(line, ":") @@ -161,7 +144,7 @@ func formatKubeadmImageList(version, data string) (string, error) { imageName := strings.Split(imageTag[0], "/") imageTag[0] = strings.Join(imageName[1:], "/") if !isKubeImage(imageTag[0]) { - templateData[majorMinorVersion][imageTag[0]] = imageTag[1] + templateData[version][imageTag[0]] = imageTag[1] } } @@ -221,18 +204,3 @@ func executeCommand(command string, args ...string) (string, error) { } return string(output), nil } - -// getK8sVersion returns Kubernetes versions. -func getK8sVersions(ctx context.Context, owner, repo string) (stable, latest, edge string, err error) { - // get Kubernetes versions from GitHub Releases - stable, latest, edge, err = update.GHReleases(ctx, owner, repo) - if err != nil { - return "", "", "", err - } - - if !semver.IsValid(stable) || !semver.IsValid(latest) || !semver.IsValid(edge) { - return "", "", "", fmt.Errorf("invalid release obtained stable : %s, latest : %s, edge: %s", stable, latest, edge) - } - - return stable, latest, edge, nil -} diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go index 7b8c2dcc04..4237d4cac3 100644 --- a/pkg/minikube/bootstrapper/images/images.go +++ b/pkg/minikube/bootstrapper/images/images.go @@ -44,15 +44,8 @@ func Pause(v semver.Version, mirror string) string { // Should match `PauseVersion` in: // https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/constants/constants.go // https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/constants/constants_unix.go - pv := "3.6" imageName := "pause" - majorMinorVersion := fmt.Sprintf("v%d.%d", v.Major, v.Minor) - - if pVersion, ok := constants.KubeadmImages[majorMinorVersion][imageName]; ok { - pv = pVersion - } else { - pv = findLatestTagFromRepository(fmt.Sprintf(tagURLTemplate, kubernetesRepo(mirror, v), imageName), pv) - } + pv := imageVersion(v, mirror, imageName, "3.6") return fmt.Sprintf("%s:%s", path.Join(kubernetesRepo(mirror, v), imageName), pv) } @@ -118,17 +111,10 @@ func coreDNS(v semver.Version, mirror string) string { // https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/constants/constants.go imageName := "coredns/coredns" - cv := "v1.8.6" if semver.MustParseRange("<1.21.0-alpha.1")(v) { imageName = "coredns" } - - majorMinorVersion := fmt.Sprintf("v%d.%d", v.Major, v.Minor) - if cVersion, ok := constants.KubeadmImages[majorMinorVersion][imageName]; ok { - cv = cVersion - } else { - cv = findLatestTagFromRepository(fmt.Sprintf(tagURLTemplate, kubernetesRepo(mirror, v), imageName), cv) - } + cv := imageVersion(v, mirror, imageName, "v1.8.6") if mirror == constants.AliyunMirror { imageName = "coredns" @@ -142,18 +128,20 @@ func etcd(v semver.Version, mirror string) string { // Note: changing this logic requires bumping the preload version // Should match `DefaultEtcdVersion` in: // https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/constants/constants.go - ev := "3.5.0-0" imageName := "etcd" - majorMinorVersion := fmt.Sprintf("v%d.%d", v.Major, v.Minor) - if eVersion, ok := constants.KubeadmImages[majorMinorVersion][imageName]; ok { - ev = eVersion - } else { - ev = findLatestTagFromRepository(fmt.Sprintf(tagURLTemplate, kubernetesRepo(mirror, v), imageName), ev) - } + ev := imageVersion(v, mirror, imageName, "3.5.0-0") return fmt.Sprintf("%s:%s", path.Join(kubernetesRepo(mirror, v), imageName), ev) } +func imageVersion(v semver.Version, mirror, imageName, defaultVersion string) string { + versionString := fmt.Sprintf("v%s", v.String()) + if ver, ok := constants.KubeadmImages[versionString][imageName]; ok { + return ver + } + return findLatestTagFromRepository(fmt.Sprintf(tagURLTemplate, kubernetesRepo(mirror, v), imageName), defaultVersion) +} + // auxiliary returns images that are helpful for running minikube func auxiliary(mirror string) []string { // Note: changing this list requires bumping the preload version diff --git a/pkg/minikube/bootstrapper/images/kubeadm_test.go b/pkg/minikube/bootstrapper/images/kubeadm_test.go index eba62f2561..cac1bc2672 100644 --- a/pkg/minikube/bootstrapper/images/kubeadm_test.go +++ b/pkg/minikube/bootstrapper/images/kubeadm_test.go @@ -34,83 +34,83 @@ func TestKubeadmImages(t *testing.T) { {"invalid", "", true, nil}, {"v0.0.1", "", true, nil}, // too old {"v2.0.0", "", true, nil}, // too new + {"v1.26.0-rc.0", "", false, []string{ + "registry.k8s.io/kube-apiserver:v1.26.0-rc.0", + "registry.k8s.io/kube-controller-manager:v1.26.0-rc.0", + "registry.k8s.io/kube-scheduler:v1.26.0-rc.0", + "registry.k8s.io/kube-proxy:v1.26.0-rc.0", + "registry.k8s.io/coredns/coredns:v1.9.3", + "registry.k8s.io/etcd:3.5.5-0", + "registry.k8s.io/pause:3.9", + "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), + }}, + {"v1.25.4", "", false, []string{ + "registry.k8s.io/kube-apiserver:v1.25.4", + "registry.k8s.io/kube-controller-manager:v1.25.4", + "registry.k8s.io/kube-scheduler:v1.25.4", + "registry.k8s.io/kube-proxy:v1.25.4", + "registry.k8s.io/coredns/coredns:v1.9.3", + "registry.k8s.io/etcd:3.5.5-0", + "registry.k8s.io/pause:3.8", + "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), + }}, {"v1.25.0", "", false, []string{ - "registry.k8s.io/kube-apiserver:v1.25.0", - "registry.k8s.io/kube-controller-manager:v1.25.0", - "registry.k8s.io/kube-scheduler:v1.25.0", "registry.k8s.io/kube-proxy:v1.25.0", + "registry.k8s.io/kube-scheduler:v1.25.0", + "registry.k8s.io/kube-controller-manager:v1.25.0", + "registry.k8s.io/kube-apiserver:v1.25.0", "registry.k8s.io/coredns/coredns:v1.9.3", "registry.k8s.io/etcd:3.5.4-0", "registry.k8s.io/pause:3.8", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), }}, + {"v1.25.0", "mirror.k8s.io", false, []string{ + "mirror.k8s.io/kube-proxy:v1.25.0", + "mirror.k8s.io/kube-scheduler:v1.25.0", + "mirror.k8s.io/kube-controller-manager:v1.25.0", + "mirror.k8s.io/kube-apiserver:v1.25.0", + "mirror.k8s.io/coredns/coredns:v1.9.3", + "mirror.k8s.io/etcd:3.5.4-0", + "mirror.k8s.io/pause:3.8", + "mirror.k8s.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), + }}, {"v1.24.0", "", false, []string{ - "k8s.gcr.io/kube-apiserver:v1.24.0", - "k8s.gcr.io/kube-controller-manager:v1.24.0", - "k8s.gcr.io/kube-scheduler:v1.24.0", "k8s.gcr.io/kube-proxy:v1.24.0", + "k8s.gcr.io/kube-scheduler:v1.24.0", + "k8s.gcr.io/kube-controller-manager:v1.24.0", + "k8s.gcr.io/kube-apiserver:v1.24.0", "k8s.gcr.io/coredns/coredns:v1.8.6", "k8s.gcr.io/etcd:3.5.3-0", "k8s.gcr.io/pause:3.7", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), }}, - {"v1.17.0", "", false, []string{ - "k8s.gcr.io/kube-proxy:v1.17.0", - "k8s.gcr.io/kube-scheduler:v1.17.0", - "k8s.gcr.io/kube-controller-manager:v1.17.0", - "k8s.gcr.io/kube-apiserver:v1.17.0", - "k8s.gcr.io/coredns:1.6.5", - "k8s.gcr.io/etcd:3.4.3-0", - "k8s.gcr.io/pause:3.1", + {"v1.23.0", "", false, []string{ + "k8s.gcr.io/kube-proxy:v1.23.0", + "k8s.gcr.io/kube-scheduler:v1.23.0", + "k8s.gcr.io/kube-controller-manager:v1.23.0", + "k8s.gcr.io/kube-apiserver:v1.23.0", + "k8s.gcr.io/coredns/coredns:v1.8.6", + "k8s.gcr.io/etcd:3.5.1-0", + "k8s.gcr.io/pause:3.6", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), }}, - {"v1.16.1", "mirror.k8s.io", false, []string{ - "mirror.k8s.io/kube-proxy:v1.16.1", - "mirror.k8s.io/kube-scheduler:v1.16.1", - "mirror.k8s.io/kube-controller-manager:v1.16.1", - "mirror.k8s.io/kube-apiserver:v1.16.1", - "mirror.k8s.io/coredns:1.6.2", - "mirror.k8s.io/etcd:3.3.15-0", - "mirror.k8s.io/pause:3.1", - "mirror.k8s.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - }}, - {"v1.15.0", "", false, []string{ - "k8s.gcr.io/kube-proxy:v1.15.0", - "k8s.gcr.io/kube-scheduler:v1.15.0", - "k8s.gcr.io/kube-controller-manager:v1.15.0", - "k8s.gcr.io/kube-apiserver:v1.15.0", - "k8s.gcr.io/coredns:1.3.1", - "k8s.gcr.io/etcd:3.3.10", - "k8s.gcr.io/pause:3.1", + {"v1.22.0", "", false, []string{ + "k8s.gcr.io/kube-proxy:v1.22.0", + "k8s.gcr.io/kube-scheduler:v1.22.0", + "k8s.gcr.io/kube-controller-manager:v1.22.0", + "k8s.gcr.io/kube-apiserver:v1.22.0", + "k8s.gcr.io/coredns/coredns:v1.8.4", + "k8s.gcr.io/etcd:3.5.0-0", + "k8s.gcr.io/pause:3.5", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), }}, - {"v1.14.0", "", false, []string{ - "k8s.gcr.io/kube-proxy:v1.14.0", - "k8s.gcr.io/kube-scheduler:v1.14.0", - "k8s.gcr.io/kube-controller-manager:v1.14.0", - "k8s.gcr.io/kube-apiserver:v1.14.0", - "k8s.gcr.io/coredns:1.3.1", - "k8s.gcr.io/etcd:3.3.10", - "k8s.gcr.io/pause:3.1", - "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - }}, - {"v1.13.0", "", false, []string{ - "k8s.gcr.io/kube-proxy:v1.13.0", - "k8s.gcr.io/kube-scheduler:v1.13.0", - "k8s.gcr.io/kube-controller-manager:v1.13.0", - "k8s.gcr.io/kube-apiserver:v1.13.0", - "k8s.gcr.io/coredns:1.2.6", - "k8s.gcr.io/etcd:3.2.24", - "k8s.gcr.io/pause:3.1", - "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), - }}, - {"v1.12.0", "", false, []string{ - "k8s.gcr.io/kube-proxy:v1.12.0", - "k8s.gcr.io/kube-scheduler:v1.12.0", - "k8s.gcr.io/kube-controller-manager:v1.12.0", - "k8s.gcr.io/kube-apiserver:v1.12.0", - "k8s.gcr.io/coredns:1.2.2", - "k8s.gcr.io/etcd:3.2.24", + {"v1.16.0", "", false, []string{ + "k8s.gcr.io/kube-proxy:v1.16.0", + "k8s.gcr.io/kube-scheduler:v1.16.0", + "k8s.gcr.io/kube-controller-manager:v1.16.0", + "k8s.gcr.io/kube-apiserver:v1.16.0", + "k8s.gcr.io/coredns:1.6.2", + "k8s.gcr.io/etcd:3.3.15-0", "k8s.gcr.io/pause:3.1", "gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(), }}, diff --git a/pkg/minikube/constants/constants_kubeadm_images.go b/pkg/minikube/constants/constants_kubeadm_images.go index 3dbed2fccc..7d38daf2d1 100644 --- a/pkg/minikube/constants/constants_kubeadm_images.go +++ b/pkg/minikube/constants/constants_kubeadm_images.go @@ -18,85 +18,1095 @@ package constants var ( KubeadmImages = map[string]map[string]string{ - "v1.26": { + "v1.26.0-rc.0": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.5-0", + "pause": "3.9", + }, + "v1.26.0-beta.0": { "coredns/coredns": "v1.9.3", "etcd": "3.5.5-0", "pause": "3.8", }, - "v1.25": { + "v1.25.4": { "coredns/coredns": "v1.9.3", - "etcd": "3.5.4-0", + "etcd": "3.5.5-0", "pause": "3.8", }, - "v1.24": { + "v1.24.8": { "coredns/coredns": "v1.8.6", - "etcd": "3.5.3-0", + "etcd": "3.5.5-0", "pause": "3.7", }, - "v1.23": { + "v1.23.14": { "coredns/coredns": "v1.8.6", - "etcd": "3.5.1-0", + "etcd": "3.5.5-0", "pause": "3.6", }, - "v1.22": { + "v1.22.16": { "coredns/coredns": "v1.8.4", "etcd": "3.5.0-0", "pause": "3.5", }, - "v1.21": { + "v1.26.0-alpha.3": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.5-0", + "pause": "3.8", + }, + "v1.25.3": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.8", + }, + "v1.24.7": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.23.13": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.26.0-alpha.2": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.5-0", + "pause": "3.8", + }, + "v1.25.2": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.8", + }, + "v1.24.6": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.23.12": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.15": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.26.0-alpha.1": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.5-0", + "pause": "3.8", + }, + "v1.25.1": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.8", + }, + "v1.24.5": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.23.11": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.14": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.25.0": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.8", + }, + "v1.24.4": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.23.10": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.13": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.25.0-rc.1": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.8", + }, + "v1.25.0-rc.0": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.8", + }, + "v1.25.0-beta.0": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.8", + }, + "v1.25.0-alpha.3": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.7", + }, + "v1.24.3": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.23.9": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.12": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.25.0-alpha.2": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.7", + }, + "v1.23.8": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.11": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.25.0-alpha.1": { + "coredns/coredns": "v1.9.3", + "etcd": "3.5.4-0", + "pause": "3.7", + }, + "v1.24.2": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.21.14": { "coredns/coredns": "v1.8.0", "etcd": "3.4.13-0", "pause": "3.4.1", }, - "v1.20": { + "v1.24.1": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.23.7": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.10": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.13": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.24.0": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.24.0-rc.1": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.24.0-rc.0": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.3-0", + "pause": "3.7", + }, + "v1.23.6": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.9": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.12": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.24.0-beta.0": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.7", + }, + "v1.24.0-alpha.4": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.23.5": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.8": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.11": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.23.4": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.7": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.10": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.24.0-alpha.3": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.24.0-alpha.2": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.23.3": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.23.2": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.6": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.9": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.15": { "coredns": "1.7.0", "etcd": "3.4.13-0", "pause": "3.2", }, - "v1.19": { + "v1.23.1": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.5": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.8": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.14": { "coredns": "1.7.0", - "etcd": "3.4.9-1", + "etcd": "3.4.13-0", "pause": "3.2", }, - "v1.18": { + "v1.24.0-alpha.1": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.23.0": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.23.0-rc.1": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.23.0-rc.0": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.23.0-beta.0": { + "coredns/coredns": "v1.8.6", + "etcd": "3.5.1-0", + "pause": "3.6", + }, + "v1.22.4": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.7": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.13": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.23.0-alpha.4": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.6", + }, + "v1.22.3": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.6": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.12": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.16": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.23.0-alpha.3": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.6", + }, + "v1.22.2": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.5": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.11": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.15": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.23.0-alpha.2": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.6", + }, + "v1.23.0-alpha.1": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.22.1": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.4": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.10": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.14": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.22.0": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.22.0-rc.0": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.21.3": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.9": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.13": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.22.0-beta.2": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.22.0-beta.1": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-0", + "pause": "3.5", + }, + "v1.22.0-beta.0": { + "coredns/coredns": "v1.8.4", + "etcd": "3.5.0-rc.0-0", + "pause": "3.5", + }, + "v1.21.2": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.8": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.12": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.20": { "coredns": "1.6.7", "etcd": "3.4.3-0", "pause": "3.2", }, - "v1.17": { + "v1.22.0-alpha.3": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-3", + "pause": "3.5", + }, + "v1.22.0-alpha.2": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-3", + "pause": "3.4.1", + }, + "v1.21.1": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.7": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.11": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.19": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.22.0-alpha.1": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.6": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.10": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.18": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.21.0": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.21.0-rc.0": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.5": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.9": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.17": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.21.0-beta.1": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.21.0-beta.0": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.20.4": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.20.3": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.8": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.16": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.21.0-alpha.3": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.4.1", + }, + "v1.21.0-alpha.2": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.21.0-alpha.1": { + "coredns/coredns": "v1.8.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.20.2": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.7": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.15": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.17": { "coredns": "1.6.5", "etcd": "3.4.3-0", "pause": "3.1", }, - "v1.16": { + "v1.20.1": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.6": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.14": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.16": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.19.5": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.13": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.15": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.20.0": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.20.0-rc.0": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.20.0-beta.2": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.12": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.19.4": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.17.14": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.20.0-beta.1": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.20.0-beta.0": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.20.0-alpha.3": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.10": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.13": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.19.3": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.20.0-alpha.2": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.20.0-alpha.1": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.19.2": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.18.9": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.12": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.19.1": { + "coredns": "1.7.0", + "etcd": "3.4.13-0", + "pause": "3.2", + }, + "v1.16.15": { "coredns": "1.6.2", "etcd": "3.3.15-0", "pause": "3.1", }, - "v1.15": { - "coredns": "1.3.1", - "etcd": "3.3.10", + "v1.19.0": { + "coredns": "1.7.0", + "etcd": "3.4.9-1", + "pause": "3.2", + }, + "v1.18.8": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.11": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", "pause": "3.1", }, - "v1.14": { - "coredns": "1.3.1", - "etcd": "3.3.10", + "v1.16.14": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", "pause": "3.1", }, - "v1.13": { - "coredns": "1.2.6", - "etcd": "3.2.24", + "v1.19.0-rc.4": { + "coredns": "1.7.0", + "etcd": "3.4.9-1", + "pause": "3.2", + }, + "v1.19.0-rc.3": { + "coredns": "1.7.0", + "etcd": "3.4.9-1", + "pause": "3.2", + }, + "v1.19.0-rc.2": { + "coredns": "1.7.0", + "etcd": "3.4.9-1", + "pause": "3.2", + }, + "v1.18.6": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.9": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", "pause": "3.1", }, - "v1.12": { - "coredns": "1.2.2", - "etcd": "3.2.24", + "v1.16.13": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", "pause": "3.1", }, - "v1.11": { - "coredns": "1.1.3", - "etcd-amd64": "3.2.18", - "pause-amd64": "3.1", + "v1.19.0-rc.1": { + "coredns": "1.7.0", + "etcd": "3.4.7-0", + "pause": "3.2", + }, + "v1.18.5": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.8": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.12": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.18.5-rc.1": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.8-rc.1": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.12-rc.1": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.18.4": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.7": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.11": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.19.0-beta.2": { + "coredns": "1.6.7", + "etcd": "3.4.7-0", + "pause": "3.2", + }, + "v1.19.0-beta.1": { + "coredns": "1.6.7", + "etcd": "3.4.7-0", + "pause": "3.2", + }, + "v1.18.3": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.6": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.10": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.19.0-beta.0": { + "coredns": "1.6.7", + "etcd": "3.4.7-0", + "pause": "3.2", + }, + "v1.19.0-alpha.3": { + "coredns": "1.6.7", + "etcd": "3.4.7-0", + "pause": "3.2", + }, + "v1.19.0-alpha.2": { + "coredns": "1.6.7", + "etcd": "3.4.7-0", + "pause": "3.2", + }, + "v1.18.2": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.5": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.9": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.18.1": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.19.0-alpha.1": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.18.0": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.18.0-rc.1": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.17.4": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.8": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.18.0-beta.2": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.18.0-beta.1": { + "coredns": "1.6.7", + "etcd": "3.4.3-0", + "pause": "3.2", + }, + "v1.18.0-alpha.5": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.17.3": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.7": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.18.0-alpha.3": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.18.0-alpha.2": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.17.2": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.6": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.16.5": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.17.1": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.18.0-alpha.1": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.4": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.17.0": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.17.0-rc.2": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.17.0-rc.1": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.17.0-beta.2": { + "coredns": "1.6.5", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.16.3": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.17.0-beta.1": { + "coredns": "1.6.2", + "etcd": "3.4.3-0", + "pause": "3.1", + }, + "v1.17.0-alpha.3": { + "coredns": "1.6.2", + "etcd": "3.3.17-0", + "pause": "3.1", + }, + "v1.17.0-alpha.2": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.16.2": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.17.0-alpha.1": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.16.1": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", + }, + "v1.16.0": { + "coredns": "1.6.2", + "etcd": "3.3.15-0", + "pause": "3.1", }, } )