generated from layer5io/layer5-repo-template
-
Notifications
You must be signed in to change notification settings - Fork 86
/
kubernetes.go
40 lines (34 loc) · 952 Bytes
/
kubernetes.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
package kubernetes
import (
"k8s.io/client-go/dynamic"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
type Client struct {
RestConfig rest.Config `json:"restconfig,omitempty"`
KubeClient *kubernetes.Clientset `json:"kubeclient,omitempty"`
DynamicKubeClient dynamic.Interface `json:"dynamic_kubeclient,omitempty"`
}
func New(kubeconfig []byte) (*Client, error) {
restConfig, err := DetectKubeConfig(kubeconfig)
if err != nil {
return nil, err
}
restConfig.QPS = float32(50)
restConfig.Burst = int(100)
// Configure kubeclient
kclient, err := kubernetes.NewForConfig(restConfig)
if err != nil {
return nil, ErrNewKubeClient(err)
}
// Configure dynamic kubeclient
dyclient, err := dynamic.NewForConfig(restConfig)
if err != nil {
return nil, ErrNewDynClient(err)
}
return &Client{
RestConfig: *restConfig,
DynamicKubeClient: dyclient,
KubeClient: kclient,
}, nil
}