mirror of https://github.com/k3s-io/k3s
44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package rootless
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/k3s-io/k3s/tests/e2e"
|
|
)
|
|
|
|
// RunCmdOnRootlesNode executes a command from within the given node as user vagrant
|
|
func RunCmdOnRootlesNode(cmd string, nodename string) (string, error) {
|
|
injectEnv := ""
|
|
if _, ok := os.LookupEnv("E2E_GOCOVER"); ok && strings.HasPrefix(cmd, "k3s") {
|
|
injectEnv = "GOCOVERDIR=/tmp/k3scov "
|
|
}
|
|
runcmd := "vagrant ssh " + nodename + " -c \"" + injectEnv + cmd + "\""
|
|
out, err := e2e.RunCommand(runcmd)
|
|
if err != nil {
|
|
return out, fmt.Errorf("failed to run command: %s on node %s: %s, %v", cmd, nodename, out, err)
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func GenRootlessKubeConfigFile(serverName string) (string, error) {
|
|
kubeConfig, err := RunCmdOnRootlesNode("cat /home/vagrant/.kube/k3s.yaml", serverName)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
nodeIP, err := e2e.FetchNodeExternalIP(serverName)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
kubeConfig = strings.Replace(kubeConfig, "127.0.0.1", nodeIP, 1)
|
|
kubeConfigFile := fmt.Sprintf("kubeconfig-%s", serverName)
|
|
if err := os.WriteFile(kubeConfigFile, []byte(kubeConfig), 0644); err != nil {
|
|
return "", err
|
|
}
|
|
if err := os.Setenv("E2E_KUBECONFIG", kubeConfigFile); err != nil {
|
|
return "", err
|
|
}
|
|
return kubeConfigFile, nil
|
|
}
|