Skip to content

Make a clone of k8s master instead of using archive #723

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions test/k8s-integration/.dockerized-kube-version-defs

This file was deleted.

67 changes: 28 additions & 39 deletions test/k8s-integration/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -206,57 +206,46 @@ func clusterUpGKE(gceZone, gceRegion string, numNodes int, imageType string, use

func downloadKubernetesSource(pkgDir, k8sIoDir, kubeVersion string) error {
k8sDir := filepath.Join(k8sIoDir, "kubernetes")
/*
// TODO: Download a fresh copy every time until mutate manifests hardcoding existing image is solved.
if _, err := os.Stat(k8sDir); !os.IsNotExist(err) {
klog.Infof("Staging Kubernetes already found at %s, skipping download", k8sDir)
return nil
}
*/

klog.V(4).Infof("Staging Kubernetes folder not found, downloading now")
klog.V(4).Infof("Downloading Kubernetes source")

err := os.MkdirAll(k8sIoDir, 0777)
if err != nil {
if err := os.MkdirAll(k8sIoDir, 0777); err != nil {
return err
}
if err := os.RemoveAll(k8sDir); err != nil {
return err
}

kubeTarDir := filepath.Join(k8sIoDir, fmt.Sprintf("kubernetes-%s.tar.gz", kubeVersion))

var vKubeVersion string
if kubeVersion == "master" {
vKubeVersion = kubeVersion
// A hack to be able to build Kubernetes in this nested place
// KUBE_GIT_VERSION_FILE set to file to load kube version from
err = os.Setenv("KUBE_GIT_VERSION_FILE", filepath.Join(pkgDir, "test", "k8s-integration", ".dockerized-kube-version-defs"))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we also remove dockerized-kube-version-defs file if its not needed now?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did remove it :-)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oops missed it

// Clone of master. We cannot download the master version from the archive, because the k8s
// version is not set, which affects which APIs are removed in the running cluster. We cannot
// use a shallow clone, because in order to find the revision git searches through the tags,
// and tags are not fetched in a shallow clone. Not using a shallow clone adds about 700M to the
// ~5G archive directory, after make quick-release, so this is not disastrous.
out, err := exec.Command("git", "clone", "https://github.com/kubernetes/kubernetes", k8sDir).CombinedOutput()
if err != nil {
return err
return fmt.Errorf("failed to clone kubernetes master: %s, err: %v", out, err)
}
} else {
vKubeVersion = "v" + kubeVersion
}
out, err := exec.Command("curl", "-L", fmt.Sprintf("https://github.com/kubernetes/kubernetes/archive/%s.tar.gz", vKubeVersion), "-o", kubeTarDir).CombinedOutput()
if err != nil {
return fmt.Errorf("failed to curl kubernetes version %s: %s, err: %v", kubeVersion, out, err)
}
// Download from the release archives rather than cloning the repo.
vKubeVersion := "v" + kubeVersion
kubeTarDir := filepath.Join(k8sIoDir, fmt.Sprintf("kubernetes-%s.tar.gz", kubeVersion))
out, err := exec.Command("curl", "-L", fmt.Sprintf("https://github.com/kubernetes/kubernetes/archive/%s.tar.gz", vKubeVersion), "-o", kubeTarDir).CombinedOutput()
if err != nil {
return fmt.Errorf("failed to curl kubernetes version %s: %s, err: %v", kubeVersion, out, err)
}

out, err = exec.Command("tar", "-C", k8sIoDir, "-xvf", kubeTarDir).CombinedOutput()
if err != nil {
return fmt.Errorf("failed to untar %s: %s, err: %v", kubeTarDir, out, err)
}
out, err = exec.Command("tar", "-C", k8sIoDir, "-xvf", kubeTarDir).CombinedOutput()
if err != nil {
return fmt.Errorf("failed to untar %s: %s, err: %v", kubeTarDir, out, err)
}

err = os.RemoveAll(k8sDir)
if err != nil {
return err
}
err = os.Rename(filepath.Join(k8sIoDir, fmt.Sprintf("kubernetes-%s", kubeVersion)), k8sDir)
if err != nil {
return err
}

err = os.Rename(filepath.Join(k8sIoDir, fmt.Sprintf("kubernetes-%s", kubeVersion)), k8sDir)
if err != nil {
return err
klog.V(4).Infof("Successfully downloaded Kubernetes v%s to %s", kubeVersion, k8sDir)
}

klog.V(4).Infof("Successfully downloaded Kubernetes v%s to %s", kubeVersion, k8sDir)

return nil
}

Expand Down