/
k8s.go
62 lines (60 loc) · 1.98 KB
/
k8s.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package main
import (
"fmt"
"github.com/jitsucom/bulker/jitsubase/utils"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"strings"
)
func GetK8SClientSet(c *Config) (*kubernetes.Clientset, error) {
config := c.KubernetesClientConfig
if config == "" || config == "local" {
// creates the in-cluster config
cc, err := rest.InClusterConfig()
if err != nil {
return nil, fmt.Errorf("error getting in cluster config: %v", err)
}
clientset, err := kubernetes.NewForConfig(cc)
if err != nil {
return nil, fmt.Errorf("error creating kubernetes clientset: %v", err)
}
return clientset, nil
} else if strings.ContainsRune(config, '\n') {
// suppose yaml file
clientconfig, err := clientcmd.NewClientConfigFromBytes([]byte(config))
if err != nil {
return nil, fmt.Errorf("error parsing kubernetes client config: %v", err)
}
rawConfig, _ := clientconfig.RawConfig()
clientconfig = clientcmd.NewNonInteractiveClientConfig(rawConfig,
utils.NvlString(c.KubernetesContext, rawConfig.CurrentContext),
&clientcmd.ConfigOverrides{},
&clientcmd.ClientConfigLoadingRules{})
cc, err := clientconfig.ClientConfig()
if err != nil {
return nil, fmt.Errorf("error creating kubernetes client config: %v", err)
}
clientset, err := kubernetes.NewForConfig(cc)
if err != nil {
return nil, fmt.Errorf("error creating kubernetes clientset: %v", err)
}
return clientset, nil
} else {
// suppose kubeconfig file path
clientconfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
&clientcmd.ClientConfigLoadingRules{ExplicitPath: config},
&clientcmd.ConfigOverrides{
CurrentContext: c.KubernetesContext,
})
cc, err := clientconfig.ClientConfig()
if err != nil {
return nil, fmt.Errorf("error creating kubernetes client config: %v", err)
}
clientset, err := kubernetes.NewForConfig(cc)
if err != nil {
return nil, fmt.Errorf("error creating kubernetes clientset: %v", err)
}
return clientset, nil
}
}