in k8s-bench/eval.go [229:280]
func (x *TaskExecution) runSetup(ctx context.Context) error {
log := klog.FromContext(ctx)
// Create cluster if requested
if x.task.Isolation == IsolationModeCluster {
kubeconfigPath := filepath.Join(x.taskDir, "kubeconfig.yaml")
x.kubeConfig = kubeconfigPath
clusterName := fmt.Sprintf("k8s-bench-%s", x.taskID)
log.Info("creating kind cluster", "name", clusterName)
args := []string{
"kind",
"create", "cluster",
"--name", clusterName,
"--wait", "5m",
"--kubeconfig", kubeconfigPath,
}
cmd := exec.CommandContext(ctx, args[0], args[1:]...)
cmd.Dir = x.taskDir
x.cleanupFunctions = append(x.cleanupFunctions, func() error {
args := []string{
"kind",
"delete", "cluster",
"--name", clusterName,
"--kubeconfig", kubeconfigPath,
}
cmd := exec.CommandContext(ctx, args[0], args[1:]...)
cmd.Dir = x.taskDir
return x.runCommand(cmd)
})
if err := x.runCommand(cmd); err != nil {
return err
}
}
// Run setup if specified
if x.task.Setup != "" {
setupPath := filepath.Join(x.taskDir, x.task.Setup)
cmd := exec.CommandContext(ctx, setupPath)
cmd.Dir = x.taskDir
cmd.Env = append(os.Environ(), fmt.Sprintf("KUBECONFIG=%s", x.kubeConfig))
if err := x.runCommand(cmd); err != nil {
return err
}
}
return nil
}