Feature request per pod (#1946)
This feature enables routing more than one request to a pod at the same time. This is the first draft of the work and might involve more optimizations later.
This commit is contained in:
+14
-11
@@ -28,6 +28,7 @@ import (
|
||||
_ "k8s.io/client-go/plugin/pkg/client/auth"
|
||||
"k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
metricsclient "k8s.io/metrics/pkg/client/clientset/versioned"
|
||||
|
||||
genClientset "github.com/fission/fission/pkg/apis/genclient/clientset/versioned"
|
||||
)
|
||||
@@ -41,7 +42,7 @@ type (
|
||||
// Get a kubernetes client using the kubeconfig file at the
|
||||
// environment var $KUBECONFIG, or an in-cluster config if that's
|
||||
// undefined.
|
||||
func GetKubernetesClient() (*rest.Config, *kubernetes.Clientset, *apiextensionsclient.Clientset, error) {
|
||||
func GetKubernetesClient() (*rest.Config, *kubernetes.Clientset, *apiextensionsclient.Clientset, *metricsclient.Clientset, error) {
|
||||
var config *rest.Config
|
||||
var err error
|
||||
|
||||
@@ -51,45 +52,47 @@ func GetKubernetesClient() (*rest.Config, *kubernetes.Clientset, *apiextensionsc
|
||||
if len(kubeConfig) != 0 {
|
||||
config, err = clientcmd.BuildConfigFromFlags("", kubeConfig)
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
return nil, nil, nil, nil, err
|
||||
}
|
||||
} else {
|
||||
config, err = rest.InClusterConfig()
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
return nil, nil, nil, nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// creates the clientset
|
||||
clientset, err := kubernetes.NewForConfig(config)
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
return nil, nil, nil, nil, err
|
||||
}
|
||||
|
||||
apiExtClientset, err := apiextensionsclient.NewForConfig(config)
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
return nil, nil, nil, nil, err
|
||||
}
|
||||
|
||||
return config, clientset, apiExtClientset, nil
|
||||
metricsClient, _ := metricsclient.NewForConfig(config)
|
||||
|
||||
return config, clientset, apiExtClientset, metricsClient, nil
|
||||
}
|
||||
|
||||
func MakeFissionClient() (*FissionClient, *kubernetes.Clientset, *apiextensionsclient.Clientset, error) {
|
||||
config, kubeClient, apiExtClient, err := GetKubernetesClient()
|
||||
func MakeFissionClient() (*FissionClient, *kubernetes.Clientset, *apiextensionsclient.Clientset, *metricsclient.Clientset, error) {
|
||||
config, kubeClient, apiExtClient, metricsClient, err := GetKubernetesClient()
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
return nil, nil, nil, nil, err
|
||||
}
|
||||
|
||||
// make a CRD REST client with the config
|
||||
crdClient, err := genClientset.NewForConfig(config)
|
||||
if err != nil {
|
||||
return nil, nil, nil, err
|
||||
return nil, nil, nil, nil, err
|
||||
}
|
||||
|
||||
fc := &FissionClient{
|
||||
Interface: crdClient,
|
||||
}
|
||||
return fc, kubeClient, apiExtClient, nil
|
||||
return fc, kubeClient, apiExtClient, metricsClient, nil
|
||||
}
|
||||
|
||||
func (fc *FissionClient) WaitForCRDs() error {
|
||||
|
||||
Reference in New Issue
Block a user