mirror of https://github.com/k3s-io/k3s
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.5 KiB
63 lines
1.5 KiB
package kubectl |
|
|
|
import ( |
|
goflag "flag" |
|
"fmt" |
|
"math/rand" |
|
"os" |
|
"time" |
|
|
|
"github.com/rancher/k3s/pkg/server" |
|
"github.com/sirupsen/logrus" |
|
"github.com/spf13/pflag" |
|
utilflag "k8s.io/component-base/cli/flag" |
|
"k8s.io/component-base/logs" |
|
"k8s.io/kubectl/pkg/cmd" |
|
) |
|
|
|
func Main() { |
|
kubenv := os.Getenv("KUBECONFIG") |
|
if kubenv == "" { |
|
config, err := server.HomeKubeConfig(false, false) |
|
if _, serr := os.Stat(config); err == nil && serr == nil { |
|
os.Setenv("KUBECONFIG", config) |
|
} |
|
if err := checkReadConfigPermissions(config); err != nil { |
|
logrus.Warn(err) |
|
} |
|
} |
|
|
|
main() |
|
} |
|
|
|
func main() { |
|
rand.Seed(time.Now().UnixNano()) |
|
|
|
command := cmd.NewDefaultKubectlCommand() |
|
|
|
// TODO: once we switch everything over to Cobra commands, we can go back to calling |
|
// utilflag.InitFlags() (by removing its pflag.Parse() call). For now, we have to set the |
|
// normalize func and add the go flag set by hand. |
|
pflag.CommandLine.SetNormalizeFunc(utilflag.WordSepNormalizeFunc) |
|
pflag.CommandLine.AddGoFlagSet(goflag.CommandLine) |
|
// utilflag.InitFlags() |
|
logs.InitLogs() |
|
defer logs.FlushLogs() |
|
|
|
if err := command.Execute(); err != nil { |
|
fmt.Fprintf(os.Stderr, "%v\n", err) |
|
os.Exit(1) |
|
} |
|
} |
|
|
|
func checkReadConfigPermissions(configFile string) error { |
|
file, err := os.OpenFile(configFile, os.O_RDONLY, 0600) |
|
if err != nil { |
|
if os.IsPermission(err) { |
|
return fmt.Errorf("Unable to read %s, please start server "+ |
|
"with --write-kubeconfig-mode to modify kube config permissions", configFile) |
|
} |
|
} |
|
file.Close() |
|
return nil |
|
}
|
|
|