mirror of
https://github.com/aquasecurity/kube-bench.git
synced 2024-12-18 20:58:10 +00:00
772839fc92
* move target mapping to config.yaml * Update config.yaml * Update common.go * Add support for eks-1.0 Add also eks-1.0 to map * chore: merge correction * Move file only used for testing * Tidier logs * Add target mapping for GKE and EKS * fingers cross this finishes target mapping Co-authored-by: Murali Paluru <leodotcloud@gmail.com> Co-authored-by: Roberto Rojas <robertojrojas@gmail.com> Co-authored-by: yoavrotems <yoavrotems97@gmail.com>
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package integration
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
"sigs.k8s.io/kind/pkg/cluster"
|
|
clusternodes "sigs.k8s.io/kind/pkg/cluster/nodes"
|
|
"sigs.k8s.io/kind/pkg/container/docker"
|
|
"sigs.k8s.io/kind/pkg/fs"
|
|
"sigs.k8s.io/kind/pkg/util/concurrent"
|
|
)
|
|
|
|
func loadImageFromDocker(imageName string, kindCtx *cluster.Context) error {
|
|
|
|
// Check that the image exists locally and gets its ID, if not return error
|
|
_, err := docker.ImageID(imageName)
|
|
if err != nil {
|
|
return errors.Errorf("Image: %q not present locally", imageName)
|
|
}
|
|
|
|
selectedNodes, err := kindCtx.ListInternalNodes()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Save the image into a tar
|
|
dir, err := fs.TempDir("", "image-tar")
|
|
if err != nil {
|
|
return errors.Wrap(err, "failed to create tempdir")
|
|
}
|
|
defer os.RemoveAll(dir)
|
|
imageTarPath := filepath.Join(dir, "image.tar")
|
|
|
|
err = docker.Save(imageName, imageTarPath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Load the image on the selected nodes
|
|
fns := []func() error{}
|
|
for _, selectedNode := range selectedNodes {
|
|
selectedNode := selectedNode // capture loop variable
|
|
fns = append(fns, func() error {
|
|
return loadImage(imageTarPath, &selectedNode)
|
|
})
|
|
}
|
|
return concurrent.UntilError(fns)
|
|
}
|
|
|
|
// loads an image tarball onto a node
|
|
func loadImage(imageTarName string, node *clusternodes.Node) error {
|
|
f, err := os.Open(imageTarName)
|
|
if err != nil {
|
|
return errors.Wrap(err, "failed to open image")
|
|
}
|
|
defer f.Close()
|
|
return node.LoadImageArchive(f)
|
|
}
|