From f428a752a5fe3064518be1d9347c0d8d858c9613 Mon Sep 17 00:00:00 2001 From: Emile Vauge Date: Tue, 14 Mar 2017 15:59:13 +0100 Subject: [PATCH] Refactor k8s client config Signed-off-by: Emile Vauge --- provider/k8s/client.go | 26 +++++++------------------- provider/kubernetes.go | 11 +---------- 2 files changed, 8 insertions(+), 29 deletions(-) diff --git a/provider/k8s/client.go b/provider/k8s/client.go index d4806d870..58187ad57 100644 --- a/provider/k8s/client.go +++ b/provider/k8s/client.go @@ -3,6 +3,7 @@ package k8s import ( "time" + "github.com/containous/traefik/log" "k8s.io/client-go/1.5/kubernetes" "k8s.io/client-go/1.5/pkg/api" "k8s.io/client-go/1.5/pkg/api/v1" @@ -39,31 +40,18 @@ type clientImpl struct { clientset *kubernetes.Clientset } -// NewInClusterClient returns a new Kubernetes client that expect to run inside the cluster -func NewInClusterClient() (Client, error) { +// NewClient returns a new Kubernetes client +func NewClient(endpoint string) (Client, error) { config, err := rest.InClusterConfig() if err != nil { - return nil, err - } - clientset, err := kubernetes.NewForConfig(config) - if err != nil { - return nil, err + log.Warnf("Kubernetes in cluster config error, trying from out of cluster: %s", err) + config = &rest.Config{} } - return &clientImpl{ - clientset: clientset, - }, nil -} - -// NewInClusterClientWithEndpoint is the same as NewInClusterClient but uses the provided endpoint URL -func NewInClusterClientWithEndpoint(endpoint string) (Client, error) { - config, err := rest.InClusterConfig() - if err != nil { - return nil, err + if len(endpoint) > 0 { + config.Host = endpoint } - config.Host = endpoint - clientset, err := kubernetes.NewForConfig(config) if err != nil { return nil, err diff --git a/provider/kubernetes.go b/provider/kubernetes.go index 9747d60e1..942094ebf 100644 --- a/provider/kubernetes.go +++ b/provider/kubernetes.go @@ -29,19 +29,10 @@ type Kubernetes struct { lastConfiguration safe.Safe } -func (provider *Kubernetes) newK8sClient() (k8s.Client, error) { - if provider.Endpoint != "" { - log.Infof("Creating in cluster Kubernetes client with endpoint %v", provider.Endpoint) - return k8s.NewInClusterClientWithEndpoint(provider.Endpoint) - } - log.Info("Creating in cluster Kubernetes client") - return k8s.NewInClusterClient() -} - // Provide allows the provider to provide configurations to traefik // using the given configuration channel. func (provider *Kubernetes) Provide(configurationChan chan<- types.ConfigMessage, pool *safe.Pool, constraints types.Constraints) error { - k8sClient, err := provider.newK8sClient() + k8sClient, err := k8s.NewClient(provider.Endpoint) if err != nil { return err }