Skip to content

Commit

Permalink
Merge pull request #16972 from afbjorklund/containerd-snapshotter
Browse files Browse the repository at this point in the history
Verify containerd storage separately from docker
  • Loading branch information
medyagh committed Aug 11, 2023
2 parents cd94167 + 5d66427 commit 694d9aa
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 11 deletions.
7 changes: 6 additions & 1 deletion hack/preload-images/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,16 @@ func generateTarball(kubernetesVersion, containerRuntime, tarballFilename string
}

func verifyStorage(containerRuntime string) error {
if containerRuntime == "docker" || containerRuntime == "containerd" {
if containerRuntime == "docker" {
if err := retry.Expo(verifyDockerStorage, 100*time.Microsecond, time.Minute*2); err != nil {
return errors.Wrap(err, "Docker storage type is incompatible")
}
}
if containerRuntime == "containerd" {
if err := retry.Expo(verifyContainerdStorage, 100*time.Microsecond, time.Minute*2); err != nil {
return errors.Wrap(err, "containerd storage type is incompatible")
}
}
if containerRuntime == "cri-o" {
if err := retry.Expo(verifyPodmanStorage, 100*time.Microsecond, time.Minute*2); err != nil {
return errors.Wrap(err, "Podman storage type is incompatible")
Expand Down
42 changes: 32 additions & 10 deletions hack/preload-images/preload_images.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,17 @@ const (
)

var (
dockerStorageDriver = "overlay2"
podmanStorageDriver = "overlay"
containerRuntimes = []string{"docker", "containerd", "cri-o"}
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")
limit = flag.Int("limit", 0, "Limit the number of tarballs to generate")
armUpload = flag.Bool("arm-upload", false, "Upload the arm64 preload tarballs to GCS")
armPreloadsDir = flag.String("arm-preloads-dir", "artifacts", "Directory containing the arm64 preload tarballs")
dockerStorageDriver = "overlay2"
containerdSnapshotter = "overlayfs"
podmanStorageDriver = "overlay"
containerRuntimes = []string{"docker", "containerd", "cri-o"}
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")
limit = flag.Int("limit", 0, "Limit the number of tarballs to generate")
armUpload = flag.Bool("arm-upload", false, "Upload the arm64 preload tarballs to GCS")
armPreloadsDir = flag.String("arm-preloads-dir", "artifacts", "Directory containing the arm64 preload tarballs")
)

type preloadCfg struct {
Expand Down Expand Up @@ -179,6 +180,27 @@ var verifyDockerStorage = func() error {
return nil
}

var verifyContainerdStorage = func() error {
cmd := exec.Command("docker", "exec", profile, "sudo", "containerd", "config", "dump")
var stderr bytes.Buffer
cmd.Stderr = &stderr
output, err := cmd.Output()
if err != nil {
return fmt.Errorf("%v: %v:\n%s", cmd.Args, err, stderr.String())
}
var driver string
for _, line := range strings.Split(string(output), "\n") {
if strings.Contains(line, "snapshotter = ") {
driver = strings.Split(line, " = ")[1]
driver = strings.Trim(driver, "\"")
}
}
if driver != containerdSnapshotter {
return fmt.Errorf("containerd snapshotter %s does not match requested %s", driver, containerdSnapshotter)
}
return nil
}

var verifyPodmanStorage = func() error {
cmd := exec.Command("docker", "exec", profile, "sudo", "podman", "info", "-f", "json")
var stderr bytes.Buffer
Expand Down

0 comments on commit 694d9aa

Please sign in to comment.