github.com/spotahome/redis-operator@v1.2.4/cmd/utils/k8s.go (about) 1 package utils 2 3 import ( 4 "fmt" 5 6 apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" 7 "k8s.io/client-go/kubernetes" 8 "k8s.io/client-go/rest" 9 "k8s.io/client-go/tools/clientcmd" 10 11 redisfailoverclientset "github.com/spotahome/redis-operator/client/k8s/clientset/versioned" 12 ) 13 14 // LoadKubernetesConfig loads kubernetes configuration based on flags. 15 func LoadKubernetesConfig(flags *CMDFlags) (*rest.Config, error) { 16 var cfg *rest.Config 17 // If devel mode then use configuration flag path. 18 if flags.Development { 19 config, err := clientcmd.BuildConfigFromFlags("", flags.KubeConfig) 20 if err != nil { 21 return nil, fmt.Errorf("could not load configuration: %s", err) 22 } 23 cfg = config 24 } else { 25 config, err := rest.InClusterConfig() 26 if err != nil { 27 return nil, fmt.Errorf("error loading kubernetes configuration inside cluster, check app is running outside kubernetes cluster or run in development mode: %s", err) 28 } 29 cfg = config 30 } 31 32 cfg.QPS = float32(flags.K8sQueriesPerSecond) 33 cfg.Burst = flags.K8sQueriesBurstable 34 35 return cfg, nil 36 } 37 38 // CreateKubernetesClients create the clients to connect to kubernetes 39 func CreateKubernetesClients(flags *CMDFlags) (kubernetes.Interface, redisfailoverclientset.Interface, apiextensionsclientset.Interface, error) { 40 config, err := LoadKubernetesConfig(flags) 41 if err != nil { 42 return nil, nil, nil, err 43 } 44 45 clientset, err := kubernetes.NewForConfig(config) 46 if err != nil { 47 return nil, nil, nil, err 48 } 49 customClientset, err := redisfailoverclientset.NewForConfig(config) 50 if err != nil { 51 return nil, nil, nil, err 52 } 53 54 aeClientset, err := apiextensionsclientset.NewForConfig(config) 55 if err != nil { 56 return nil, nil, nil, err 57 } 58 59 return clientset, customClientset, aeClientset, nil 60 }