From 40c0ed092e54d9dee2a979f7e06a371b18a6d5d4 Mon Sep 17 00:00:00 2001 From: Parham Negahdar Date: Mon, 11 Jul 2016 15:39:20 -0400 Subject: [PATCH] Fixes #501: prioritize kube.endpoint passed via cli --- configuration.go | 2 +- provider/kubernetes.go | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/configuration.go b/configuration.go index 4dfa40115..eab6315ac 100644 --- a/configuration.go +++ b/configuration.go @@ -272,7 +272,7 @@ func NewTraefikDefaultPointersConfiguration() *TraefikConfiguration { //default Kubernetes var defaultKubernetes provider.Kubernetes defaultKubernetes.Watch = true - defaultKubernetes.Endpoint = "http://127.0.0.1:8080" + defaultKubernetes.Endpoint = "" defaultKubernetes.Constraints = []types.Constraint{} defaultConfiguration := GlobalConfiguration{ diff --git a/provider/kubernetes.go b/provider/kubernetes.go index d9fc1bf0e..078939a81 100644 --- a/provider/kubernetes.go +++ b/provider/kubernetes.go @@ -20,6 +20,7 @@ import ( const ( serviceAccountToken = "/var/run/secrets/kubernetes.io/serviceaccount/token" serviceAccountCACert = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" + defaultKubeEndpoint = "http://127.0.0.1:8080" ) // Namespaces holds kubernetes namespaces @@ -74,9 +75,15 @@ func (provider *Kubernetes) createClient() (k8s.Client, error) { } kubernetesHost := os.Getenv("KUBERNETES_SERVICE_HOST") kubernetesPort := os.Getenv("KUBERNETES_SERVICE_PORT_HTTPS") - if len(kubernetesPort) > 0 && len(kubernetesHost) > 0 { + // Prioritize user provided kubernetes endpoint since kube container runtime will almost always have it + if provider.Endpoint == "" && len(kubernetesPort) > 0 && len(kubernetesHost) > 0 { + log.Debugf("Using environment provided kubernetes endpoint") provider.Endpoint = "https://" + kubernetesHost + ":" + kubernetesPort } + if provider.Endpoint == "" { + log.Debugf("Using default kubernetes api endpoint") + provider.Endpoint = defaultKubeEndpoint + } log.Debugf("Kubernetes endpoint: %s", provider.Endpoint) return k8s.NewClient(provider.Endpoint, caCert, token) }