From 1d164d0747fa583c61b5a70aa8ae3fbec531aadf Mon Sep 17 00:00:00 2001 From: hasheddan Date: Sat, 6 Feb 2021 10:59:15 -0600 Subject: [PATCH 1/2] kubeadm: get k8s CI version markers from k8s infra bucket Updates kubeadm version resolution to use kubernetes community infra bucket to fetch appropriate k8s ci versions. The images are already being pulled from the kubernetes community infra bucket meaning that a mismatch can occur when the ci version is fetched from the google infra bucket and the image is not yet present on k8s infra. Follow-up to kubernetes/kubernetes#97087 Signed-off-by: hasheddan --- cmd/kubeadm/app/util/version.go | 7 +++++-- cmd/kubeadm/app/util/version_test.go | 7 ++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/cmd/kubeadm/app/util/version.go b/cmd/kubeadm/app/util/version.go index 9ac0cc7d00c..a0e9b08bf2b 100644 --- a/cmd/kubeadm/app/util/version.go +++ b/cmd/kubeadm/app/util/version.go @@ -39,6 +39,7 @@ const ( var ( kubeReleaseBucketURL = "https://dl.k8s.io" + kubeCIBucketURL = "https://storage.googleapis.com/k8s-release-dev" kubeReleaseRegex = regexp.MustCompile(`^v?(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)([-0-9a-zA-Z_\.+]*)?$`) kubeReleaseLabelRegex = regexp.MustCompile(`^((latest|stable)+(-[1-9](\.[1-9]([0-9])?)?)?)\z`) kubeBucketPrefixes = regexp.MustCompile(`^((release|ci|ci-cross)/)?([-\w_\.+]+)$`) @@ -160,7 +161,7 @@ func normalizedBuildVersion(version string) string { // Internal helper: split version parts, // Return base URL and cleaned-up version func splitVersion(version string) (string, string, error) { - var urlSuffix string + var bucketURL, urlSuffix string subs := kubeBucketPrefixes.FindAllStringSubmatch(version, 1) if len(subs) != 1 || len(subs[0]) != 4 { return "", "", errors.Errorf("invalid version %q", version) @@ -170,10 +171,12 @@ func splitVersion(version string) (string, string, error) { case strings.HasPrefix(subs[0][2], "ci"): // Just use whichever the user specified urlSuffix = subs[0][2] + bucketURL = kubeCIBucketURL default: urlSuffix = "release" + bucketURL = kubeReleaseBucketURL } - url := fmt.Sprintf("%s/%s", kubeReleaseBucketURL, urlSuffix) + url := fmt.Sprintf("%s/%s", bucketURL, urlSuffix) return url, subs[0][3], nil } diff --git a/cmd/kubeadm/app/util/version_test.go b/cmd/kubeadm/app/util/version_test.go index 527ca18bce3..24e2f5a0396 100644 --- a/cmd/kubeadm/app/util/version_test.go +++ b/cmd/kubeadm/app/util/version_test.go @@ -19,11 +19,12 @@ package util import ( "errors" "fmt" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" "path" "strings" "testing" "time" + + "k8s.io/kubernetes/cmd/kubeadm/app/constants" ) func TestEmptyVersion(t *testing.T) { @@ -195,8 +196,8 @@ func TestSplitVersion(t *testing.T) { {"release/v1.7.0", "https://dl.k8s.io/release", "v1.7.0", true}, {"release/latest-1.7", "https://dl.k8s.io/release", "latest-1.7", true}, // CI builds area - {"ci/latest", "https://dl.k8s.io/ci", "latest", true}, - {"ci/latest-1.7", "https://dl.k8s.io/ci", "latest-1.7", true}, + {"ci/latest", "https://storage.googleapis.com/k8s-release-dev/ci", "latest", true}, + {"ci/latest-1.7", "https://storage.googleapis.com/k8s-release-dev/ci", "latest-1.7", true}, // unknown label in default (release) area: splitVersion validate only areas. {"unknown-1", "https://dl.k8s.io/release", "unknown-1", true}, // unknown area, not valid input. From 8ae6a2048573041766bc103fba106268e78e8460 Mon Sep 17 00:00:00 2001 From: hasheddan Date: Sat, 6 Feb 2021 11:03:00 -0600 Subject: [PATCH 2/2] kubeadm: drop explicit constant override in version test The k8s release bucket constant is not longer overriden in network tests because the fetcher is mocked rather than using httptest.NewServer. See previous implementation in https://github.com/kubernetes/kubernetes/pull/49119/files#diff-82f2b09991047d4a1884d53dedadd64a473d5c4dc75293514e71773ceedf08e2R128 Signed-off-by: hasheddan --- cmd/kubeadm/app/util/version_test.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/cmd/kubeadm/app/util/version_test.go b/cmd/kubeadm/app/util/version_test.go index 24e2f5a0396..c392a6a2e5d 100644 --- a/cmd/kubeadm/app/util/version_test.go +++ b/cmd/kubeadm/app/util/version_test.go @@ -203,9 +203,6 @@ func TestSplitVersion(t *testing.T) { // unknown area, not valid input. {"unknown/latest-1", "", "", false}, } - // kubeReleaseBucketURL can be overridden during network tests, thus ensure - // it will contain value corresponding to expected outcome for this unit test - kubeReleaseBucketURL = "https://dl.k8s.io" for _, tc := range cases { t.Run(fmt.Sprintf("input:%s/label:%s", tc.input, tc.label), func(t *testing.T) {