karmada/pkg/karmadactl/cmdinit/utils/kubeclient.go

45 lines
1.3 KiB
Go

package utils
import (
"k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
aggregator "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset"
)
// RestConfig Kubernetes kubeconfig
func RestConfig(context, kubeconfigPath string) (*rest.Config, error) {
pathOptions := clientcmd.NewDefaultPathOptions()
loadingRules := *pathOptions.LoadingRules
loadingRules.ExplicitPath = kubeconfigPath
loadingRules.Precedence = pathOptions.GetLoadingPrecedence()
overrides := &clientcmd.ConfigOverrides{
CurrentContext: context,
}
clientConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(&loadingRules, overrides)
restConfig, err := clientConfig.ClientConfig()
if err != nil {
return nil, err
}
return restConfig, err
}
// NewClientSet Kubernetes ClientSet
func NewClientSet(c *rest.Config) (*kubernetes.Clientset, error) {
return kubernetes.NewForConfig(c)
}
// NewCRDsClient clientset ClientSet
func NewCRDsClient(c *rest.Config) (*clientset.Clientset, error) {
return clientset.NewForConfig(c)
}
// NewAPIRegistrationClient apiregistration ClientSet
func NewAPIRegistrationClient(c *rest.Config) (*aggregator.Clientset, error) {
return aggregator.NewForConfig(c)
}