45 lines
1.3 KiB
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)
|
|
}
|