mirror of https://github.com/knative/func.git
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package k8s
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"k8s.io/client-go/dynamic"
|
|
"k8s.io/client-go/kubernetes"
|
|
_ "k8s.io/client-go/plugin/pkg/client/auth"
|
|
"k8s.io/client-go/tools/clientcmd"
|
|
)
|
|
|
|
func NewClientAndResolvedNamespace(ns string) (*kubernetes.Clientset, string, error) {
|
|
var err error
|
|
if ns == "" {
|
|
ns, err = GetDefaultNamespace()
|
|
if err != nil {
|
|
return nil, ns, err
|
|
}
|
|
}
|
|
|
|
client, err := NewKubernetesClientset()
|
|
return client, ns, err
|
|
}
|
|
|
|
func NewKubernetesClientset() (*kubernetes.Clientset, error) {
|
|
restConfig, err := GetClientConfig().ClientConfig()
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create new kubernetes client: %w", err)
|
|
}
|
|
|
|
return kubernetes.NewForConfig(restConfig)
|
|
}
|
|
|
|
func NewDynamicClient() (dynamic.Interface, error) {
|
|
restConfig, err := GetClientConfig().ClientConfig()
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to create new kubernetes client: %w", err)
|
|
}
|
|
|
|
return dynamic.NewForConfig(restConfig)
|
|
}
|
|
|
|
// GetDefaultNamespace returns default namespace
|
|
func GetDefaultNamespace() (namespace string, err error) {
|
|
namespace, _, err = GetClientConfig().Namespace()
|
|
return
|
|
}
|
|
|
|
func GetClientConfig() clientcmd.ClientConfig {
|
|
return clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
|
|
clientcmd.NewDefaultClientConfigLoadingRules(),
|
|
&clientcmd.ConfigOverrides{})
|
|
}
|