k3s/pkg/daemons/executor/embed.go
Darren Shepherd afd6f6d7e7 Encapsulate execution logic
This moves all the calls to cobra root commands to one package
so that we can change the behavior of running components as embedded
or external.
2020-05-05 15:34:32 -07:00

81 lines
1.7 KiB
Go

// +build !no_embedded_executor
package executor
import (
"context"
"net/http"
"k8s.io/apiserver/pkg/authentication/authenticator"
proxy "k8s.io/kubernetes/cmd/kube-proxy/app"
kubelet "k8s.io/kubernetes/cmd/kubelet/app"
"github.com/sirupsen/logrus"
"k8s.io/kubernetes/cmd/kube-apiserver/app"
cmapp "k8s.io/kubernetes/cmd/kube-controller-manager/app"
sapp "k8s.io/kubernetes/cmd/kube-scheduler/app"
)
func init() {
executor = Embedded{}
}
type Embedded struct{}
func (Embedded) Kubelet(args []string) error {
command := kubelet.NewKubeletCommand(context.Background().Done())
command.SetArgs(args)
go func() {
logrus.Fatalf("kubelet exited: %v", command.Execute())
}()
return nil
}
func (Embedded) KubeProxy(args []string) error {
command := proxy.NewProxyCommand()
command.SetArgs(args)
go func() {
logrus.Fatalf("kube-proxy exited: %v", command.Execute())
}()
return nil
}
func (Embedded) APIServer(ctx context.Context, args []string) (authenticator.Request, http.Handler, error) {
command := app.NewAPIServerCommand(ctx.Done())
command.SetArgs(args)
go func() {
logrus.Fatalf("apiserver exited: %v", command.Execute())
}()
startupConfig := <-app.StartupConfig
return startupConfig.Authenticator, startupConfig.Handler, nil
}
func (Embedded) Scheduler(args []string) error {
command := sapp.NewSchedulerCommand()
command.SetArgs(args)
go func() {
logrus.Fatalf("scheduler exited: %v", command.Execute())
}()
return nil
}
func (Embedded) ControllerManager(args []string) error {
command := cmapp.NewControllerManagerCommand()
command.SetArgs(args)
go func() {
logrus.Fatalf("controller-manager exited: %v", command.Execute())
}()
return nil
}