github.com/wtfutil/wtf@v0.43.0/modules/kubernetes/client.go (about) 1 package kubernetes 2 3 import ( 4 "k8s.io/client-go/kubernetes" 5 // Includes authentication modules for various Kubernetes providers 6 _ "k8s.io/client-go/plugin/pkg/client/auth" 7 "k8s.io/client-go/tools/clientcmd" 8 ) 9 10 type clientInstance struct { 11 Client kubernetes.Interface 12 } 13 14 // getInstance returns a Kubernetes interface for a clientset 15 func (widget *Widget) getInstance() (*clientInstance, error) { 16 var err error 17 18 widget.clientOnce.Do(func() { 19 widget.client = &clientInstance{} 20 widget.client.Client, err = widget.getKubeClient() 21 }) 22 23 return widget.client, err 24 } 25 26 // getKubeClient returns a kubernetes clientset for the kubeconfig provided 27 func (widget *Widget) getKubeClient() (kubernetes.Interface, error) { 28 var overrides *clientcmd.ConfigOverrides 29 if widget.context != "" { 30 overrides = &clientcmd.ConfigOverrides{ 31 CurrentContext: widget.context, 32 } 33 } 34 35 config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig( 36 &clientcmd.ClientConfigLoadingRules{ExplicitPath: widget.kubeconfig}, 37 overrides).ClientConfig() 38 39 if err != nil { 40 return nil, err 41 } 42 43 clientset, err := kubernetes.NewForConfig(config) 44 if err != nil { 45 return nil, err 46 } 47 return clientset, nil 48 }