1
0
mirror of https://github.com/rancher/norman.git synced 2025-08-20 16:23:07 +00:00
norman/pkg/kwrapper/k8s/k3s.go

48 lines
1.1 KiB
Go
Raw Normal View History

2018-10-24 23:21:28 +00:00
// +build k8s
package k8s
import (
"context"
"os"
"github.com/rancher/norman/pkg/kwrapper/etcd"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/kubernetes/pkg/wrapper/server"
)
func getEmbedded(ctx context.Context) (bool, context.Context, *rest.Config, error) {
2018-10-24 23:21:28 +00:00
var (
err error
)
sc, ok := ctx.Value(serverConfig).(*server.ServerConfig)
if !ok {
2018-10-31 17:18:47 +00:00
ctx, obj, _, err := NewK3sConfig(ctx, "./management-state", nil)
if err != nil {
return false, ctx, nil, err
}
2018-10-31 17:18:47 +00:00
sc = obj.(*server.ServerConfig)
sc.NoScheduler = false
}
if len(sc.ETCDEndpoints) == 0 {
2018-10-24 23:21:28 +00:00
etcdEndpoints, err := etcd.RunETCD(ctx, sc.DataDir)
if err != nil {
2018-10-24 23:21:28 +00:00
return false, ctx, nil, err
}
sc.ETCDEndpoints = etcdEndpoints
}
2018-10-24 23:21:28 +00:00
if err = server.Server(ctx, sc); err != nil {
return false, ctx, nil, err
}
os.Setenv("KUBECONFIG", sc.KubeConfig)
restConfig, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
&clientcmd.ClientConfigLoadingRules{ExplicitPath: sc.KubeConfig}, &clientcmd.ConfigOverrides{}).ClientConfig()
return true, ctx, restConfig, err
}