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  }