add command line options to preload-generator
parent
a9cf5e9337
commit
71080b0860
10
Makefile
10
Makefile
|
@ -683,11 +683,17 @@ ifndef AUTOPUSH
|
||||||
endif
|
endif
|
||||||
env $(X_BUILD_ENV) docker buildx build --builder $(X_DOCKER_BUILDER) --platform $(KICBASE_ARCH) $(addprefix -t ,$(KICBASE_IMAGE_REGISTRIES)) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase
|
env $(X_BUILD_ENV) docker buildx build --builder $(X_DOCKER_BUILDER) --platform $(KICBASE_ARCH) $(addprefix -t ,$(KICBASE_IMAGE_REGISTRIES)) --push --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) ./deploy/kicbase
|
||||||
|
|
||||||
|
|
||||||
|
out/upload-preload: ./hack/preload-images/*.go
|
||||||
|
go build -ldflags="$(MINIKUBE_LDFLAGS)" -o $@ ./hack/preload-images/*.go
|
||||||
|
|
||||||
.PHONY: upload-preloaded-images-tar
|
.PHONY: upload-preloaded-images-tar
|
||||||
upload-preloaded-images-tar: out/minikube # Upload the preloaded images for oldest supported, newest supported, and default kubernetes versions to GCS.
|
upload-preloaded-images-tar: out/minikube out/upload-preload # Upload the preloaded images for oldest supported, newest supported, and default kubernetes versions to GCS.
|
||||||
go build -ldflags="$(MINIKUBE_LDFLAGS)" -o out/upload-preload ./hack/preload-images/*.go
|
|
||||||
./out/upload-preload
|
./out/upload-preload
|
||||||
|
|
||||||
|
.PHONY: generate-preloaded-images-tar
|
||||||
|
generate-preloaded-images-tar: out/minikube out/upload-preload # Upload the preloaded images for oldest supported, newest supported, and default kubernetes versions to GCS.
|
||||||
|
./out/upload-preload --no-upload --force
|
||||||
|
|
||||||
ALL_ARCH = amd64 arm arm64 ppc64le s390x
|
ALL_ARCH = amd64 arm arm64 ppc64le s390x
|
||||||
IMAGE = $(REGISTRY)/storage-provisioner
|
IMAGE = $(REGISTRY)/storage-provisioner
|
||||||
|
|
|
@ -25,7 +25,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// RecentK8sVersions returns the most recent k8s version, usually around 30
|
// RecentK8sVersions returns the most recent k8s version, usually around 30
|
||||||
func RecentK8sVersions() ([]string, error) {
|
func recentK8sVersions() ([]string, error) {
|
||||||
client := github.NewClient(nil)
|
client := github.NewClient(nil)
|
||||||
k8s := "kubernetes"
|
k8s := "kubernetes"
|
||||||
list, _, err := client.Repositories.ListReleases(context.Background(), k8s, k8s, &github.ListOptions{})
|
list, _, err := client.Repositories.ListReleases(context.Background(), k8s, k8s, &github.ListOptions{})
|
||||||
|
|
|
@ -21,6 +21,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/pkg/errors"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
|
@ -40,63 +41,80 @@ var (
|
||||||
dockerStorageDriver = "overlay2"
|
dockerStorageDriver = "overlay2"
|
||||||
podmanStorageDriver = "overlay"
|
podmanStorageDriver = "overlay"
|
||||||
containerRuntimes = []string{"docker", "containerd", "cri-o"}
|
containerRuntimes = []string{"docker", "containerd", "cri-o"}
|
||||||
k8sVersion string
|
|
||||||
k8sVersions []string
|
k8sVersions []string
|
||||||
|
k8sVersion = flag.String("kubernetes-version", "", "desired Kubernetes version, for example `v1.17.2`")
|
||||||
|
noUpload = flag.Bool("no-upload", false, "Do not upload tarballs to GCS")
|
||||||
|
force = flag.Bool("force", false, "Generate the preload tarball even if it's already exists")
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
|
||||||
flag.StringVar(&k8sVersion, "kubernetes-version", "", "desired Kubernetes version, for example `v1.17.2`")
|
|
||||||
flag.Parse()
|
|
||||||
if k8sVersion != "" {
|
|
||||||
k8sVersions = append(k8sVersions, k8sVersion)
|
|
||||||
}
|
|
||||||
viper.Set("preload", "true")
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
defer func() {
|
flag.Parse()
|
||||||
if err := deleteMinikube(); err != nil {
|
viper.Set("preload", "true")
|
||||||
fmt.Printf("error cleaning up minikube: %v \n", err)
|
|
||||||
}
|
if *k8sVersion != "" {
|
||||||
}()
|
k8sVersions = []string{*k8sVersion}
|
||||||
|
}
|
||||||
|
|
||||||
if err := deleteMinikube(); err != nil {
|
if err := deleteMinikube(); err != nil {
|
||||||
fmt.Printf("error cleaning up minikube at start up: %v \n", err)
|
fmt.Printf("error cleaning up minikube at start up: %v \n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if k8sVersions == nil {
|
k8sVersions, err := collectK8sVers()
|
||||||
var err error
|
if err != nil {
|
||||||
k8sVersions, err = RecentK8sVersions()
|
exit("Unable to get recent k8s versions: %v\n", err)
|
||||||
if err != nil {
|
|
||||||
exit("Unable to get recent k8s versions: %v\n", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
k8sVersions = append(k8sVersions, constants.DefaultKubernetesVersion, constants.NewestKubernetesVersion, constants.OldestKubernetesVersion)
|
|
||||||
|
|
||||||
for _, kv := range k8sVersions {
|
for _, kv := range k8sVersions {
|
||||||
for _, cr := range containerRuntimes {
|
for _, cr := range containerRuntimes {
|
||||||
tf := download.TarballName(kv, cr)
|
if err := process(kv, cr); err != nil {
|
||||||
if download.PreloadExists(kv, cr) {
|
exit(err.Error(), err)
|
||||||
fmt.Printf("A preloaded tarball for k8s version %s - runtime %q already exists, skipping generation.\n", kv, cr)
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
fmt.Printf("A preloaded tarball for k8s version %s - runtime %q doesn't exist, generating now...\n", kv, cr)
|
|
||||||
if err := generateTarball(kv, cr, tf); err != nil {
|
|
||||||
exit(fmt.Sprintf("generating tarball for k8s version %s with %s", kv, cr), err)
|
|
||||||
}
|
|
||||||
if err := uploadTarball(tf); err != nil {
|
|
||||||
exit(fmt.Sprintf("uploading tarball for k8s version %s with %s", kv, cr), err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := deleteMinikube(); err != nil {
|
|
||||||
fmt.Printf("error cleaning up minikube before finishing up: %v\n", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func collectK8sVers() ([]string, error) {
|
||||||
|
if k8sVersions == nil {
|
||||||
|
recent, err := recentK8sVersions()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
k8sVersions = recent
|
||||||
|
}
|
||||||
|
return append(k8sVersions,
|
||||||
|
constants.DefaultKubernetesVersion,
|
||||||
|
constants.NewestKubernetesVersion,
|
||||||
|
constants.OldestKubernetesVersion), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func process(kv, cr string) error {
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
if err := deleteMinikube(); err != nil {
|
||||||
|
fmt.Printf("error cleaning up minikube before finishing up: %v\n", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
if !*force && download.PreloadExists(kv, cr) {
|
||||||
|
fmt.Printf("A preloaded tarball for k8s version %s - runtime %q already exists, skipping generation.\n", kv, cr)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
fmt.Printf("A preloaded tarball for k8s version %s - runtime %q doesn't exist, generating now...\n", kv, cr)
|
||||||
|
tf := download.TarballName(kv, cr)
|
||||||
|
if err := generateTarball(kv, cr, tf); err != nil {
|
||||||
|
return errors.Wrap(err, fmt.Sprintf("generating tarball for k8s version %s with %s", kv, cr))
|
||||||
|
}
|
||||||
|
|
||||||
|
if *noUpload {
|
||||||
|
fmt.Printf("skip upload of %q\n", tf)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if err := uploadTarball(tf); err != nil {
|
||||||
|
return errors.Wrap(err, fmt.Sprintf("uploading tarball for k8s version %s with %s", kv, cr))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func verifyDockerStorage() error {
|
func verifyDockerStorage() error {
|
||||||
cmd := exec.Command("docker", "exec", profile, "docker", "info", "-f", "{{.Info.Driver}}")
|
cmd := exec.Command("docker", "exec", profile, "docker", "info", "-f", "{{.Info.Driver}}")
|
||||||
var stderr bytes.Buffer
|
var stderr bytes.Buffer
|
||||||
|
|
Loading…
Reference in New Issue