51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package kube
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
monov1alpha1 "undecided.project/monok8s/pkg/apis/monok8s/v1alpha1"
|
|
apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
|
"k8s.io/cli-runtime/pkg/genericclioptions"
|
|
"k8s.io/client-go/dynamic"
|
|
kubernetes "k8s.io/client-go/kubernetes"
|
|
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
|
|
"k8s.io/client-go/rest"
|
|
)
|
|
|
|
type Clients struct {
|
|
Config *rest.Config
|
|
Kubernetes kubernetes.Interface
|
|
Dynamic dynamic.Interface
|
|
APIExtensions apiextensionsclientset.Interface
|
|
RESTClientGetter genericclioptions.RESTClientGetter
|
|
}
|
|
|
|
func NewClients(flags *genericclioptions.ConfigFlags) (*Clients, error) {
|
|
cfg, err := flags.ToRESTConfig()
|
|
if err != nil {
|
|
return nil, fmt.Errorf("build rest config: %w", err)
|
|
}
|
|
kubeClient, err := kubernetes.NewForConfig(cfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("build kubernetes client: %w", err)
|
|
}
|
|
dyn, err := dynamic.NewForConfig(cfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("build dynamic client: %w", err)
|
|
}
|
|
ext, err := apiextensionsclientset.NewForConfig(cfg)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("build apiextensions client: %w", err)
|
|
}
|
|
return &Clients{Config: cfg, Kubernetes: kubeClient, Dynamic: dyn, APIExtensions: ext, RESTClientGetter: flags}, nil
|
|
}
|
|
|
|
func Scheme() *runtime.Scheme {
|
|
scheme := runtime.NewScheme()
|
|
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
|
|
utilruntime.Must(monov1alpha1.AddToScheme(scheme))
|
|
return scheme
|
|
}
|