1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/modules/kubernetes/client.go
Ian Baum 6662c7f18e
Update kubernetes client to connect to various kubernetes providers
* Import k8s.io/client-go/plugin/pkg/client/auth to include
authentication libraries
* Update calls to panic to include the error message
2019-09-06 11:00:44 -05:00

43 lines
953 B
Go

package kubernetes
import (
"sync"
"k8s.io/client-go/kubernetes"
// Includes authentication modules for various Kubernetes providers
_ "k8s.io/client-go/plugin/pkg/client/auth"
"k8s.io/client-go/tools/clientcmd"
)
var kubeClient *clientInstance
var clientOnce sync.Once
type clientInstance struct {
Client kubernetes.Interface
}
// getInstance returns a Kubernetes interface for a clientset
func (widget *Widget) getInstance() *clientInstance {
clientOnce.Do(func() {
if kubeClient == nil {
kubeClient = &clientInstance{
Client: widget.getKubeClient(),
}
}
})
return kubeClient
}
// getKubeClient returns a kubernetes clientset for the kubeconfig provided
func (widget *Widget) getKubeClient() kubernetes.Interface {
config, err := clientcmd.BuildConfigFromFlags("", widget.kubeconfig)
if err != nil {
panic(err)
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err)
}
return clientset
}